In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # DibParser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ╭─[ 522.22ms - stdout ]────────────────────────────────────────────────────────╮ │ │ │ Directory: C:\Users\i574n\.nuget\packages\argu │ │ │ │ Mode LastWriteTime Length[ │ │ 32;1m Name │ │ ---- ------------- ------ [ │ │ 32;1m---- │ │ d---- 2023-05-17 4:38 PM 6.1.1 │ │ d---- 2024-03-12 9:22 PM 6.1.4 │ │ d---- 2024-01-29 6:12 PM 6.1.5 │ │ d---- 2024-03-12 9:20 PM 6.2.0 │ │ d---- 2024-02-23 7:50 PM 6.2.1 │ │ d---- 2024-03-12 9:15 PM 6.2.2 │ │ d---- 2024-05-14 9:20 PM 6.2.3 │ │ d---- 2024-06-06 8:37 PM 6.2.4 │ │ d---- 2024-12-08 12:22 PM 6.2.5 │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Lib #endif ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec open SpiralFileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## escapeCell (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> SpiralSm.split "\n" |> Array.map (function | line when line |> SpiralSm.starts_with "\\#!" || line |> SpiralSm.starts_with "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assertEqual ( $"a{nl}#!magic{nl}b{nl}" ) ╭─[ 60.74ms - stdout ]─────────────────────────────────────────────────────────╮ │ "a │ │ #!magic │ │ b │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicMarker │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assertEqual ( Success ("#!", (), Position ("", 2, 1, 3)) ) ╭─[ 38.16ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "#!" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 52.17ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure: │ │ Error in Ln: 1 Col: 1 │ │ ##!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicCommand │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assertEqual ( Success ("magic", (), Position ("", 8, 2, 1)) ) ╭─[ 24.63ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "magic" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 26.31ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure: │ │ Error in Ln: 1 Col: 1 │ │ #!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## content │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assertEqual ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ╭─[ 25.16ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "#!magic │ │ │ │ │ │ a" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Output │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Magic │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Magic = | Fsharp | Markdown | Spiral of Output | Magic of string ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## kernelOutputs │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline kernelOutputs magic = match magic with | Fsharp -> [[ Fs ]] | Markdown -> [[ Md ]] | Spiral output -> [[ output ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : Magic content : string } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> let magic, content = match magic with | "fsharp" -> Fsharp, content | "markdown" -> Markdown, content | "spiral" -> let output = if content |> SpiralSm.contains "//// real\n" then Spir else Spi let content = if output = Spi then content else content |> SpiralSm.replace "//// real\n\n" "" |> SpiralSm.replace "//// real\n" "" Spiral output, content | magic -> magic |> Magic, content { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assertEqual ( Success ( { magic = Magic "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ╭─[ 45.63ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: { magic = Magic "magic" │ │ content = "a" } │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## blocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assertEqual ( Success ( [[ { magic = Magic "magic1"; content = "a" } { magic = Magic "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ╭─[ 43.04ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: [{ magic = Magic "magic1" │ │ content = "a" }; { magic = Magic "magic2" │ │ content = "b" }] │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlock │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = Markdown; content = content } -> let markdownComment = match output with | Spi | Spir -> "/// " | Fs -> "/// " | _ -> "" content |> SpiralSm.split "\n" |> Array.map (SpiralSm.trim_end [[||]]) |> Array.filter (SpiralSm.ends_with " (test)" >> not) |> Array.map (function | "" -> markdownComment | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> SpiralSm.concat "\n" | Fs, { magic = Fsharp; content = content } -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content |> SpiralSm.split "\n" |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with "#r" >> not) |> SpiralSm.concat "\n" | (Spi | Spir), { magic = Spiral output'; content = content } when output' = output -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// /// c" ╭─[ 55.01ms - stdout ]─────────────────────────────────────────────────────────╮ │ "/// a │ │ /// │ │ /// b │ │ /// │ │ /// c" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (fun block -> block, formatBlock output block ) |> List.filter (snd >> (<>) "") |> fun list -> (list, (None, [[]])) ||> List.foldBack (fun (block, content) (lastMagic, acc) -> let lineBreak = if block.magic = Markdown && lastMagic <> Some Markdown && lastMagic <> None then "" else "\n" Some block.magic, $"{content}{lineBreak}" :: acc ) |> snd |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// c let a = 1 /// e let a = 3 " ╭─[ 73.57ms - stdout ]─────────────────────────────────────────────────────────╮ │ "/// a │ │ /// │ │ /// b │ │ │ │ /// c │ │ let a = 1 │ │ │ │ /// e │ │ let a = 3 │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parse │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> let blocks = blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = Markdown ) match blocks with | { magic = Markdown; content = content } :: _ when output = Fs && content |> SpiralSm.starts_with "# " && content |> SpiralSm.ends_with ")" -> let inline indentBlock (block : Block) = { block with content = block.content |> SpiralSm.split "\n" |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> SpiralSm.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> SpiralSm.contains @"'""'" |> not && trimmedLine |> SpiralSm.ends_with "{" |> not && trimmedLine |> SpiralSm.ends_with "{|" |> not && trimmedLine |> SpiralSm.starts_with "}" |> not && trimmedLine |> SpiralSm.starts_with "|}" |> not match isMultiline, trimmedLine |> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> SpiralSm.starts_with "#" && block.magic = Fsharp -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> SpiralSm.starts_with " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> SpiralSm.concat "\n" } let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = Fsharp content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } blocks |> List.indexed |> List.fold (fun blocks (index, block) -> match index with | 0 -> blocks | 1 -> indentBlock block :: moduleBlock :: blocks | _ -> indentBlock block :: blocks ) [[]] |> List.rev | _ -> blocks |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral //// test inl x = 1i32 \#!spiral //// real inl x = 2i32 \#!spiral inl x = 3i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assertEqual $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ╭─[ 187.52ms - stdout ]────────────────────────────────────────────────────────╮ │ "#if !INTERACTIVE │ │ namespace TestNamespace │ │ #endif │ │ │ │ module TestModule = │ │ │ │ /// ## ParserLibrary │ │ open System │ │ │ │ /// ### TextInput │ │ let str1 = "abc │ │ def" │ │ │ │ let str2 = │ │ "abc\ │ │ def" │ │ │ │ let str3 = │ │ $"1{ │ │ 1 │ │ }1" │ │ │ │ let str4 = │ │ $"1{({| │ │ a = 1 │ │ |}).a}1" │ │ │ │ let str5 = │ │ "abc \ │ │ def" │ │ │ │ let x = │ │ match '"' with │ │ | '"' -> true │ │ | _ -> false │ │ │ │ let long1 = """a""" │ │ │ │ let long2 = │ │ """ │ │ a │ │ """ │ │ │ │ type Position = │ │ { │ │ #if INTERACTIVE │ │ line : string │ │ #else │ │ line : int │ │ #endif │ │ column : int │ │ } │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assertEqual "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ╭─[ 174.50ms - stdout ]────────────────────────────────────────────────────────╮ │ "# TestModule (TestNamespace) │ │ │ │ ## ParserLibrary │ │ │ │ ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 3i32 /// ### TextInput " ╭─[ 182.04ms - stdout ]────────────────────────────────────────────────────────╮ │ "/// # TestModule (TestNamespace) │ │ │ │ /// ## ParserLibrary │ │ inl x = 3i32 │ │ │ │ /// ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spir |> Result.toOption |> Option.get |> (formatBlocks Spir) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 2i32 /// ### TextInput " ╭─[ 169.02ms - stdout ]────────────────────────────────────────────────────────╮ │ "/// # TestModule (TestNamespace) │ │ │ │ /// ## ParserLibrary │ │ inl x = 2i32 │ │ │ │ /// ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parseDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { trace Debug (fun () -> "parseDibCode") (fun () -> $"output: {output} / file: {file} / {_locals ()}") let! input = file |> SpiralFileSystem.read_all_text_async match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { trace Debug (fun () -> "writeDibCode") (fun () -> $"output: {output} / path: {path} / {_locals ()}") let! result = parseDibCode output path let pathDir = path |> System.IO.Path.GetDirectoryName let fileNameWithoutExt = match output, path |> System.IO.Path.GetFileNameWithoutExtension with | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" | _, fileNameWithoutExt -> fileNameWithoutExt let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> SpiralSm.to_lower}" do! result |> SpiralFileSystem.write_all_text_async outputPath } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 97.55ms - return value ]───────────────────────────────────────────────────╮ │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ │ │ FILE: │ │ │ │ <file> <fs|md|spi|spir> │ │ File │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ " │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> SpiralRuntime.split_args |> Result.toArray |> Array.collect id match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 173.35ms - return value ]──────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0 │ │ </pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 175.44ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:06 d #1 writeDibCode / output: Fs / path: Builder.dib │ │ 00:00:06 d #2 parseDibCode / output: Fs / file: Builder.dib │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/builder/Builder.dib", "--output-path", "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/builder/Builder.dib" --output-path "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Builder (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildProject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildProject runtime outputDir path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let extension = fullPath |> System.IO.Path.GetExtension > > trace Debug > (fun () -> "buildProject") > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > > match extension with > | ".fsproj" -> () > | _ -> failwith "Invalid project file" > > let runtimes = > runtime > |> Option.map List.singleton > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > > let outputDir = outputDir |> Option.defaultValue "dist" > > return! > runtimes > |> List.map (fun runtime -> async { > let command = $@"dotnet publish ""{path}"" --configuration Release > --output ""{outputDir}"" --runtime {runtime}" > let! exitCode, _result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l6 = Some fileDir > } > ) > |> SpiralRuntime.execute_with_options_async > return exitCode > }) > |> Async.Sequential > |> Async.map Array.sum > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## persistCodeProject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCodeProject packages modules name hash code = async { > trace Debug > (fun () -> "persistCodeProject") > (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / > hash: {hash} / code.Length: {code |> String.length} / {_locals ()}") > > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > let targetDir = > let targetDir = workspaceRoot </> "target/Builder" </> name > match hash with > | Some hash -> targetDir </> "packages" </> hash > | None -> targetDir > targetDir |> System.IO.Directory.CreateDirectory |> ignore > > let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath > do! code |> SpiralFileSystem.write_all_text_exists filePath > > let modulesCode = > modules > |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}" > />""") > |> SpiralSm.concat "\n " > > let fsprojPath = targetDir </> $"{name}.fsproj" > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > <PropertyGroup> > <TargetFramework>net9.0</TargetFramework> > <LangVersion>preview</LangVersion> > <RollForward>Major</RollForward> > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > <PublishAot>false</PublishAot> > <PublishTrimmed>false</PublishTrimmed> > <PublishSingleFile>true</PublishSingleFile> > <SelfContained>true</SelfContained> > <Version>0.0.1-alpha.1</Version> > <OutputType>Exe</OutputType> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > <DefineConstants>_FREEBSD</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > <DefineConstants>_LINUX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > <DefineConstants>_OSX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > <DefineConstants>_WINDOWS</DefineConstants> > </PropertyGroup> > > <ItemGroup> > {modulesCode} > <Compile Include="{filePath}" /> > </ItemGroup> > > <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > </Project> > """ > do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath > > let paketReferencesPath = targetDir </> "paket.references" > let paketReferencesCode = > "FSharp.Core" :: packages > |> SpiralSm.concat "\n" > do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists > paketReferencesPath > > return fsprojPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildCode runtime packages modules outputDir name code = async { > let! fsprojPath = code |> persistCodeProject packages modules name None > let! exitCode = fsprojPath |> buildProject runtime outputDir > if exitCode <> 0 then > let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async > trace Critical > (fun () -> "buildCode") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText: > {fsprojText} / {_locals ()}") > return exitCode > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + 1 |> ignore" > |> buildCode None [[]] [[]] None "test1" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 0) > > ╭─[ 9.06s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:03 d #1 persistCodeProject / packages: [] / modules: [] / name: │ > │ test1 / hash: / code.Length: 15 │ > │ 00:00:03 d #2 buildProject / fullPath: │ > │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj │ > │ 00:00:07 d #1 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" │ > │ --configuration Release --output "dist" --runtime linux-x64"; options = { │ > │ command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" --configuration │ > │ Release --output "dist" --runtime linux-x64; cancellation_token = None; │ > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ > │ working_directory = Some "C:\home\git\polyglot\target\Builder\test1" } } │ > │ 00:00:07 v #2 > Determining projects to restore... │ > │ 00:00:08 v #3 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:08 v #4 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:08 v #5 > Total time taken: 0 milliseconds │ > │ 00:00:09 v #6 > Restored │ > │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 1.19 sec). │ > │ 00:00:10 v #7 > test1 -> │ > │ C:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\linux-x64\test1 │ > │ .dll │ > │ 00:00:11 v #8 > test1 -> │ > │ C:\home\git\polyglot\target\Builder\test1\dist\ │ > │ 00:00:11 v #9 > │ > │ 00:00:11 v #10 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:00:12 d #11 runtime.execute_with_options_async / { exit_code = 0; │ > │ output_length = 522 } │ > │ 00:00:12 d #12 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" │ > │ --configuration Release --output "dist" --runtime win-x64"; options = { │ > │ command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\test1\test1.fsproj" --configuration │ > │ Release --output "dist" --runtime win-x64; cancellation_token = None; │ > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ > │ working_directory = Some "C:\home\git\polyglot\target\Builder\test1" } } │ > │ 00:00:12 v #13 > Determining projects to restore... │ > │ 00:00:13 v #14 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:13 v #15 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:13 v #16 > Total time taken: 0 milliseconds │ > │ 00:00:13 v #17 > Restored │ > │ C:\home\git\polyglot\target\Builder\test1\test1.fsproj (in 347 ms). │ > │ 00:00:14 v #18 > test1 -> │ > │ C:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\win-x64\test1.d │ > │ ll │ > │ 00:00:15 v #19 > test1 -> │ > │ C:\home\git\polyglot\target\Builder\test1\dist\ │ > │ 00:00:15 v #20 > │ > │ 00:00:15 v #21 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:00:15 d #22 runtime.execute_with_options_async / { exit_code = 0; │ > │ output_length = 518 } │ > │ Some 0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + a |> ignore" > |> buildCode None [[]] [[]] None "test2" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 2) > > ╭─[ 8.83s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:12 d #3 persistCodeProject / packages: [] / modules: [] / name: │ > │ test2 / hash: / code.Length: 15 │ > │ 00:00:12 d #4 buildProject / fullPath: │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj │ > │ 00:00:16 d #23 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" │ > │ --configuration Release --output "dist" --runtime linux-x64"; options = { │ > │ command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" --configuration │ > │ Release --output "dist" --runtime linux-x64; cancellation_token = None; │ > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ > │ working_directory = Some "C:\home\git\polyglot\target\Builder\test2" } } │ > │ 00:00:16 v #24 > Determining projects to restore... │ > │ 00:00:17 v #25 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:17 v #26 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:17 v #27 > Total time taken: 0 milliseconds │ > │ 00:00:17 v #28 > Restored │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 324 ms). │ > │ 00:00:20 v #29 > │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): error FS0039: The │ > │ value or constructor 'a' is not defined. [ │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj] │ > │ 00:00:20 v #30 > │ > │ 00:00:20 v #31 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:00:20 d #32 runtime.execute_with_options_async / { exit_code = 1; │ > │ output_length = 542 } │ > │ 00:00:20 d #33 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" │ > │ --configuration Release --output "dist" --runtime win-x64"; options = { │ > │ command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\test2\test2.fsproj" --configuration │ > │ Release --output "dist" --runtime win-x64; cancellation_token = None; │ > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ > │ working_directory = Some "C:\home\git\polyglot\target\Builder\test2" } } │ > │ 00:00:21 v #34 > Determining projects to restore... │ > │ 00:00:21 v #35 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:21 v #36 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:21 v #37 > Total time taken: 0 milliseconds │ > │ 00:00:22 v #38 > Restored │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj (in 329 ms). │ > │ 00:00:24 v #39 > │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): error FS0039: The │ > │ value or constructor 'a' is not defined. [ │ > │ C:\home\git\polyglot\target\Builder\test2\test2.fsproj] │ > │ 00:00:24 v #40 > │ > │ 00:00:24 v #41 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:00:24 d #42 runtime.execute_with_options_async / { exit_code = 1; │ > │ output_length = 542 } │ > │ 00:00:20 c #5 buildCode / code: 1 + a |> ignore / fsprojText: <Project │ > │ Sdk="Microsoft.NET.Sdk"> │ > │ <PropertyGroup> │ > │ <TargetFramework>net9.0</TargetFramework> │ > │ <LangVersion>preview</LangVersion> │ > │ <RollForward>Major</RollForward> │ > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> │ > │ <PublishAot>false</PublishAot> │ > │ <PublishTrimmed>false</PublishTrimmed> │ > │ <PublishSingleFile>true</PublishSingleFile> │ > │ <SelfContained>true</SelfContained> │ > │ <Version>0.0.1-alpha.1</Version> │ > │ <OutputType>Exe</OutputType> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> │ > │ <DefineConstants>_FREEBSD</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))"> │ > │ <DefineConstants>_LINUX</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> │ > │ <DefineConstants>_OSX</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))"> │ > │ <DefineConstants>_WINDOWS</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <ItemGroup> │ > │ │ > │ <Compile │ > │ Include="C:\home\git\polyglot\target\Builder\test2\test2.fs" /> │ > │ </ItemGroup> │ > │ │ > │ <Import Project="C:\home\git\polyglot/.paket/Paket.Restore.targets" /> │ > │ </Project> │ > │ │ > │ Some 2 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## readFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline readFile path = async { > let! code = path |> SpiralFileSystem.read_all_text_async > > let code = System.Text.RegularExpressions.Regex.Replace ( > code, > @"( *)(let\s+main\s+.*?\s*=)", > fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + > m.Groups.[[1]].Value + m.Groups.[[2]].Value > ) > > let codeTrim = code |> SpiralSm.trim_end [[||]] > return > if codeTrim |> SpiralSm.ends_with "\n()" > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3) > else code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile runtime packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let dir = fullPath |> System.IO.Path.GetDirectoryName > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) > name > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## persistFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistFile packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> persistCodeProject packages modules name None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] > Path of path : string > | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Path _ -> nameof Path > | Packages _ -> nameof Packages > | Modules _ -> nameof Modules > | Runtime _ -> nameof Runtime > | Persist_Only -> nameof Persist_Only > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 119.51ms - return value ]──────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]] │ > │ [--modules [<modules>...]] [--runtime <runtime>] │ > │ [--persist-only] <path> │ > │ │ > │ PATH: │ > │ │ > │ <path> Path │ > │ │ > │ OPTIONS: │ > │ │ > │ --packages [<packages>...] │ > │ Packages │ > │ --modules [<modules>...] │ > │ Modules │ > │ --runtime <runtime> Runtime │ > │ --persist-only Persist_Only │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let path = > match argsMap.[[nameof Arguments.Path]] with > | [[ Arguments.Path path ]] -> Some path > | _ -> None > |> Option.get > > let packages = > match argsMap |> Map.tryFind (nameof Arguments.Packages) with > | Some [[ Arguments.Packages packages ]] -> packages > | _ -> [[]] > > let modules = > match argsMap |> Map.tryFind (nameof Arguments.Modules) with > | Some [[ Arguments.Modules modules ]] -> modules > | _ -> [[]] > > let runtime = > match argsMap |> Map.tryFind (nameof Arguments.Runtime) with > | Some [[ Arguments.Runtime runtime ]] -> Some runtime > | _ -> None > > let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only) > > if persistOnly > then path |> persistFile packages modules |> Async.map (fun _ -> 0) > else path |> buildFile runtime packages modules > |> Async.runWithTimeout (60000 * 60) > |> function > | Some exitCode -> exitCode > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 38.73s - return value ]────────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 38.73s - stdout ]──────────────────────────────────────────────────────────╮ > │ 00:00:22 d #6 persistCodeProject / packages: [Argu; │ > │ FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: [ │ > │ lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / │ > │ name: Builder / hash: / code.Length: 8210 │ > │ 00:00:22 d #7 buildProject / fullPath: │ > │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj │ > │ 00:00:25 d #43 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" │ > │ --configuration Release --output "C:\home\git\polyglot\apps\builder\dist" │ > │ --runtime linux-x64"; options = { command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration │ > │ Release --output "C:\home\git\polyglot\apps\builder\dist" --runtime │ > │ linux-x64; cancellation_token = None; environment_variables = [||]; on_line │ > │ = None; stdin = None; trace = true; working_directory = Some │ > │ "C:\home\git\polyglot\target\Builder\Builder" } } │ > │ 00:00:26 v #44 > Determining projects to restore... │ > │ 00:00:26 v #45 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:26 v #46 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:26 v #47 > Total time taken: 0 milliseconds │ > │ 00:00:27 v #48 > Restored │ > │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj (in 398 ms). │ > │ 00:00:43 v #49 > Builder -> │ > │ C:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\linux-x64\Bui │ > │ lder.dll │ > │ 00:00:44 v #50 > Builder -> C:\home\git\polyglot\apps\builder\dist\ │ > │ 00:00:44 v #51 > │ > │ 00:00:44 v #52 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:00:44 d #53 runtime.execute_with_options_async / { exit_code = 0; │ > │ output_length = 524 } │ > │ 00:00:44 d #54 runtime.execute_with_options_async / { file_name = │ > │ dotnet; arguments = US5_0 │ > │ "publish "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" │ > │ --configuration Release --output "C:\home\git\polyglot\apps\builder\dist" │ > │ --runtime win-x64"; options = { command = dotnet publish │ > │ "C:\home\git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration │ > │ Release --output "C:\home\git\polyglot\apps\builder\dist" --runtime win-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "C:\home\git\polyglot\target\Builder\Builder" } } │ > │ 00:00:45 v #55 > Determining projects to restore... │ > │ 00:00:45 v #56 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:45 v #57 > The last full restore is still up to date. Nothing │ > │ left to do. │ > │ 00:00:45 v #58 > Total time taken: 0 milliseconds │ > │ 00:00:46 v #59 > Restored │ > │ C:\home\git\polyglot\target\Builder\Builder\Builder.fsproj (in 362 ms). │ > │ 00:01:02 v #60 > Builder -> │ > │ C:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\win-x64\Build │ > │ er.dll │ > │ 00:01:03 v #61 > Builder -> C:\home\git\polyglot\apps\builder\dist\ │ > │ 00:01:03 v #62 > │ > │ 00:01:03 v #63 > Workload updates are available. Run `dotnet workload │ > │ list` for more information. │ > │ 00:01:04 d #64 runtime.execute_with_options_async / { exit_code = 0; │ > │ output_length = 522 } │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35804 } 00:01:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:18 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/builder/Builder.dib.ipynb to html 00:01:18 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:18 v #7 ! validate(nb) 00:01:19 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:19 v #9 ! return _pygments_highlight( 00:01:19 v #10 ! [NbConvertApp] Writing 335861 bytes to c:\home\git\polyglot\apps\builder\Builder.dib.html 00:01:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:01:20 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:01:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:20 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:20 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36723 }
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash: / code.Length: 1406995 targetDir: C:\home\git\polyglot\target\Builder\spiral_builder Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @Choc13 Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral_builder\spiral_builder.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 179ms Skipped compilation because all generated files are up-to-date! Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder) Finished `release` profile [optimized] target(s) in 23.23s Running unittests spiral_builder.rs (C:\home\git\polyglot\workspace\target\release\deps\spiral_builder-2408ea34a3d0d37c.exe) running 1 test test module_7e2cd9e0::Spiral_builder::verify_app ... ok successes: successes: module_7e2cd9e0::Spiral_builder::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder) error: failed to remove file `C:\home\git\polyglot\workspace\target\release\spiral_builder.exe` Caused by: Access is denied. (os error 5) # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\apps\spiral\builder / $OnError: Continue / $exitcode: 101 / $EnvVars: { "PATH": "C:\\Users\\i574n\\scoop\\apps\\pwsh\\current;C:\\Program Files\\NVIDIA\\CUDNN\\v9.1\\bin;C:\\ProgramData\\scoop\\shims;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\dotnet\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files\\Perforce;C:\\Program Files\\Wasmtime\\bin;C:\\Program Files\\Perforce\\;C:\\Program Files\\Microsoft SQL Server\\150\\Tools\\Binn\\;C:\\Program Files (x86)\\Windows Kits\\10\\Windows Performance Toolkit\\;C:\\Users\\i574n\\scoop\\apps\\vscode-insiders\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\elixir\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\openssl\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\vulkan\\current\\Bin;C:\\Users\\i574n\\scoop\\apps\\vulkan\\current\\Tools;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\Scripts;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\.;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current\\.;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\site\\bin;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\bin;C:\\Users\\i574n\\scoop\\apps\\rustup\\current\\.cargo\\bin;C:\\Users\\i574n\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk-preview\\current;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current;C:\\Users\\i574n\\scoop\\apps\\gsudo\\current;C:\\Users\\i574n\\scoop\\apps\\python\\current;C:\\Users\\i574n\\scoop\\apps\\nircmd\\current;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n/scoop/buckets/mold/home/windows/path;C:\\Users\\i574n/scoop/persist/rustup/.cargo/bin;C:\\Users\\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\\Users\\i574n/scoop/apps/cygwin/current/root/bin;C:\\Users\\i574n\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n\\.bun\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n\\scoop\\shims;C:\\Users\\i574n\\.fly\\bin;C:\\Program Files\\Wasmtime\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin" } / $Error: '' / $ScriptBlock: 'cargo build --release'
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/DibParser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/DibParser.dib" --output-path "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # DibParser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/argu > > ╭─[ 476.81ms - stdout ]────────────────────────────────────────────────────────╮ > │ │ > │ Directory: C:\Users\i574n\.nuget\packages\argu │ > │ │ > │ Mode LastWriteTime Length[ │ > │ 32;1m Name │ > │ ---- ------------- ------ [ │ > │ 32;1m---- │ > │ d---- 2023-05-17 4:38 PM 6.1.1 │ > │ d---- 2024-03-12 9:22 PM 6.1.4 │ > │ d---- 2024-01-29 6:12 PM 6.1.5 │ > │ d---- 2024-03-12 9:20 PM 6.2.0 │ > │ d---- 2024-02-23 7:50 PM 6.2.1 │ > │ d---- 2024-03-12 9:15 PM 6.2.2 │ > │ d---- 2024-05-14 9:20 PM 6.2.3 │ > │ d---- 2024-06-06 8:37 PM 6.2.4 │ > │ d---- 2024-12-08 12:22 PM 6.2.5 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open FParsec > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## escapeCell (test) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline escapeCell input = > input > |> SpiralSm.split "\n" > |> Array.map (function > | line when line |> SpiralSm.starts_with "\\#!" || line |> > SpiralSm.starts_with "\\#r" -> > System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") > | line -> line > ) > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > $"a{nl}\\#!magic{nl}b{nl}" > |> escapeCell > |> _assertEqual ( > $"a{nl}#!magic{nl}b{nl}" > ) > > ╭─[ 70.88ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "a │ > │ #!magic │ > │ b │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## magicMarker │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicMarker : Parser<string, unit> = pstring "#!" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic" > |> run magicMarker > |> _assertEqual ( > Success ("#!", (), Position ("", 2, 1, 3)) > ) > > ╭─[ 38.31ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "#!" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "##!magic" > |> run magicMarker > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ╭─[ 39.11ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure: │ > │ Error in Ln: 1 Col: 1 │ > │ ##!magic │ > │ ^ │ > │ Expecting: '#!' │ > │ │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## magicCommand │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicCommand = > magicMarker > >>. manyTill anyChar newline > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > a" > |> run magicCommand > |> _assertEqual ( > Success ("magic", (), Position ("", 8, 2, 1)) > ) > > ╭─[ 25.23ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "magic" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > " #!magic > > a" > |> run magicCommand > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ╭─[ 28.41ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure: │ > │ Error in Ln: 1 Col: 1 │ > │ #!magic │ > │ ^ │ > │ Expecting: '#!' │ > │ │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## content │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let content = > (newline >>. magicMarker) <|> (eof >>. preturn "") > |> attempt > |> lookAhead > |> manyTill anyChar > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run content > |> _assertEqual ( > Success ("#!magic > > > a", (), Position ("", 14, 7, 1)) > ) > > ╭─[ 25.85ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "#!magic │ > │ │ > │ │ > │ a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Output │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Output = > | Fs > | Md > | Spi > | Spir > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Magic │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Magic = > | Fsharp > | Markdown > | Spiral of Output > | Magic of string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## kernelOutputs │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline kernelOutputs magic = > match magic with > | Fsharp -> [[ Fs ]] > | Markdown -> [[ Md ]] > | Spiral output -> [[ output ]] > | _ -> [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Block │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block = > { > magic : Magic > content : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## block │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let block = > pipe2 > magicCommand > content > (fun magic content -> > let magic, content = > match magic with > | "fsharp" -> Fsharp, content > | "markdown" -> Markdown, content > | "spiral" -> > let output = if content |> SpiralSm.contains "//// real\n" > then Spir else Spi > let content = > if output = Spi > then content > else > content > |> SpiralSm.replace "//// real\n\n" "" > |> SpiralSm.replace "//// real\n" "" > Spiral output, content > | magic -> magic |> Magic, content > { > magic = magic > content = content > }) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run block > |> _assertEqual ( > Success ( > { magic = Magic "magic"; content = "a" }, > (), > Position ("", 14, 7, 1) > ) > ) > > ╭─[ 44.29ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: { magic = Magic "magic" │ > │ content = "a" } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## blocks │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let blocks = > skipMany newline > >>. sepEndBy block (skipMany1 newline) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > > "#!magic1 > > a > > \#!magic2 > > b > > " > |> escapeCell > |> run blocks > |> _assertEqual ( > Success ( > [[ > { magic = Magic "magic1"; content = "a" } > { magic = Magic "magic2"; content = "b" } > ]], > (), > Position ("", 26, 9, 1) > ) > ) > > ╭─[ 43.75ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: [{ magic = Magic "magic1" │ > │ content = "a" }; { magic = Magic "magic2" │ > │ content = "b" }] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## formatBlock │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlock output (block : Block) = > match output, block with > | output, { magic = Markdown; content = content } -> > let markdownComment = > match output with > | Spi | Spir -> "/// " > | Fs -> "/// " > | _ -> "" > content > |> SpiralSm.split "\n" > |> Array.map (SpiralSm.trim_end [[||]]) > |> Array.filter (SpiralSm.ends_with " (test)" >> not) > |> Array.map (function > | "" -> markdownComment > | line -> System.Text.RegularExpressions.Regex.Replace (line, > "^\\s*", $"$&{markdownComment}") > ) > |> SpiralSm.concat "\n" > | Fs, { magic = Fsharp; content = content } -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else > content > |> SpiralSm.split "\n" > |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with > "#r" >> not) > |> SpiralSm.concat "\n" > | (Spi | Spir), { magic = Spiral output'; content = content } when output' = > output -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else content > | _ -> "" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > c > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1" > |> escapeCell > |> run block > |> function > | Success (block, _, _) -> formatBlock Fs block > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > /// > /// c" > > ╭─[ 60.32ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "/// a │ > │ /// │ > │ /// b │ > │ /// │ > │ /// c" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## formatBlocks │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlocks output blocks = > blocks > |> List.map (fun block -> > block, formatBlock output block > ) > |> List.filter (snd >> (<>) "") > |> fun list -> > (list, (None, [[]])) > ||> List.foldBack (fun (block, content) (lastMagic, acc) -> > let lineBreak = > if block.magic = Markdown && lastMagic <> Some Markdown && > lastMagic <> None > then "" > else "\n" > Some block.magic, $"{content}{lineBreak}" :: acc > ) > |> snd > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1 > > \#!markdown > > d (test) > > \#!fsharp > > //// test > > let a = 2 > > \#!markdown > > e > > \#!fsharp > > let a = 3" > |> escapeCell > |> run blocks > |> function > | Success (blocks, _, _) -> formatBlocks Fs blocks > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > > /// c > let a = 1 > > /// e > let a = 3 > " > > ╭─[ 82.73ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "/// a │ > │ /// │ > │ /// b │ > │ │ > │ /// c │ > │ let a = 1 │ > │ │ > │ /// e │ > │ let a = 3 │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## parse │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parse output input = > match run blocks input with > | Success (blocks, _, _) -> > let blocks = > blocks > |> List.filter (fun block -> > block.magic |> kernelOutputs |> List.contains output || > block.magic = Markdown > ) > > match blocks with > | { magic = Markdown; content = content } :: _ > when output = Fs > && content |> SpiralSm.starts_with "# " > && content |> SpiralSm.ends_with ")" > -> > let inline indentBlock (block : Block) = > { block with > content = > block.content > |> SpiralSm.split "\n" > |> Array.fold > (fun (lines, isMultiline) line -> > let trimmedLine = line |> SpiralSm.trim > if trimmedLine = "" > then "" :: lines, isMultiline > else > let inline singleQuoteLine () = > trimmedLine |> Seq.sumBy ((=) '"' >> > System.Convert.ToInt32) = 1 > && trimmedLine |> SpiralSm.contains > @"'""'" |> not > && trimmedLine |> SpiralSm.ends_with "{" > |> not > && trimmedLine |> SpiralSm.ends_with > "{|" |> not > && trimmedLine |> SpiralSm.starts_with > "}" |> not > && trimmedLine |> SpiralSm.starts_with > "|}" |> not > > match isMultiline, trimmedLine |> > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > | false, [[| _; _ |]] -> > $" {line}" :: lines, true > > | true, [[| _; _ |]] -> > line :: lines, false > > | false, _ when singleQuoteLine () -> > $" {line}" :: lines, true > > | false, _ when line |> SpiralSm.starts_with > "#" && block.magic = Fsharp -> > line :: lines, false > > | false, _ -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () && line |> > SpiralSm.starts_with " " -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () -> > line :: lines, false > > | true, _ -> > line :: lines, true > ) > ([[]], false) > |> fst > |> List.rev > |> SpiralSm.concat "\n" > } > > let moduleName, namespaceName = > System.Text.RegularExpressions.Regex.Match (content, @"# (.*) > \((.*)\)$") > |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value > > let moduleBlock = > { > magic = Fsharp > content = > $"#if !INTERACTIVE > namespace {namespaceName} > #endif > > module {moduleName} =" > } > > blocks > |> List.indexed > |> List.fold > (fun blocks (index, block) -> > match index with > | 0 -> blocks > | 1 -> indentBlock block :: moduleBlock :: blocks > | _ -> indentBlock block :: blocks > ) > [[]] > |> List.rev > | _ -> blocks > |> Result.Ok > | Failure (errorMsg, _, _) -> Result.Error errorMsg > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = > $"""#!meta > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > > \#!markdown > > # TestModule (TestNamespace) > > \#!fsharp > > \#!import file.dib > > \#!fsharp > > \#r "nuget:Expecto" > > \#!markdown > > ## ParserLibrary > > \#!fsharp > > open System > > \#!markdown > > ## x (test) > > \#!fsharp > > //// ignore > > let x = 1 > > \#!spiral > > //// test > > inl x = 1i32 > > \#!spiral > > //// real > > inl x = 2i32 > > \#!spiral > > inl x = 3i32 > > \#!markdown > > ### TextInput > > \#!fsharp > > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > \#!fsharp > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }}""" > |> escapeCell > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Fs > |> Result.toOption > |> Option.get > |> (formatBlocks Fs) > |> _assertEqual $"""#if !INTERACTIVE > namespace TestNamespace > #endif > > module TestModule = > > /// ## ParserLibrary > open System > > /// ### TextInput > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }} > """ > > ╭─[ 205.85ms - stdout ]────────────────────────────────────────────────────────╮ > │ "#if !INTERACTIVE │ > │ namespace TestNamespace │ > │ #endif │ > │ │ > │ module TestModule = │ > │ │ > │ /// ## ParserLibrary │ > │ open System │ > │ │ > │ /// ### TextInput │ > │ let str1 = "abc │ > │ def" │ > │ │ > │ let str2 = │ > │ "abc\ │ > │ def" │ > │ │ > │ let str3 = │ > │ $"1{ │ > │ 1 │ > │ }1" │ > │ │ > │ let str4 = │ > │ $"1{({| │ > │ a = 1 │ > │ |}).a}1" │ > │ │ > │ let str5 = │ > │ "abc \ │ > │ def" │ > │ │ > │ let x = │ > │ match '"' with │ > │ | '"' -> true │ > │ | _ -> false │ > │ │ > │ let long1 = """a""" │ > │ │ > │ let long2 = │ > │ """ │ > │ a │ > │ """ │ > │ │ > │ type Position = │ > │ { │ > │ #if INTERACTIVE │ > │ line : string │ > │ #else │ > │ line : int │ > │ #endif │ > │ column : int │ > │ } │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Md > |> Result.toOption > |> Option.get > |> (formatBlocks Md) > |> _assertEqual "# TestModule (TestNamespace) > > ## ParserLibrary > > ### TextInput > " > > ╭─[ 193.63ms - stdout ]────────────────────────────────────────────────────────╮ > │ "# TestModule (TestNamespace) │ > │ │ > │ ## ParserLibrary │ > │ │ > │ ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spi > |> Result.toOption > |> Option.get > |> (formatBlocks Spi) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 3i32 > > /// ### TextInput > " > > ╭─[ 183.95ms - stdout ]────────────────────────────────────────────────────────╮ > │ "/// # TestModule (TestNamespace) │ > │ │ > │ /// ## ParserLibrary │ > │ inl x = 3i32 │ > │ │ > │ /// ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spir > |> Result.toOption > |> Option.get > |> (formatBlocks Spir) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 2i32 > > /// ### TextInput > " > > ╭─[ 193.86ms - stdout ]────────────────────────────────────────────────────────╮ > │ "/// # TestModule (TestNamespace) │ > │ │ > │ /// ## ParserLibrary │ > │ inl x = 2i32 │ > │ │ > │ /// ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## parseDibCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parseDibCode output file = async { > trace Debug > (fun () -> "parseDibCode") > (fun () -> $"output: {output} / file: {file} / {_locals ()}") > let! input = file |> SpiralFileSystem.read_all_text_async > match parse output input with > | Result.Ok blocks -> return blocks |> formatBlocks output > | Result.Error msg -> return failwith msg > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## writeDibCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline writeDibCode output path = async { > trace Debug > (fun () -> "writeDibCode") > (fun () -> $"output: {output} / path: {path} / {_locals ()}") > let! result = parseDibCode output path > let pathDir = path |> System.IO.Path.GetDirectoryName > let fileNameWithoutExt = > match output, path |> System.IO.Path.GetFileNameWithoutExtension with > | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" > | _, fileNameWithoutExt -> fileNameWithoutExt > let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> > SpiralSm.to_lower}" > do! result |> SpiralFileSystem.write_all_text_async outputPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] > File of file : string * Output > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | File _ -> nameof File > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 89.24ms - return value ]───────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ > │ │ > │ FILE: │ > │ │ > │ <file> <fs|md|spi|spir> │ > │ File │ > │ │ > │ OPTIONS: │ > │ │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let files = > argsMap.[[nameof Arguments.File]] > |> List.map (function > | Arguments.File (path, output) -> path, output > ) > > files > |> List.map (fun (path, output) -> path |> writeDibCode output) > |> Async.Parallel > |> Async.Ignore > |> Async.runWithTimeout 30000 > |> function > | Some () -> 0 > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 168.19ms - return value ]──────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 170.19ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:06 d #1 writeDibCode / output: Fs / path: DibParser.dib │ > │ 00:00:06 d #2 parseDibCode / output: Fs / file: DibParser.dib │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 44243 } 00:00:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:25 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb to html 00:00:25 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:25 v #7 ! validate(nb) 00:00:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:26 v #9 ! return _pygments_highlight( 00:00:26 v #10 ! [NbConvertApp] Writing 378895 bytes to c:\home\git\polyglot\apps\parser\DibParser.dib.html 00:00:26 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 } 00:00:26 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 } 00:00:26 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 45164 } 00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / code.Length: 10861 00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DibParser" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 486 ms). 00:00:22 v #7 > DibParser -> C:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\linux-x64\DibParser.dll 00:00:23 v #8 > DibParser -> C:\home\git\polyglot\apps\parser\dist\ 00:00:23 v #9 > 00:00:23 v #10 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:23 d #11 runtime.execute_with_options_async / { exit_code = 0; output_length = 535 } 00:00:23 d #12 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DibParser" } } 00:00:24 v #13 > Determining projects to restore... 00:00:24 v #14 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:24 v #15 > The last full restore is still up to date. Nothing left to do. 00:00:24 v #16 > Total time taken: 0 milliseconds 00:00:25 v #17 > Restored C:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 435 ms). 00:00:45 v #18 > DibParser -> C:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\win-x64\DibParser.dll 00:00:46 v #19 > DibParser -> C:\home\git\polyglot\apps\parser\dist\ 00:00:46 v #20 > 00:00:46 v #21 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:46 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 533 } 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/JsonParser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/JsonParser.dib" --output-path "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # JsonParser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open Parser > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## JsonParser │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > (* > // -------------------------------- > JSON spec from http://www.json.org/ > // -------------------------------- > > The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase > it here: > > * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object` > or an `array`. > * These structures can be nested. > * A `string` is a sequence of zero or more Unicode characters, wrapped in double > quotes, using backslash escapes. > * A `number` is very much like a C or Java number, except that the octal and > hexadecimal formats are not used. > * A `boolean` is the literal `true` or `false` > * A `null` is the literal `null` > * An `object` is an unordered set of name/value pairs. > * An object begins with { (left brace) and ends with } (right brace). > * Each name is followed by : (colon) and the name/value pairs are separated by > , (comma). > * An `array` is an ordered collection of values. > * An array begins with [[ (left bracket) and ends with ]] (right bracket). > * Values are separated by , (comma). > * Whitespace can be inserted between any pair of tokens. > *) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * > Input>) = > match actual, expected with > | Success (_actual, _), Success _expected -> > printResult actual > _actual |> _assertEqual _expected > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 = > p2 -> > printResult actual > | _ -> > printfn $"Actual: {actual}" > printfn $"Expected: {expected}" > failwith "Parse failed" > actual > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### JValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JValue = > | JString of string > | JNumber of float > | JBool of bool > | JNull > | JObject of Map<string, JValue> > | JArray of JValue list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jValue, jValueRef = createParserForwardedToRef<JValue> () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jNull │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNull = > pstring "null" > >>% JNull > <?> "null" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jValue "null" > |> parserEqual (Success JNull) > > ╭─[ 223.80ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNull, { lines = [ │ > │ |"null"|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNull, { lines = [|"null"|]<br /> │ > │ position = { line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │ > │ <tr></tr></thead><tbody><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"null"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ null │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 241.10ms - stdout ]────────────────────────────────────────────────────────╮ > │ JNull │ > │ JNull │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNull "nulp" > |> parserEqual ( > Failure ( > "null", > "Unexpected 'p'", > { currentLine = "nulp"; line = 0; column = 3 } > ) > ) > > ╭─[ 63.77ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("null", "Unexpected │ > │ 'p'", { currentLine = "nulp"<br /> │ > │ line = 0<br /> column = 3 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"null" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 'p'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "nulp"<br /> line = 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"nulp" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 67.60ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:3 Error parsing null │ > │ nulp │ > │ ^Unexpected 'p' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jBool │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jBool = > let jtrue = > pstring "true" > >>% JBool true > let jfalse = > pstring "false" > >>% JBool false > > jtrue <|> jfalse > <?> "bool" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "true" > |> parserEqual (Success (JBool true)) > > ╭─[ 59.43ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JBool true, { lines = [ │ > │ |"true"|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JBool true, { lines = [|"true"|]<br │ > │ /> position = { line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JBool │ > │ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"true"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ true │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 65.07ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JBool true │ > │ JBool true │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "false" > |> parserEqual (Success (JBool false)) > > ╭─[ 50.13ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JBool false, { lines = [ │ > │ |"false"|]<br /> position = { line = 0<br │ > │ /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JBool false, { lines = [|"false"|]<br │ > │ /> position = { line = 0<br /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JBool │ > │ false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"false"|]<br /> position │ > │ = { line = 0<br /> column = 5 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ false │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 5 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>5 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 55.88ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JBool false │ > │ JBool false │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "truX" > |> parserEqual ( > Failure ( > "bool", > "Unexpected 't'", > { currentLine = "truX"; line = 0; column = 0 } > ) > ) > > ╭─[ 40.39ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("bool", "Unexpected │ > │ 't'", { currentLine = "truX"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"bool" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 't'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "truX"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"truX" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 44.26ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing bool │ > │ truX │ > │ ^Unexpected 't' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jUnescapedChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnescapedChar = > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "a" > |> parserEqual (Success 'a') > > ╭─[ 65.54ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('a', { lines = [ │ > │ |"a"|]<br /> position = { line = 0<br /> │ > │ column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(a, { lines = [|"a"|]<br /> position │ > │ = { line = 0<br /> column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'a' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"a"|]<br /> position = { line = 0<br /> column = 1 │ > │ } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ a │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 70.56ms - stdout ]─────────────────────────────────────────────────────────╮ > │ 'a' │ > │ 'a' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "\\" > |> parserEqual ( > Failure ( > "char", > "Unexpected '\\'", > { currentLine = "\\"; line = 0; column = 0 } > ) > ) > > ╭─[ 51.36ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("char", "Unexpected │ > │ '\'", { currentLine = "\"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"char" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '\'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "\"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"\" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 55.33ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing char │ > │ \ │ > │ ^Unexpected '\' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jEscapedChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jEscapedChar = > [[ > ("\\\"",'\"') > ("\\\\",'\\') > ("\\/",'/') > ("\\b",'\b') > ("\\f",'\f') > ("\\n",'\n') > ("\\r",'\r') > ("\\t",'\t') > ]] > |> List.map (fun (toMatch, result) -> > pstring toMatch >>% result > ) > |> choice > <?> "escaped char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\\\" > |> parserEqual (Success '\\') > > ╭─[ 45.32ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position │ > │ = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\\' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \\ │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 50.08ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\\' │ > │ '\\' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\t" > |> parserEqual (Success '\t') > > ╭─[ 45.42ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\009', { lines = [ │ > │ |"\t"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>( , { lines = [|"\t"|]<br /> position = │ > │ { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\009' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\t"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \t │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 50.35ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\009' │ > │ '\009' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\\" > |> parserEqual (Success '\\') > > ╭─[ 44.00ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position │ > │ = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\\' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \\ │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 48.80ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\\' │ > │ '\\' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\n" > |> parserEqual (Success '\n') > > ╭─[ 42.48ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\010', { lines = [|"<br │ > │ />"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(<br />, { lines = [|"<br />"|]<br /> │ > │ position = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\010' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"<br />"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ <br /> │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 47.38ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\010' │ > │ '\010' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "a" > |> parserEqual ( > Failure ( > "escaped char", > "Unexpected 'a'", > { currentLine = "a"; line = 0; column = 0 } > ) > ) > > ╭─[ 44.00ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("escaped char", │ > │ "Unexpected 'a'", { currentLine = "a"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"escaped char" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 'a'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "a"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 48.10ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing escaped char │ > │ a │ > │ ^Unexpected 'a' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jUnicodeChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnicodeChar = > let backslash = pchar '\\' > let uChar = pchar 'u' > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' > ]]) > let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit > > let inline convertToChar (((h1, h2), h3), h4) = > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char > > backslash >>. uChar >>. fourHexDigits > |>> convertToChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnicodeChar "\\u263A" > |> parserEqual (Success '☺') > > ╭─[ 58.58ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('☺', { lines = [ │ > │ |"\u263A"|]<br /> position = { line = 0<br /> │ > │ column = 6 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(☺, { lines = [|"\u263A"|]<br /> │ > │ position = { line = 0<br /> column = 6 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'☺' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\u263A"|]<br /> position = { line = 0<br /> │ > │ column = 6 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \u263A │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 6 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>6 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 63.32ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '☺' │ > │ '☺' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jString │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let quotedString = > let quote = pchar '\"' <?> "quote" > let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar > > quote >>. manyChars jchar .>> quote > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jString = > quotedString > |>> JString > <?> "quoted string" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"\"" > |> parserEqual (Success (JString "")) > > ╭─[ 61.82ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "", { lines = [ │ > │ |""""|]<br /> position = { line = │ > │ 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "", { lines = [ │ > │ |""""|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ ""</code></span></summary><div><table><thead><tr></tr></thead><tbo │ > │ dy><tr><td>Item</td><td><div class="dni-plaintext"><pre>"" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><su...span │ > │ class="dni-code-hint"><code>{ lines = [|""""|]<br /> │ > │ position = { line = 0<br /> column = 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 67.56ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "" │ > │ JString "" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"a\"" > |> parserEqual (Success (JString "a")) > > ╭─[ 45.31ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "a", { lines = [ │ > │ |""a""|]<br /> position = { line │ > │ = 0<br /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "a", { lines = [ │ > │ |""a""|]<br /> position = { line = 0<br /> │ > │ column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "a"</code></span></summary><div><table><thead><tr></tr></thead><tb │ > │ ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treev...an class="dni-code-hint"><code>{ lines │ > │ = [|""a""|]<br /> position = { line = 0<br /> │ > │ column = 3 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "a" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 51.21ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "a" │ > │ JString "a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\"" > |> parserEqual (Success (JString "ab")) > > ╭─[ 47.34ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab", { lines = [ │ > │ |""ab""|]<br /> position = { │ > │ line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab", { lines = [ │ > │ |""ab""|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "ab"</code></span></summary><div><table><thead><tr></tr></thead><t │ > │ body><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="d... class="dni-code-hint"><code>{ lines = [ │ > │ |""ab""|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 53.46ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab" │ > │ JString "ab" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\tde\"" > |> parserEqual (Success (JString "ab\tde")) > > ╭─[ 48.12ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab de", { lines = [ │ > │ |""ab\tde""|]<br /> position │ > │ = { line = 0<br /> column = 8 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab de", { lines = [ │ > │ |""ab\tde""|]<br /> position = { line = 0<br /> │ > │ column = 8 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString "ab │ > │ de"</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │ > │ tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab de" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2...dni-code-hint"><code>{ lines = [|""ab\tde""|]<br /> │ > │ position = { line = 0<br /> column = 8 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab\tde" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 8 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>8 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 54.19ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab de" │ > │ JString "ab de" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\u263Ade\"" > |> parserEqual (Success (JString "ab☺de")) > > ╭─[ 48.73ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab☺de", { lines = [ │ > │ |""ab\u263Ade""|]<br /> │ > │ position = { line = 0<br /> column = │ > │ 12 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab☺de", { lines = [ │ > │ |""ab\u263Ade""|]<br /> position = { line = 0<br /> │ > │ column = 12 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead │ > │ ><tbody><tr><td>Item</td><td><div │ > │ class="dni-plaintext"><pre>"ab☺de" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr...nt"><c │ > │ ode>{ lines = [|""ab\u263Ade""|]<br /> position = { │ > │ line = 0<br /> column = 12 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab\u263Ade" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 12 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>12 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 54.54ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab☺de" │ > │ JString "ab☺de" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jNumber │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNumber = > let optSign = opt (pchar '-') > > let zero = pstring "0" > > let digitOneNine = > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9" > > let digit = > satisfy Char.IsDigit "digit" > > let point = pchar '.' > > let e = pchar 'e' <|> pchar 'E' > > let optPlusMinus = opt (pchar '-' <|> pchar '+') > > let nonZeroInt = > digitOneNine .>>. manyChars digit > |>> fun (first, rest) -> string first + rest > > let intPart = zero <|> nonZeroInt > > let fractionPart = point >>. manyChars1 digit > > let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit > > let inline (|>?) opt f = > match opt with > | None -> "" > | Some x -> f x > > let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) = > let signStr = > optSign > |>? string > > let fractionPartStr = > fractionPart > |>? (fun digits -> "." + digits) > > let expPartStr = > expPart > |>? fun (optSign, digits) -> > let sign = optSign |>? string > "e" + sign + digits > > (signStr + intPart + fractionPartStr + expPartStr) > |> float > |> JNumber > > optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart > |>> convertToJNumber > <?> "number" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123" > |> parserEqual (Success (JNumber 123.0)) > > ╭─[ 77.71ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ > │ |"123"|]<br /> position = { line = 0<br │ > │ /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br │ > │ /> position = { line = 0<br /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123"|]<br /> position = │ > │ { line = 0<br /> column = 3 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 84.69ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.0 │ > │ JNumber 123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123" > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 49.58ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 0<br │ > │ /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 0<br /> column │ > │ = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 54.64ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ╭─[ 59.65ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 0<br │ > │ /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 0<br /> column │ > │ = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4"|]<br /> position │ > │ = { line = 0<br /> column = 5 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 5 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>5 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 65.01ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.4 │ > │ JNumber 123.4 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123." > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 45.55ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123."|]<br /> position = { line = │ > │ 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123."|]<br /> position = { line = 0<br /> column │ > │ = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123."|]<br /> position │ > │ = { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123. │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 50.59ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "00.1" > |> parserEqual (Success (JNumber 0.0)) > > ╭─[ 48.42ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [ │ > │ |"00.1"|]<br /> position = { line = 0<br /> │ > │ column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 0.0, { lines = [|"00.1"|]<br │ > │ /> position = { line = 0<br /> column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>0.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"00.1"|]<br /> position = │ > │ { line = 0<br /> column = 1 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 00.1 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 53.93ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 0.0 │ > │ JNumber 0.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let jNumber_ = jNumber .>> spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123" > |> parserEqual (Success (JNumber 123.0)) > > ╭─[ 51.85ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ > │ |"123"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br │ > │ /> position = { line = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123"|]<br /> position = │ > │ { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 57.01ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.0 │ > │ JNumber 123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123" > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 42.11ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123"|]<br /> position = │ > │ { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 47.27ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123." > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '.'", > { currentLine = "-123."; line = 0; column = 4 } > ) > ) > > ╭─[ 43.14ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure<br /> ("number andThen many1 │ > │ whitespace", "Unexpected '.'", { currentLine = │ > │ "-123."<br /> │ > │ line = 0<br /> │ > │ column = 4 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"number andThen many1 │ > │ whitespace" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '.'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "-123."<br /> line = 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"-123." │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 47.62ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:4 Error parsing number andThen many1 whitespace │ > │ -123. │ > │ ^Unexpected '.' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ╭─[ 45.96ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4"|]<br /> position │ > │ = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 51.01ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.4 │ > │ JNumber 123.4 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "00.4" > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '0'", > { currentLine = "00.4"; line = 0; column = 1 } > ) > ) > > ╭─[ 36.05ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure<br /> ("number andThen many1 │ > │ whitespace", "Unexpected '0'", { currentLine = │ > │ "00.4"<br /> │ > │ line = 0<br /> │ > │ column = 1 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"number andThen many1 │ > │ whitespace" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '0'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "00.4"<br /> line = 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"00.4" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 39.63ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:1 Error parsing number andThen many1 whitespace │ > │ 00.4 │ > │ ^Unexpected '0' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123e4" > |> parserEqual (Success (JNumber 1230000.0)) > > ╭─[ 48.76ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [ │ > │ |"123e4"|]<br /> position = { line = │ > │ 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [ │ > │ |"123e4"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody> │ > │ <tr><td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123e4"|]<br /> position │ > │ = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123e4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 54.05ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 1230000.0 │ > │ JNumber 1230000.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e5" > |> parserEqual (Success (JNumber 12340000.0)) > > ╭─[ 46.12ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [ │ > │ |"123.4e5"|]<br /> position = { line │ > │ = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [ │ > │ |"123.4e5"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody │ > │ ><tr><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4e5"|]<br /> │ > │ position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e5 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 51.43ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 12340000.0 │ > │ JNumber 12340000.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e-5" > |> parserEqual (Success (JNumber 0.001234)) > > ╭─[ 48.55ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [ │ > │ |"123.4e-5"|]<br /> position = { line │ > │ = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [ │ > │ |"123.4e-5"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │ > │ tr><td>Item</td><td><div class="dni-plaintext"><pre>0.001234 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4e-5"|]<br /> │ > │ position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 54.02ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 0.001234 │ > │ JNumber 0.001234 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jArray │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jArray = > let left = pchar '[[' .>> spaces > let right = pchar ']]' .>> spaces > let comma = pchar ',' .>> spaces > let value = jValue .>> spaces > > let values = sepBy value comma > > between left values right > |>> JArray > <?> "array" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2 ]]" > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]])) > > ╭─[ 94.27ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { │ > │ lines = [|"[ 1, 2 ]"|]<br /> │ > │ position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [ │ > │ |"[ 1, 2 ]"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber │ > │ 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></ │ > │ thead><tbody><tr><td>0</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>1.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td>...ummary><span │ > │ class="dni-code-hint"><code>{ lines = [|"[ 1, 2 ]"|]<br /> │ > │ position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 99.61ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JArray [JNumber 1.0; JNumber 2.0] │ > │ JArray [JNumber 1.0; JNumber 2.0] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2, ]]" > |> parserEqual ( > Failure ( > "array", > "Unexpected ','", > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 } > ) > ) > > ╭─[ 53.14ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("array", "Unexpected │ > │ ','", { currentLine = "[ 1, 2, ]"<br /> │ > │ line = 0<br /> column = 6 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"array" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected ','" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "[ 1, 2, ]"<br /> line = 0<br /> column = 6 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"[ 1, 2, ]" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>6 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 56.61ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:6 Error parsing array │ > │ [ 1, 2, ] │ > │ ^Unexpected ',' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jObject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jObject = > let left = spaces >>. pchar '{' .>> spaces > let right = pchar '}' .>> spaces > let colon = pchar ':' .>> spaces > let comma = pchar ',' .>> spaces > let key = quotedString .>> spaces > let value = jValue .>> spaces > > let keyValue = (key .>> colon) .>>. value > let keyValues = sepBy keyValue comma > > between left keyValues right > |>> Map.ofList > |>> JObject > <?> "object" > > ── fsharp ────────────────────────────────────────────────────────────────────── > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > jObject > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2 }""" > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "a", JNumber 1.0 > "b", JNumber 2.0 > ]] > ) > ) > ) > > ╭─[ 96.74ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject (map [("a", │ > │ JNumber 1.0); ("b", JNumber 2.0)]),<br /> { lines = [|"{ │ > │ "a":1, "b" : 2 }"|]<br /> position = { line = │ > │ 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject (map [("a", JNumber 1.0); │ > │ ("b", JNumber 2.0)]), { lines = [|"{ "a":1, │ > │ "b" : 2 }"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject (map [("a", JNumber 1.0); │ > │ ("b", JNumber │ > │ 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></ │ > │ thead><tbody><tr><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>1.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</...ot;a":1, "b" : │ > │ 2 }"|]<br /> position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ { "a":1, │ > │ "b" : 2 } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 102.10ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) │ > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2, }""" > |> parserEqual ( > Failure ( > "object", > "Unexpected ','", > { currentLine = """{ "a":1, "b" : 2, }"""; line = 0; column = 18 } > ) > ) > > ╭─[ 50.08ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("object", "Unexpected │ > │ ','", { currentLine = "{ "a":1, "b" : │ > │ 2, }"<br /> line = 0<br /> │ > │ column = 18 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"object" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected ','" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "{ "a":1, "b" : 2, }"<br /> │ > │ line = 0<br /> column = 18 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"{ "a":1, │ > │ "b" : 2, }" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>18 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 53.88ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:18 Error parsing object │ > │ { "a":1, "b" : 2, } │ > │ ^Unexpected ',' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = """{ > "name" : "Scott", > "isMale" : true, > "bday" : {"year":2001, "month":12, "day":25 }, > "favouriteColors" : [["blue", "green"]], > "emptyArray" : [[]], > "emptyObject" : {} > }""" > run jValue example1 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "name", JString "Scott" > "isMale", JBool true > "bday", JObject ( > Map.ofList [[ > "year", JNumber 2001.0 > "month", JNumber 12.0 > "day", JNumber 25.0 > ]] > ) > "favouriteColors", JArray [[ JString "blue"; JString "green" ]] > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > ]] > ) > ) > ) > > ╭─[ 171.95ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("bday",<br /> JObject<br /> (map<br /> │ > │ [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray [ │ > │ ]);<br /> ("emptyObject", JObject (map []));<br /> │ > │ ("favouriteColors", │ > │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject<br /> (map<br /> [ │ > │ ("bday",<br /> JObject<br /> (map<br /> [ │ > │ ("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray [ │ > │ ]);<br /> ("emptyObject", JObject (map []));<br /> │ > │ ("favouriteColors", JArray [JString "blue"; JString │ > │ "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbod │ > │ y><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("bday",<br /> JObject<br /> (map<br /> [ │ > │ ("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArra...,, │ > │ "isMale" : true,, "bday" : {"year":2001, │ > │ "month":12, "day":25 },, "favouriteColors" │ > │ : ["blue", "green"],, "emptyArray" : [],, │ > │ "emptyObject" : {}, } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 8<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>8 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 178.90ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("bday", │ > │ JObject │ > │ (map │ > │ [("day", JNumber 25.0); ("month", JNumber 12.0); │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray []); │ > │ ("emptyObject", JObject (map [])); │ > │ ("favouriteColors", JArray [JString "blue"; JString "green"]); │ > │ ("isMale", JBool true); ("name", JString "Scott")]) │ > │ JObject │ > │ (map │ > │ [("bday", JObject (map [("day", JNumber 25.0); ("month", JNumber 12.0); │ > │ ("year", JNumber 2001.0)])); │ > │ ("emptyArray", JArray []); ("emptyObject", JObject (map [])); │ > │ ("favouriteColors", JArray [JString "blue"; JString "green"]); │ > │ ("isMale", JBool true); ("name", JString "Scott")]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example2 = """{"widget": { > "debug": "on", > "window": { > "title": "Sample Konfabulator Widget", > "name": "main_window", > "width": 500, > "height": 500 > }, > "image": { > "src": "Images/Sun.png", > "name": "sun1", > "hOffset": 250, > "vOffset": 250, > "alignment": "center" > }, > "text": { > "data": "Click Here", > "size": 36, > "style": "bold", > "name": "text1", > "hOffset": 250, > "vOffset": 100, > "alignment": "center", > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" > } > }}""" > > run jValue example2 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "widget", JObject ( > Map.ofList [[ > "debug", JString "on" > "window", JObject ( > Map.ofList [[ > "title", JString "Sample Konfabulator Widget" > "name", JString "main_window" > "width", JNumber 500.0 > "height", JNumber 500.0 > ]] > ) > "image", JObject ( > Map.ofList [[ > "src", JString "Images/Sun.png" > "name", JString "sun1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 250.0 > "alignment", JString "center" > ]] > ) > "text", JObject ( > Map.ofList [[ > "data", JString "Click Here" > "size", JNumber 36.0 > "style", JString "bold" > "name", JString "text1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 100.0 > "alignment", JString "center" > "onMouseUp", JString "sun1.opacity = > (sun1.opacity / 100) * 90;" > ]] > ) > ]] > ) > ]] > ) > ) > ) > > ╭─[ 369.82ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("widget",<br /> JObject<br /> (map<br /> │ > │ [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> │ > │ (map<br /> [("alignment", JString │ > │ "center");<br /> │ > │ ("hOffset"...</code></span></summary><div><table><thead><tr></tr>< │ > │ /thead><tbody><tr><td>Item</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>(JObject<br │ > │ /> (map<br /> [("widget",<br /> JObject<br /> │ > │ (map<br /> [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> (map<br │ > │ /> [("alignment", JString "center"); │ > │ ("hOffset", JNumber 250.0);<br /> │ > │ ("name", JString │ > │ "sun1"...</code></span></summary><div><table><thead><tr></tr></the │ > │ ad><tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("widget",<br /> JObject<br /> (map<br /> │ > │ [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> (...t;,, │ > │ "name": "text1",, "hOffset": 250,, │ > │ "vOffset": 100,, "alignment": │ > │ "center",, "onMouseUp": "sun1.opacity = │ > │ (sun1.opacity / 100) * 90;", }, }} │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 26<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>26 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 375.33ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("widget", │ > │ JObject │ > │ (map │ > │ [("debug", JString "on"); │ > │ ("image", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("hOffset", JNumber │ > │ 250.0); │ > │ ("name", JString "sun1"); ("src", JString │ > │ "Images/Sun.png"); │ > │ ("vOffset", JNumber 250.0)])); │ > │ ("text", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); │ > │ ("data", JString "Click Here"); ("hOffset", JNumber │ > │ 250.0); │ > │ ("name", JString "text1"); │ > │ ("onMouseUp", │ > │ JString "sun1.opacity = (sun1.opacity / 100) * 90;"); │ > │ ("size", JNumber 36.0); ("style", JString "bold"); │ > │ ("vOffset", JNumber 100.0)])); │ > │ ("window", │ > │ JObject │ > │ (map │ > │ [("height", JNumber 500.0); ("name", JString │ > │ "main_window"); │ > │ ("title", JString "Sample Konfabulator Widget"); │ > │ ("width", JNumber 500.0)]))]))]) │ > │ JObject │ > │ (map │ > │ [("widget", │ > │ JObject │ > │ (map │ > │ [("debug", JString "on"); │ > │ ("image", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("hOffset", JNumber │ > │ 250.0); ("name", JString "sun1"); │ > │ ("src", JString "Images/Sun.png"); ("vOffset", JNumber │ > │ 250.0)])); │ > │ ("text", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("data", JString "Click │ > │ Here"); ("hOffset", JNumber 250.0); │ > │ ("name", JString "text1"); ("onMouseUp", JString │ > │ "sun1.opacity = (sun1.opacity / 100) * 90;"); │ > │ ("size", JNumber 36.0); ("style", JString "bold"); │ > │ ("vOffset", JNumber 100.0)])); │ > │ ("window", │ > │ JObject │ > │ (map │ > │ [("height", JNumber 500.0); ("name", JString │ > │ "main_window"); │ > │ ("title", JString "Sample Konfabulator Widget"); │ > │ ("width", JNumber 500.0)]))]))]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example3 = """{ > "string": "Hello, \"World\"!", > "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > "number": 42, > "scientificNumber": 3.14e-10, > "boolean": true, > "nullValue": null, > "array": [[1, 2, 3, 4, 5]], > "unicodeString1": "프리마", > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > "specialCharacters": "!@#$%^&*()", > "emptyArray": [[]], > "emptyObject": {}, > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > "object": { > "nestedString": "Nested Value", > "nestedNumber": 3.14, > "nestedBoolean": false, > "nestedNull": null, > "nestedArray": [["a", "b", "c"]], > "nestedObject": { > "nestedProperty": "Nested Object Value" > } > }, > "nestedObjects": [[ > {"name": "Alice", "age": 25}, > {"name": "Bob", "age": 30} > ]] > }""" > run jValue example3 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "string", JString @"Hello, ""World""!" > "escapedString", JString @"This string contains > \/\\\b\f\n\r\t\""\'" > "number", JNumber 42.0 > "scientificNumber", JNumber 3.14e-10 > "boolean", JBool true > "nullValue", JNull > "array", JArray [[ > JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber > 5.0 > ]] > "unicodeString1", JString "프리마" > "unicodeString2", JString @"Hello, ""World""!" > "specialCharacters", JString "!@#$%^&*()" > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > "nestedArrays", JArray [[ > JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]] > JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]] > ]] > "object", JObject ( > Map.ofList [[ > "nestedString", JString "Nested Value" > "nestedNumber", JNumber 3.14 > "nestedBoolean", JBool false > "nestedNull", JNull > "nestedArray", JArray [[JString "a"; JString "b"; > JString "c"]] > "nestedObject", JObject ( > Map.ofList [[ > "nestedProperty", JString "Nested Object Value" > ]] > ) > ]] > ) > "nestedObjects", JArray [[ > JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber > 25.0 ]]) > JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber > 30.0 ]]) > ]] > ]] > ) > ) > ) > > ╭─[ 497.45ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("array",<br /> JArray<br /> [JNumber 1.0; │ > │ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br /> │ > │ ("boolean", JBool true); ("emptyArray", JArray []);<br │ > │ /> ("emptyObject", JObject (map []));<br /> │ > │ ("escapedString", JString "This │ > │ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject<br /> (map<br /> [ │ > │ ("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber │ > │ 3.0; JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool │ > │ true); ("emptyArray", JArray []);<br /> │ > │ ("emptyObject", JObject (map []));<br /> │ > │ ("escapedString", JString "This string contains \/\\\b\f<br │ > │ />\r\t\"\'");<br /> │ > │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber │ > │ 3.0; JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool │ > │ true); ("emptyArray", JArray []);<br /> │ > │ ("emptyObject", JObject (map []));<br /> │ > │ ("es...nestedObject": {, "nestedProperty": │ > │ "Nested Object Value", }, },, "nestedObjects": [ │ > │ , {"name": "Alice", "age": 25},, │ > │ {"name": "Bob", "age": 30}, ], } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 29<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>29 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 503.89ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("array", │ > │ JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber │ > │ 5.0]); │ > │ ("boolean", JBool true); ("emptyArray", JArray []); │ > │ ("emptyObject", JObject (map [])); │ > │ ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'"); │ > │ ("nestedArrays", │ > │ JArray │ > │ [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; │ > │ JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); │ > │ ("nestedObjects", │ > │ JArray │ > │ [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]); │ > │ JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]); │ > │ ("nullValue", JNull); ("number", JNumber 42.0); ...]) │ > │ JObject │ > │ (map │ > │ [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; │ > │ JNumber 5.0]); ("boolean", JBool true); │ > │ ("emptyArray", JArray []); ("emptyObject", JObject (map [])); │ > │ ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'"); │ > │ ("nestedArrays", │ > │ JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; JArray [ │ > │ JNumber 4.0; JNumber 5.0; JNumber 6.0]]); │ > │ ("nestedObjects", │ > │ JArray │ > │ [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]); │ > │ JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]); │ > │ ("nullValue", JNull); │ > │ ("number", JNumber 42.0); ...]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:26 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 266592 } 00:00:26 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:28 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb to html 00:00:28 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:28 v #7 ! validate(nb) 00:00:28 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:28 v #9 ! return _pygments_highlight( 00:00:29 v #10 ! [NbConvertApp] Writing 534279 bytes to c:\home\git\polyglot\apps\parser\JsonParser.dib.html 00:00:30 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 } 00:00:30 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 } 00:00:30 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:30 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:30 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 267515 } 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/parser/Parser.dib", "--output-path", "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/Parser.dib" --output-path "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Parser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### TextInput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Position = > { > line : int > column : int > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let initialPos = { line = 0; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrCol (pos : Position) = > { pos with column = pos.column + 1 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrLine pos = > { line = pos.line + 1; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InputState = > { > lines : string[[]] > position : Position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline fromStr str = > { > lines = > if str |> String.IsNullOrEmpty > then [[||]] > else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]] > position = initialPos > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "" |> _assertEqual { > lines = [[||]] > position = { line = 0; column = 0 } > } > > ╭─[ 61.19ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [||] │ > │ position = { line = 0 │ > │ column = 0 } } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "Hello \n World" |> _assertEqual { > lines = [[| "Hello "; " World" |]] > position = { line = 0; column = 0 } > } > > ╭─[ 25.82ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello "; " World"|] │ > │ position = { line = 0 │ > │ column = 0 } } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline currentLine inputState = > let linePos = inputState.position.line > if linePos < inputState.lines.Length > then inputState.lines.[[linePos]] > else "end of file" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline nextChar input = > let linePos = input.position.line > let colPos = input.position.column > > if linePos >= input.lines.Length > then input, None > else > let currentLine = currentLine input > if colPos < currentLine.Length then > let char = currentLine.[[colPos]] > let newPos = incrCol input.position > let newState = { input with position = newPos } > newState, Some char > else > let char = '\n' > let newPos = incrLine input.position > let newState = { input with position = newPos } > newState, Some char > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello World" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ╭─[ 57.38ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello World"|] │ > │ position = { line = 0 │ > │ column = 1 } } │ > │ │ > │ Some 'H' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello"; ""; "World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ╭─[ 38.56ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello"; ""; "World"|] │ > │ position = { line = 0 │ > │ column = 1 } } │ > │ │ > │ Some 'H' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### Parser │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Input = InputState > type ParserLabel = string > type ParserError = string > > type ParserPosition = > { > currentLine : string > line : int > column : int > } > > type ParseResult<'a> = > | Success of 'a > | Failure of ParserLabel * ParserError * ParserPosition > > type Parser<'a> = > { > label : ParserLabel > parseFn : Input -> ParseResult<'a * Input> > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline printResult result = > match result with > | Success (value, input) -> > printfn $"%A{value}" > | Failure (label, error, parserPos) -> > let errorLine = parserPos.currentLine > let colPos = parserPos.column > let linePos = parserPos.line > let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}" > printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing > %s{label}\n%s{errorLine}\n%s{failureCaret}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline runOnInput parser input = > parser.parseFn input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline run parser inputStr = > runOnInput parser (fromStr inputStr) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parserPositionFromInputState (inputState : Input) = > { > currentLine = currentLine inputState > line = inputState.position.line > column = inputState.position.column > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getLabel parser = > parser.label > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline setLabel parser newLabel = > { > label = newLabel > parseFn = fun input -> > match parser.parseFn input with > | Success s -> Success s > | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<?>) = setLabel > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline satisfy predicate label = > { > label = label > parseFn = fun input -> > let remainingInput, charOpt = nextChar input > match charOpt with > | None -> > let err = "No more input" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > | Some first -> > if predicate first > then Success (first, remainingInput) > else > let err = $"Unexpected '%c{first}'" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Success ( > 'H', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 49.81ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('H', { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Failure ( > "H", > "Unexpected 'W'", > { > currentLine = "World" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 39.21ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("H", "Unexpected 'W'", { currentLine = "World" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline bindP f p = > { > label = "unknown" > parseFn = fun input -> > match runOnInput p input with > | Failure (label, err, pos) -> Failure (label, err, pos) > | Success (value1, remainingInput) -> runOnInput (f value1) > remainingInput > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) p f = bindP f p > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Success ( > 'e', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 57.52ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('e', { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'W') "W" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Failure ( > "e", > "Unexpected 'o'", > { > currentLine = "World" > line = 0 > column = 1 > } > ) > ) > > ╭─[ 53.74ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("e", "Unexpected 'o'", { currentLine = "World" │ > │ line = 0 │ > │ column = 1 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline returnP x = > { > label = $"%A{x}" > parseFn = fun input -> Success (x, input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = returnP "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 33.20ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapP f = > bindP (f >> returnP) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<!>) = mapP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) x f = f <!> x > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser |>> string > runOnInput parser2 input |> _assertEqual ( > Success ( > "H", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 46.23ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("H", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline applyP fP xP = > fP >>= > fun f -> > xP >>= > fun x -> > returnP (f x) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<*>) = applyP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline lift2 f xP yP = > returnP f <*> xP <*> yP > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > "He", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 73.74ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("He", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline andThen p1 p2 = > p1 >>= > fun p1Result -> > p2 >>= > fun p2Result -> > returnP (p1Result, p2Result) > <?> $"{getLabel p1} andThen {getLabel p2}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (.>>.) = andThen > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = parser .>>. parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > ('H', 'e'), > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 56.51ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (('H', 'e'), { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline orElse p1 p2 = > { > label = $"{getLabel p1} orElse {getLabel p2}" > parseFn = fun input -> > match runOnInput p1 input with > | Success _ as result -> result > | Failure _ -> runOnInput p2 input > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<|>) = orElse > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = parser <|> parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 57.57ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('h', { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice listOfParsers = > listOfParsers |> List.reduce (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = choice [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 87.33ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('h', { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec sequence parserList = > match parserList with > | [[]] -> returnP [[]] > | head :: tail -> (lift2 cons) head (sequence tail) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = sequence [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > [[ 'H'; 'e' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 96.97ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'], { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec parseZeroOrMore parser input = > match runOnInput parser input with > | Failure (_, _, _) -> > [[]], input > | Success (firstValue, inputAfterFirstParse) -> > let subsequentValues, remainingInput = parseZeroOrMore parser > inputAfterFirstParse > firstValue :: subsequentValues, remainingInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many parser = > { > label = $"many {getLabel parser}" > parseFn = fun input -> Success (parseZeroOrMore parser input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many parser > runOnInput parser2 input |> _assertEqual ( > Success ( > [[]], > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 52.90ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ([], { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 p = > p >>= > fun head -> > many p >>= > fun tail -> > returnP (head :: tail) > <?> $"many1 {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many1 parser > runOnInput parser2 input |> _assertEqual ( > Failure ( > "many1 H", > "Unexpected 'h'", > { > currentLine = "hello" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 69.89ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt p = > let some = p |>> Some > let none = returnP None > (some <|> none) > <?> $"opt {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = opt parser > runOnInput parser2 input |> _assertEqual ( > Success ( > None, > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 57.63ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (None, { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) p1 p2 = > p1 .>>. p2 > |> mapP fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) p1 p2 = > p1 .>>. p2 > |> mapP snd > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between p1 p2 p3 = > p1 >>. p2 .>> p3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "[[Hello]]" > let parser = > between > (satisfy (fun c -> c = '[[') "[[") > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> > List.contains c) "letter")) > (satisfy (fun c -> c = ']]') "]]") > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "[[Hello]]" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 155.12ms - stdout ]────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 p sep = > let sepThenP = sep >>. p > p .>>. many sepThenP > |>> fun (p, pList) -> p :: pList > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy p sep = > sepBy1 p sep <|> returnP [[]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello,World" > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy > (fun c -> c = ',') "comma") > runOnInput parser input |> _assertEqual ( > Success ( > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] > ]], > { > lines = [[| "Hello,World" |]] > position = { line = 1; column = 0 } > } > ) > ) > > ╭─[ 124.30ms - stdout ]────────────────────────────────────────────────────────╮ > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 'd'; '\010']], { │ > │ lines = [|"Hello,World"|] │ > │ │ > │ position = { line = 1 │ > │ │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pchar charToMatch = > satisfy ((=) charToMatch) $"%c{charToMatch}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline anyOf listOfChars = > listOfChars > |> List.map pchar > |> choice > <?> $"anyOf %A{listOfChars}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 56.61ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline charListToStr charList = > charList |> List.toArray |> String > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars cp = > many cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars1 cp = > many1 cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 81.56ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pstring str = > str > |> List.ofSeq > |> List.map pchar > |> sequence > |> mapP charListToStr > <?> str > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 68.17ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let whitespaceChar = > satisfy Char.IsWhiteSpace "whitespace" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces = many whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 = many1 whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr " Hello" > let parser = spaces1 .>>. pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > ([[ ' '; ' ' ]], "Hello"), > { > lines = [[| " Hello" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 76.55ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (([' '; ' '], "Hello"), { lines = [|" Hello"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let digitChar = > satisfy Char.IsDigit "digit" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = digitChar > runOnInput parser input |> _assertEqual ( > Failure ( > "digit", > "Unexpected 'H'", > { > currentLine = "Hello" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 40.97ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pint = > let inline resultToInt (sign, digits) = > let i = int digits > match sign with > | Some ch -> -i > | None -> i > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits > |> mapP resultToInt > <?> "integer" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pint "-123" > |> _assertEqual ( > Success ( > -123, > { > lines = [[| "-123" |]] > position = { line = 0; column = 4 } > } > ) > ) > > ╭─[ 38.24ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (-123, { lines = [|"-123"|] │ > │ position = { line = 0 │ > │ column = 4 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pfloat = > let inline resultToFloat (((sign, digits1), point), digits2) = > let fl = float $"{digits1}.{digits2}" > match sign with > | Some ch -> -fl > | None -> fl > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > |> mapP resultToFloat > <?> "float" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pfloat "-123.45" > |> _assertEqual ( > Success ( > -123.45, > { > lines = [[| "-123.45" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 41.53ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (-123.45, { lines = [|"-123.45"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline createParserForwardedToRef<'a> () = > let mutable parserRef : Parser<'a> = > { > label = "unknown" > parseFn = fun _ -> failwith "unfixed forwarded parser" > } > > let wrapperParser = > { parserRef with > parseFn = fun input -> runOnInput parserRef input > } > > wrapperParser, (fun v -> parserRef <- v) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) p x = > p > |>> fun _ -> x 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 39314 } 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/parser/Parser.dib.ipynb to html 00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:22 v #7 ! validate(nb) 00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:23 v #9 ! return _pygments_highlight( 00:00:24 v #10 ! [NbConvertApp] Writing 413747 bytes to c:\home\git\polyglot\apps\parser\Parser.dib.html 00:00:24 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:00:24 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:00:24 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:24 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:24 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:24 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 40229 } 00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Parser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/Supervisor.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Supervisor.dib" --output-path "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Supervisor (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendJson │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendJson (port : int) (json : string) = async { > let host = "127.0.0.1" > let! portOpen = SpiralNetworking.test_port_open host port > if portOpen then > try > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > do! connection.StartAsync () |> Async.AwaitTask > let! result = connection.InvokeAsync<string> ("ClientToServerMsg", > json) |> Async.AwaitTask > do! connection.StopAsync () |> Async.AwaitTask > trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> > Option.map (SpiralSm.ellipsis_end 200)}") _locals > return Some result > with ex -> > trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > SpiralSm.format_exception}") _locals > return None > else > trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: > port not open") _locals > return None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendObj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendObj port obj = > obj > |> System.Text.Json.JsonSerializer.Serialize > |> sendJson port > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCPos │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {| line : int; character : int |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### RString │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### TracedError │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {| trace : string list; message : string |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### ClientErrorsRes │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {| uri : string; errors : RString list |} > | TokenizerErrors of {| uri : string; errors : RString list |} > | ParserErrors of {| uri : string; errors : RString list |} > | TypeErrors of {| uri : string; errors : RString list |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### workspaceRoot │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### awaitCompiler │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let awaitCompiler port cancellationToken = async { > let host = "127.0.0.1" > let struct (ct, disposable) = cancellationToken |> > SpiralThreading.new_disposable_token > let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async > > let compiler = MailboxProcessor.Start (fun inbox -> async { > let! availablePort = SpiralNetworking.get_available_port (Some 180) host > port > if availablePort <> port then > inbox.Post (port, false) > else > let compilerPath = > workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release" > |> System.IO.Path.GetFullPath > > let dllPath = compilerPath </> "Spiral.dll" > > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = $@"dotnet ""{dllPath}"" --port {availablePort} > --default-int i32 --default-float f64" > l1 = Some ct > l3 = Some (fun struct (_, line, _) -> async { > if line |> SpiralSm.contains > $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address > already in use." then > inbox.Post (port, false) > > if line |> SpiralSm.contains $"Server bound to: > http://localhost:{availablePort}" then > let rec loop retry = async { > do! > SpiralNetworking.wait_for_port_access > (Some 100) true host availablePort > |> Async.runWithTimeoutAsync 500 > |> Async.Ignore > > let _locals () = $"port: {availablePort} / > retry: {retry} / {_locals ()}" > try > let pingObj = {| Ping = true |} > let! pingResult = pingObj |> sendObj > availablePort > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals > > match pingResult with > | Some _ -> inbox.Post (availablePort, > true) > | None -> do! loop (retry + 1) > with ex -> > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") > _locals > do! loop (retry + 1) > } > do! loop 1 > }) > l6 = Some workspaceRoot > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: > {exitCode} / result: {result}") _locals > disposable.Dispose () > }, ct) > > let! serverPort, managed = compiler.Receive () > > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > do! connection.StartAsync () |> Async.AwaitTask > > let event = Event<_> () > let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg |> > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > }) > () > > let disposable' = > new_disposable (fun () -> > async { > disposable'.Dispose () > do! connection.StopAsync () |> Async.AwaitTask > disposable.Dispose () > if managed > then do! > SpiralNetworking.wait_for_port_access (Some 100) false host > serverPort > |> Async.runWithTimeoutAsync 1500 > |> Async.Ignore > } > |> Async.RunSynchronously > ) > > return > serverPort, > stream, > ct, > disposable' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getFilePathFromUri │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFilePathFromUri uri = > match System.Uri.TryCreate (uri, System.UriKind.Absolute) with > | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath > | _ -> failwith "invalid uri" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getCompilerPort │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCompilerPort () = > 13805 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### serialize_obj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let serializeObj obj = > try > obj > |> FSharp.Json.Json.serialize > |> SpiralSm.replace "\\\\" "\\" > |> SpiralSm.replace "\\r\\n" "\n" > |> SpiralSm.replace "\\n" "\n" > with ex -> > trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") > _locals > "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### Backend │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Backend = > | Fsharp > | Cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildFile backend timeout port cancellationToken path = > let rec loop retry = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> SpiralFileSystem.read_all_text_async > > let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> > true) > use _ = disposable > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, errors, ct, disposable = awaitCompiler port (Some > token) > use _ = disposable > > let outputFileName = > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > > let outputContentSeq = > stream > |> FSharp.Control.AsyncSeq.chooseAsync (function > | _, (FileSystem.FileSystemChange.Changed (path, Some text)) > when (path |> System.IO.Path.GetFileName) = outputFileName > -> > // fileDir </> path |> > SpiralFileSystem.read_all_text_retry_async > text |> Some |> Async.init > | _ -> None |> Async.init > ) > |> FSharp.Control.AsyncSeq.map (fun content -> > Some (content |> SpiralSm.replace "\r\n" "\n"), None > ) > > let printErrorData (data : {| uri : string; errors : RString list |}) = > let fileName = data.uri |> System.IO.Path.GetFileName > let errors = > data.errors > |> List.map snd > |> SpiralSm.concat "\n" > $"{fileName}:\n{errors}" > > let errorsSeq = > errors > |> FSharp.Control.AsyncSeq.choose (fun error -> > match error with > | FatalError message -> > Some (message, error) > | TracedError data -> > Some (data.message, error) > | PackageErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TokenizerErrors data when data.errors |> List.isEmpty |> not > -> > Some (data |> printErrorData, error) > | ParserErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TypeErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | _ -> None > ) > |> FSharp.Control.AsyncSeq.map (fun (message, error) -> > None, Some (message, error) > ) > > let timerSeq = > 500 > |> FSharp.Control.AsyncSeq.intervalMs > |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) > > let outputSeq = > [[ outputContentSeq; errorsSeq; timerSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! outputChild = > ((None, [[]], 0), outputSeq) > ||> FSharp.Control.AsyncSeq.scan ( > fun (outputContentResult, errors, typeErrorCount) > (outputContent, error) -> > trace Debug (fun () -> $"Supervisor.buildFile / > AsyncSeq.scan / path: {path} / errors: {errors |> serializeObj} / > outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / > retry: {retry} / error: {error} / outputContent:\n{outputContent |> > Option.defaultValue System.String.Empty |> SpiralSm.ellipsis_end 1500}") _locals > match outputContent, error with > | Some outputContent, None -> Some outputContent, errors, > typeErrorCount > | None, Some (_, FatalError "File main has a type error > somewhere in its path.") -> > outputContentResult, errors, typeErrorCount + 1 > | None, Some error -> outputContentResult, error :: errors, > typeErrorCount > | None, None when typeErrorCount >= 1 -> > outputContentResult, errors, typeErrorCount + 1 > | _ -> outputContentResult, errors, typeErrorCount > ) > |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, > errors, typeErrorCount) -> > trace Debug (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / path: {path} / errors: {errors |> serializeObj} / > typeErrorCount: {typeErrorCount} / retry: {retry} / > outputContent:\n{outputContent |> Option.defaultValue System.String.Empty |> > SpiralSm.ellipsis_end 1500}") _locals > #if INTERACTIVE > let errorWait = 2 > #else > let errorWait = 2 > #endif > match outputContent, errors with > | None, [[]] when typeErrorCount > errorWait -> false > | None, [[]] -> true > | _ -> false > ) > |> FSharp.Control.AsyncSeq.tryLast > |> Async.withCancellationToken ct > |> Async.catch > |> Async.runWithTimeoutAsync timeout > |> Async.StartChild > > // do! Async.Sleep 60 > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} > |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let backendId = > match backend with > | Fsharp -> "Fsharp" > | Cuda -> "Python + Cuda" > let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = > backendId |} |} > let! _buildFileResult = buildFileObj |> sendObj serverPort > > let! result, typeErrorCount = > outputChild > |> Async.map (function > | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> > (outputCode, errors |> List.distinct |> List.rev), > typeErrorCount > | Some (Error ex) -> > trace Critical (fun () -> $"Supervisor.buildFile / error: > {ex |> SpiralSm.format_exception} / retry: {retry}") _locals > (None, [[]]), 0 > | _ -> (None, [[]]), 0 > ) > > match result with > | None, _ when typeErrorCount > 0 && retry = 0 -> > return! loop (retry + 1) > | _ -> > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] > |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > let outputPath = fileDir </> outputFileName > return outputPath, result > } > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### SpiralInput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralInput = > | Spi of string * string option > | Spir of string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### persistCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let persistCode (input: {| backend : Backend option; input: SpiralInput; > packages: string [[]] |}) = async { > let targetDir = workspaceRoot </> "target/spiral_Eval" > > let packagesDir = targetDir </> "packages" > > let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text > > let packageDir = packagesDir </> hashHex > packageDir |> System.IO.Directory.CreateDirectory |> ignore > > let moduleName = "main" > > let spirModule, spiModule = > match input.input with > | Spi (_spi, Some _spir) -> true, true > | Spi (_spi, None) -> false, true > | Spir _spir -> true, false > |> fun (spir, spi) -> > (if spir then $"{moduleName}_real*-" else ""), > if spi then moduleName else "" > > let libLinkTargetPath = workspaceRoot </> "lib/spiral" > let libLinkPath = packageDir </> "spiral" > > let packagesModule = > input.packages > |> Array.map (fun package -> > let path = workspaceRoot </> package > let packageName = path |> System.IO.Path.GetFileName > let libLinkPath = packageDir </> packageName > libLinkPath |> SpiralFileSystem.link_directory path > $"{packageName}-" > ) > |> String.concat "\n " > > let packageDir' = > if input.packages |> Array.isEmpty > then workspaceRoot </> "lib" > else > libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath > packageDir > > let spiprojPath = packageDir </> "package.spiproj" > let spiprojCode = > $"""packageDir: {packageDir'} > packages: > |core- > spiral- > {packagesModule} > modules: > {spirModule} > {spiModule} > """ > do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath > > let spirPath = packageDir </> $"{moduleName}_real.spir" > let spiPath = packageDir </> $"{moduleName}.spi" > > let spirCode, spiCode = > match input.input with > | Spi (spi, Some spir) -> Some spir, Some spi > | Spi (spi, None) -> None, Some spi > | Spir spir -> Some spir, None > > match spirCode with > | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath > | None -> () > match spiCode with > | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath > | None -> () > > let spiralPath = > match input.input with > | Spi _ -> spiPath > | Spir _ -> spirPath > match input.backend with > | None -> return spiralPath, None > | Some backend -> > let outputFileName = > let fileName = > match input.input with > | Spi _ -> moduleName > | Spir _ -> $"{moduleName}_real" > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > let outputPath = packageDir </> outputFileName > if outputPath |> System.IO.File.Exists |> not > then return spiralPath, None > else > let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async > if oldCode <> (spiCode |> Option.defaultValue (spirCode |> > Option.defaultValue "")) > then return spiralPath, None > else > let! outputCode = outputPath |> > SpiralFileSystem.read_all_text_async > return spiralPath, Some (outputPath, outputCode |> > SpiralSm.replace "\r\n" "\n") > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildCode backend packages isCache timeout cancellationToken input = async { > let! mainPath, outputCache = > persistCode {| input = input; backend = Some backend; packages = > packages |} > match outputCache with > | Some (outputPath, outputCode) when isCache -> return mainPath, > (outputPath, Some outputCode), [[]] > | _ -> > let! outputPath, (outputCode, errors) = mainPath |> buildFile backend > timeout None cancellationToken > return mainPath, (outputPath, outputCode), errors > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl app () = > console.write_line "text" > 1i32 > > inl main () = > app > |> dyn > |> ignore > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 15000 None > |> Async.runWithTimeout 15000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some """let rec closure1 () () : unit = > let v0 : (string -> unit) = System.Console.WriteLine > let v1 : string = "text" > v0 v1 > and closure0 () () : int32 = > let v0 : unit = () > let v1 : (unit -> unit) = closure1() > let v2 : unit = (fun () -> v1 (); v0) () > 1 > let v0 : (unit -> int32) = closure0() > () > """, > [[]] > ) > ) > > ╭─[ 998.22ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:12 v #1 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:05 d #1 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │ > │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:05 d #2 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │ > │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:05 d #3 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │ > │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:05 v #4 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl app () =\n console.write_line │ > │ \u0022text\u0022\n 1i32\n\ninl main │ > │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │ > │ 9dc60aebd08a0d6/main.spi"}} / result: │ > │ 00:00:05 v #5 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60a │ > │ ebd08a0d6/main.spi"}} / result: │ > │ 00:00:05 d #6 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │ > │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : int32 = │ > │ let v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ │ > │ 00:00:05 d #7 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777 │ > │ 766f357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : int32 = │ > │ let v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ │ > │ 00:00:06 v #8 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/22ccd04317d5605c65 │ > │ f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result: │ > │ 00:00:06 d #9 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some │ > │ (Some │ > │ "let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : int32 = │ > │ let v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ ", │ > │ []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot find `main` in file main." ]] > ) > ) > > ╭─[ 556.75ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:13 v #2 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:06 d #10 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │ > │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:06 d #11 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │ > │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:06 d #12 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │ > │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:06 v #13 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"","uri":"file:///c:/home/git/polyglot/target/spiral_ │ > │ Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170 │ > │ aa/main.spi"}} / result: │ > │ 00:00:06 v #14 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c │ > │ 4d28170aa/main.spi"}} / result: │ > │ 00:00:06 d #15 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │ > │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((Cannot │ > │ find `main` in file main., FatalError "Cannot find `main` in file main.")) / │ > │ outputContent: │ > │ │ > │ 00:00:06 d #16 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705 │ > │ d0260e9a932e5e68c0feb33db55c4d28170aa\main.spi / errors: [ │ > │ [ │ > │ "Cannot find `main` in file main.", │ > │ { │ > │ "FatalError": "Cannot find `main` in file main." │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:06 v #17 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/a65342ccc7da0da967 │ > │ b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result: │ > │ 00:00:06 d #18 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["Cannot find `main` in file main."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1i32 / 0i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "An attempt to divide by zero has been detected at compile time." ]] > ) > ) > > ╭─[ 578.33ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 v #3 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:06 d #19 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:06 d #20 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:06 d #21 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:06 v #22 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1i32 / │ > │ 0i32\n","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9 │ > │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"}} / │ > │ result: │ > │ 00:00:06 v #23 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88 │ > │ d2a5cdfb2/main.spi"}} / result: │ > │ 00:00:07 d #24 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((An │ > │ attempt to divide by zero has been detected at compile time., TracedError │ > │ { message = "An attempt to divide by zero has been detected at compile │ > │ time." │ > │ trace = │ > │ ["Error trace on line: 1, column: 10 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 2, column: 5 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ "] })) / outputContent: │ > │ │ > │ 00:00:07 d #25 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi / errors: [ │ > │ [ │ > │ "An attempt to divide by zero has been detected at compile time.", │ > │ { │ > │ "TracedError": { │ > │ "message": "An attempt to divide by zero has been detected at │ > │ compile time.", │ > │ "trace": [ │ > │ "Error trace on line: 1, column: 10 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 2, column: 5 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52 │ > │ c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ " │ > │ ] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 v #26 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1a │ > │ b26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result: │ > │ 00:00:07 d #27 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["An attempt to divide by zero has been detected at compile │ > │ time."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1 + "" > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Constraint satisfaction error. > Got: string > Fails to satisfy: number" > ]] > ) > ) > > ╭─[ 389.20ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 v #4 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:07 d #28 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │ > │ e67685221d91a46e3655199e42df713504aa0\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 d #29 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │ > │ e67685221d91a46e3655199e42df713504aa0\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:07 d #30 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │ > │ e67685221d91a46e3655199e42df713504aa0\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 v #31 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ > │ \u0022\u0022\n","uri":"file:///c:/home/git/polyg...et/spiral_Eval/packages/c │ > │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ > │ / result: │ > │ 00:00:07 v #32 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df │ > │ 713504aa0/main.spi"}} / result: │ > │ 00:00:07 d #33 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │ > │ e67685221d91a46e3655199e42df713504aa0\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: │ > │ Some((main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number, TypeErrors │ > │ { errors = │ > │ [(({ character = 8 │ > │ line = 1 }, { character = 10 │ > │ line = 1 }), │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number")] │ > │ uri = │ > │ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │ > │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │ > │ outputContent: │ > │ │ > │ 00:00:07 d #34 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeac │ > │ e67685221d91a46e3655199e42df713504aa0\main.spi / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 10, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number" │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │ > │ dd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 v #35 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcb │ > │ dd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result: │ > │ 00:00:07 d #36 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number"]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > x + y > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Unbound variable: x. > Unbound variable: y." > ]] > ) > ) > > ╭─[ 369.87ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:15 v #5 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:07 d #37 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │ > │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 d #38 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │ > │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:07 d #39 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │ > │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 v #40 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n x \u002B │ > │ y\n","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec5 │ > │ 07f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} / │ > │ result: │ > │ 00:00:07 v #41 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767f │ > │ de35dc5d1/main.spi"}} / result: │ > │ 00:00:07 d #42 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │ > │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: │ > │ Some((main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y., TypeErrors │ > │ { errors = │ > │ [(({ character = 4 │ > │ line = 1 }, { character = 5 │ > │ line = 1 }), "Unbound variable: x."); │ > │ (({ character = 8 │ > │ line = 1 }, { character = 9 │ > │ line = 1 }), "Unbound variable: y.")] │ > │ uri = │ > │ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │ > │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / │ > │ outputContent: │ > │ │ > │ 00:00:07 d #43 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa70 │ > │ 49b777a622aa3bf7333b151c767fde35dc5d1\main.spi / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y.", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 4, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 5, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Unbound variable: x." │ > │ ], │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 9, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Unbound variable: y." │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │ > │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:07 v #44 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c │ > │ 8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1"]}} / result: │ > │ 00:00:07 d #45 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real () > () > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot apply a forall with a term." ]] > ) > ) > > ╭─[ 552.45ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:15 v #6 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:08 d #46 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:08 d #47 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:08 d #48 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:08 v #49 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl unbox_real │ > │ forall a. (obj : a) : a │ > │ =\...et/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e11 │ > │ 7eec78e740987f29a/main.spi"}} / result: │ > │ 00:00:08 v #50 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e7 │ > │ 40987f29a/main.spi"}} / result: │ > │ 00:00:08 d #51 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((Cannot │ > │ apply a forall with a term., TracedError │ > │ { message = "Cannot apply a forall with a term." │ > │ trace = │ > │ ["Error trace on line: 2, column: 10 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ inl main () = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 4, column: 9 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ inl unbox_real forall a. (obj : a) : a = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 7, column: 9 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ unbox_real () │ > │ ^ │ > │ "] })) / outputContent: │ > │ │ > │ 00:00:08 d #52 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a\main.spi / errors: [ │ > │ [ │ > │ "Cannot apply a forall with a term.", │ > │ { │ > │ "TracedError": { │ > │ "message": "Cannot apply a forall with a term.", │ > │ "trace": [ │ > │ "Error trace on line: 2, column: 10 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ inl main () = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 4, column: 9 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ inl unbox_real forall a. (obj : a) : a = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 7, column: 9 in module: │ > │ c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f17 │ > │ 74bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. │ > │ unbox_real () │ > │ ^ │ > │ " │ > │ ] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:08 v #53 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51 │ > │ a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a"]}} / result: │ > │ 00:00:08 d #54 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["Cannot apply a forall with a term."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real `i32 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "The main function should not have a forall." ]] > ) > ) > > ╭─[ 550.01ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:15 v #7 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:08 d #55 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │ > │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:08 d #56 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │ > │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:08 d #57 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │ > │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:08 v #58 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl unbox_real │ > │ forall a. (obj : a) : a │ > │ =\...et/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90f │ > │ ad118bad793251c4f/main.spi"}} / result: │ > │ 00:00:08 v #59 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad │ > │ 793251c4f/main.spi"}} / result: │ > │ 00:00:09 d #60 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │ > │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((The main │ > │ function should not have a forall., TracedError { message = "The main │ > │ function should not have a forall." │ > │ trace = [] })) / outputContent: │ > │ │ > │ 00:00:09 d #61 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc5 │ > │ 5fcc7912380f5dd2d90fad118bad793251c4f\main.spi / errors: [ │ > │ [ │ > │ "The main function should not have a forall.", │ > │ { │ > │ "TracedError": { │ > │ "message": "The main function should not have a forall.", │ > │ "trace": [] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:09 v #62 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/0ba44c42df309b790a │ > │ cdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f"]}} / result: │ > │ 00:00:09 d #63 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (None, ["The main function should not have a forall."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.3325000000000001\n", > [[]] > ) > ) > > ╭─[ 512.08ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:16 v #8 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:09 d #64 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │ > │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:09 d #65 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │ > │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:09 d #66 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │ > │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:09 v #67 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd │ > │ 3cbd56ac7f0327106f1db/main.spi"}} / result: │ > │ 00:00:09 v #68 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f03 │ > │ 27106f1db/main.spi"}} / result: │ > │ 00:00:09 d #69 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │ > │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ 0.3325000000000001 │ > │ │ > │ 00:00:09 d #70 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e │ > │ 9312a6aad9129ffd3cbd56ac7f0327106f1db\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ 0.3325000000000001 │ > │ │ > │ 00:00:09 v #71 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c127414de2a2a92d9f │ > │ d93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db"]}} / result: │ > │ 00:00:09 d #72 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (Some "0.3325000000000001 │ > │ ", []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Cuda [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some @"kernel = r"""""" > """""" > class static_array(): > def __init__(self, length): > self.ptr = [[]] > for _ in range(length): > self.ptr.append(None) > > def __getitem__(self, index): > assert 0 <= index < len(self.ptr), ""The get index needs to be in > range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < len(self.ptr), ""The set index needs to be in > range."" > self.ptr[[index]] = value > > class static_array_list(static_array): > def __init__(self, length): > super().__init__(length) > self.length = 0 > > def __getitem__(self, index): > assert 0 <= index < self.length, ""The get index needs to be in range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < self.length, ""The set index needs to be in range."" > self.ptr[[index]] = value > > def push(self,value): > assert (self.length < len(self.ptr)), ""The length before pushing has to > be less than the maximum length of the array."" > self.ptr[[self.length]] = value > self.length += 1 > > def pop(self): > assert (0 < self.length), ""The length before popping has to be greater > than 0."" > self.length -= 1 > return self.ptr[[self.length]] > > def unsafe_set_length(self,i): > assert 0 <= i <= len(self.ptr), ""The new length has to be in range."" > self.length = i > > class dynamic_array(static_array): > pass > > class dynamic_array_list(static_array_list): > def length_(self): return self.length > > import cupy as cp > import numpy as np > from dataclasses import dataclass > from typing import NamedTuple, Union, Callable, Tuple > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 = > int; f32 = float; f64 = float; char = str; string = str > cuda = False > > def main_body(): > return 0.3325000000000001 > > def main(): > r = main_body() > if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so > the `__trap()` calls on the kernel aren't missed. > return r > > if __name__ == '__main__': result = main(); None if result is None else > print(result) > ", > [[]] > ) > ) > > ╭─[ 610.91ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:17 v #9 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:09 d #73 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │ > │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:09 d #74 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │ > │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:09 d #75 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │ > │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:09 v #76 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4 │ > │ a24b26e8533ec368831c8/main.spi"}} / result: │ > │ 00:00:09 v #77 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Python \u002B │ > │ Cuda","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d │ > │ 6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi"}} / │ > │ result: │ > │ 00:00:10 d #78 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │ > │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.append(None) │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ class static_array_list(static_array): │ > │ def __init__(self, length): │ > │ super().__init__(length) │ > │ self.length = 0 │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < self.length, "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ d...nge." │ > │ self.length = i │ > │ │ > │ class dynamic_array(static_array): │ > │ pass │ > │ │ > │ class dynamic_array_list(static_array_list): │ > │ def length_(self): return self.length │ > │ │ > │ import cupy as cp │ > │ import numpy as np │ > │ from dataclasses import dataclass │ > │ from typing import NamedTuple, Union, Callable, Tuple │ > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ > │ cuda = False │ > │ │ > │ def main_body(): │ > │ return 0.3325000000000001 │ > │ │ > │ def main(): │ > │ r = main_body() │ > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ > │ so the `__trap()` calls on the kernel aren't missed. │ > │ return r │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ │ > │ 00:00:10 d #79 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f9 │ > │ 7fdc056ee1f21be4a24b26e8533ec368831c8\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.append(None) │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ class static_array_list(static_array): │ > │ def __init__(self, length): │ > │ super().__init__(length) │ > │ self.length = 0 │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < self.length, "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ d...nge." │ > │ self.length = i │ > │ │ > │ class dynamic_array(static_array): │ > │ pass │ > │ │ > │ class dynamic_array_list(static_array_list): │ > │ def length_(self): return self.length │ > │ │ > │ import cupy as cp │ > │ import numpy as np │ > │ from dataclasses import dataclass │ > │ from typing import NamedTuple, Union, Callable, Tuple │ > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ > │ cuda = False │ > │ │ > │ def main_body(): │ > │ return 0.3325000000000001 │ > │ │ > │ def main(): │ > │ r = main_body() │ > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ > │ so the `__trap()` calls on the kernel aren't missed. │ > │ return r │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ │ > │ 00:00:10 v #80 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d6928a8e76185 │ > │ 5210f25f97fdc056ee1f21be4a24b26e8533ec368831c8"]}} / result: │ > │ 00:00:10 d #81 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some │ > │ (Some │ > │ "kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.append(None) │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ class static_array_list(static_array): │ > │ def __init__(self, length): │ > │ super().__init__(length) │ > │ self.length = 0 │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < self.length, "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < self.length, "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ def push(self,value): │ > │ assert (self.length < len(self.ptr)), "The length before pushing has │ > │ to be less than the maximum length of the array." │ > │ self.ptr[self.length] = value │ > │ self.length += 1 │ > │ │ > │ def pop(self): │ > │ assert (0 < self.length), "The length before popping has to be │ > │ greater than 0." │ > │ self.length -= 1 │ > │ return self.ptr[self.length] │ > │ │ > │ def unsafe_set_length(self,i): │ > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ > │ self.length = i │ > │ │ > │ class dynamic_array(static_array): │ > │ pass │ > │ │ > │ class dynamic_array_list(static_array_list): │ > │ def length_(self): return self.length │ > │ │ > │ import cupy as cp │ > │ import numpy as np │ > │ from dataclasses import dataclass │ > │ from typing import NamedTuple, Union, Callable, Tuple │ > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ > │ cuda = False │ > │ │ > │ def main_body(): │ > │ return 0.3325000000000001 │ > │ │ > │ def main(): │ > │ r = main_body() │ > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ > │ so the `__trap()` calls on the kernel aren't missed. │ > │ return r │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ ", │ > │ []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.01 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.33332500000000004\n", > [[]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ╭─[ 553.73ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:17 v #10 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:10 d #82 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │ > │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:10 d #83 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │ > │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:10 d #84 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │ > │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:10 v #85 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef │ > │ 6e7797ce64875a41451f4/main.spi"}} / result: │ > │ 00:00:10 v #86 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce6487 │ > │ 5a41451f4/main.spi"}} / result: │ > │ 00:00:10 d #87 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │ > │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ 0.33332500000000004 │ > │ │ > │ 00:00:10 d #88 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b93 │ > │ 135633484d22c3ef6e7797ce64875a41451f4\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ 0.33332500000000004 │ > │ │ > │ 00:00:10 v #89 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3c │ > │ af39a0b93135633484d22c3ef6e7797ce64875a41451f4"]}} / result: │ > │ 00:00:10 d #90 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some (Some "0.33332500000000004 │ > │ ", []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl rec main () = main""" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Recursive metavariables are not allowed. A metavar cannot be unified with a type > that has itself. > Got: 'a > Expected: () -> 'a" > ]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ╭─[ 390.09ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:18 v #11 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:11 d #91 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85f │ > │ acc39c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:11 d #92 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85f │ > │ acc39c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / │ > │ outputContent: │ > │ │ > │ 00:00:11 d #93 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85f │ > │ acc39c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi / errors: [] / │ > │ typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:11 v #94 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl rec main () = │ > │ main","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e01 │ > │ 23fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"}} / │ > │ result: │ > │ 00:00:11 v #95 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/target/ │ > │ spiral_Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd458 │ > │ 1901ee2b7/main.spi"}} / result: │ > │ 00:00:11 d #96 Supervisor.buildFile / AsyncSeq.scan / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85f │ > │ acc39c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi / errors: [] / │ > │ outputContentResult: / typeErrorCount: 0 / retry: 0 / error: │ > │ Some((main.spi: │ > │ Recursive metavariables are not allowed. A metavar cannot be unified with a │ > │ type that has itself. │ > │ Got: 'a │ > │ Expected: () -> 'a, TypeErrors │ > │ { errors = │ > │ [(({ character = 18 │ > │ line = 0 }, { character = 22 │ > │ line = 0 }), │ > │ "Recursive metavariables are not allowed. A metavar cannot be unified │ > │ with a type that has itself. │ > │ Got: 'a │ > │ Expected: () -> 'a")] │ > │ uri = │ > │ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a950 │ > │ 1da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / │ > │ outputContent: │ > │ │ > │ 00:00:11 d #97 Supervisor.buildFile / takeWhileInclusive / path: │ > │ C:\home\git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85f │ > │ acc39c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Recursive metavariables are not allowed. A metavar cannot be unified with a │ > │ type that has itself. │ > │ Got: 'a │ > │ Expected: () -> 'a", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 18, │ > │ "line": 0 │ > │ }, │ > │ { │ > │ "character": 22, │ > │ "line": 0 │ > │ } │ > │ ], │ > │ "Recursive metavariables are not allowed. A metavar cannot be │ > │ unified with a type that has itself. │ > │ Got: 'a │ > │ Expected: () -> 'a" │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a950 │ > │ 1da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: │ > │ │ > │ 00:00:11 v #98 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a950 │ > │ 1da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7"]}} / result: │ > │ 00:00:11 d #99 FileSystem.watchWithFilter / Disposing watch stream / │ > │ filter: FileName, LastWrite │ > │ Some │ > │ (None, │ > │ ["main.spi: │ > │ Recursive metavariables are not allowed. A metavar cannot be unified with a │ > │ type that has itself. │ > │ Got: 'a │ > │ Expected: () -> 'a"]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getFileTokenRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileTokenRange port cancellationToken path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) > use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let fileTokenRangeObj = > {| > FileTokenRange = > {| > uri = fullPathUri > range = > [[| > {| > line = 0 > character = 0 > |} > {| > line = lines.Length - 1 > character = lines.[[lines.Length - 1]].Length > |} > |]] > |} > |} > let! fileTokenRangeResult = > fileTokenRangeObj > |> sendObj serverPort > |> Async.withCancellationToken ct > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int > array> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getCodeTokenRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeTokenRange cancellationToken code = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let tokensPath = codeDir </> "tokens.json" > let! tokens = async { > if tokensPath |> System.IO.File.Exists |> not > then return None > else > let! text = tokensPath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> FSharp.Json.Json.deserialize<int array> |> Some > else None > } > match tokens with > | Some tokens -> > return tokens |> Some > | None -> return! mainPath |> getFileTokenRange None cancellationToken > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = ()""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > > ╭─[ 366.07ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:18 v #12 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:11 v #100 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ ()","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d4 │ > │ 6cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / │ > │ result: │ > │ 00:00:11 v #101 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileTokenRange":{"range":[ │ > │ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///c:/ho...e │ > │ t/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86 │ > │ f19feaf821e/main.spi"}} / result: Some([ │ > │ 0, │ > │ 0, │ > │ 3, │ > │ 7, │ > │ 0, │ > │ 0, │ > │ 4, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 0, │ > │ 5, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ ...8, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 1, │ > │ 8, │ > │ 0 │ > │ ]) │ > │ 00:00:11 v #102 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f │ > │ 307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result: │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; │ > │ 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = 1i32""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > > ╭─[ 355.62ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:19 v #13 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:12 v #103 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ 1i32","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/537082 │ > │ 9508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/main.spi"}} / │ > │ result: │ > │ 00:00:12 v #104 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileTokenRange":{"range":[ │ > │ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///c:/ho...e │ > │ t/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733 │ > │ a187ff8f18b/main.spi"}} / result: Some([ │ > │ 0, │ > │ 0, │ > │ 3, │ > │ 7, │ > │ 0, │ > │ 0, │ > │ 4, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 0, │ > │ 5, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ ..., │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 3, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 3, │ > │ 12, │ > │ 0 │ > │ ]) │ > │ 00:00:12 v #105 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/5370829508ddefc738 │ > │ 6d6b4d280722b47d97cb925585525bee733a187ff8f18b"]}} / result: │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; │ > │ 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getFileHoverAt │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileHoverAt > port > cancellationToken > path > (position : {| line: int; character: int |}) > = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) > use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let hoverAtObj = > {| > HoverAt = > {| > uri = fullPathUri > pos = position > |} > |} > let! hoverAtResult = > hoverAtObj > |> sendObj serverPort > |> Async.withCancellationToken ct > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > return hoverAtResult > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getCodeHoverAt │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeHoverAt cancellationToken code position = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let filePath = codeDir </> "hover.json" > let! output = async { > if filePath |> System.IO.File.Exists |> not > then return None > else > let! text = filePath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> Some > else None > } > match output with > | Some output -> > return output |> Some > | None -> return! getFileHoverAt None cancellationToken mainPath position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "() -> ()") > > ╭─[ 342.12ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:19 v #14 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:12 v #106 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ ()","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d4 │ > │ 6cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / │ > │ result: │ > │ 00:00:12 v #107 Supervisor.sendJson / port: 13805 / json: │ > │ {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///c:/home/git/polygl │ > │ ot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b7577 │ > │ 21164d86f19feaf821e/main.spi"}} / result: Some(() -> ()) │ > │ 00:00:12 v #108 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f │ > │ 307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result: │ > │ Some "() -> ()" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some null) > > ╭─[ 350.83ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:20 v #15 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:13 v #109 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ ()","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d4 │ > │ 6cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / │ > │ result: │ > │ 00:00:13 v #110 Supervisor.sendJson / port: 13805 / json: │ > │ {"HoverAt":{"pos":{"character":0,"line":0},"uri":"file:///c:/home/git/polygl │ > │ ot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b7577 │ > │ 21164d86f19feaf821e/main.spi"}} / result: │ > │ 00:00:13 v #111 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f │ > │ 307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result: │ > │ Some null │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl rec main () = main""" {| line = 0; character = 8 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a. () -> 'a") > > ╭─[ 338.57ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:20 v #16 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:13 v #112 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl rec main () = │ > │ main","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/7fa7f9 │ > │ 4d5cb478aa7827ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2/main.spi"}} / │ > │ result: │ > │ 00:00:13 v #113 Supervisor.sendJson / port: 13805 / json: │ > │ {"HoverAt":{"pos":{"character":8,"line":0},"uri":"file:///c:/home/git/polygl │ > │ ot/target/spiral_Eval/packages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e22fc89 │ > │ 5db0f8b03cacf92c7e2/main.spi"}} / result: Some(forall 'a. () -> 'a) │ > │ 00:00:13 v #114 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/7fa7f94d5cb478aa78 │ > │ 27ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2"]}} / result: │ > │ Some "forall 'a. () -> 'a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = 1""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a {number}. () -> 'a") > > ╭─[ 375.58ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:20 v #17 async.run_with_timeout_async / { timeout = 180 } │ > │ 00:00:13 v #115 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ 1","uri":"file:///c:/home/git/polyglot/target/spiral_Eval/packages/2f51fd7aa │ > │ 58d1ea373b484460dba65cec845b6dddbc1fc6de2eea30335846eee/main.spi"}} / │ > │ result: │ > │ 00:00:13 v #116 Supervisor.sendJson / port: 13805 / json: │ > │ {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///c:/home/git/polygl │ > │ ot/target/spiral_Eval/packages/2f51fd7aa58d1ea373b484460dba65cec845b6dddbc1f │ > │ c6de2eea30335846eee/main.spi"}} / result: Some(forall 'a {number}. () -> 'a) │ > │ 00:00:13 v #117 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2f51fd7aa58d1ea373 │ > │ b484460dba65cec845b6dddbc1fc6de2eea30335846eee"]}} / result: │ > │ Some "forall 'a {number}. () -> 'a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | Build_File of string * string > | File_Token_Range of string * string > | File_Hover_At of string * string * int * int > | Execute_Command of string > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > | [[<Argu.ArguAttributes.Unique>]] Port of int > | [[<Argu.ArguAttributes.Unique>]] Parallel > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Build_File _ -> nameof Build_File > | File_Token_Range _ -> nameof File_Token_Range > | File_Hover_At _ -> nameof File_Hover_At > | Execute_Command _ -> nameof Execute_Command > | Timeout _ -> nameof Timeout > | Port _ -> nameof Port > | Parallel -> nameof Parallel > | Exit_On_Error-> nameof Exit_On_Error > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 116.44ms - return value ]──────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>] │ > │ [--file-token-range <string> <string>] │ > │ [--file-hover-at <string> <string> <int> <int>] │ > │ [--execute-command <string>] [--timeout <int>] [--port │ > │ <int>] │ > │ [--parallel] [--exit-on-error] │ > │ │ > │ OPTIONS: │ > │ │ > │ --build-file <string> <string> │ > │ Build_File │ > │ --file-token-range <string> <string> │ > │ File_Token_Range │ > │ --file-hover-at <string> <string> <int> <int> │ > │ File_Hover_At │ > │ --execute-command <string> │ > │ Execute_Command │ > │ --timeout <int> Timeout │ > │ --port <int> Port │ > │ --parallel Parallel │ > │ --exit-on-error Exit_On_Error │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let buildFileActions = > argsMap > |> Map.tryFind (nameof Arguments.Build_File) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, > outputPath) > | _ -> None > ) > > let fileTokenRangeActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Token_Range) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Token_Range (inputPath, outputPath) -> Some > (inputPath, outputPath) > | _ -> None > ) > > let fileHoverAtActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Hover_At) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Hover_At (inputPath, outputPath, line, character) > -> > Some (inputPath, outputPath, line, character) > | _ -> None > ) > > let executeCommandActions = > argsMap > |> Map.tryFind (nameof Arguments.Execute_Command) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Execute_Command command -> Some command > | _ -> None > ) > > let timeout = > match argsMap |> Map.tryFind (nameof Arguments.Timeout) with > | Some [[ Arguments.Timeout timeout ]] -> timeout > | _ -> 60000 * 60 > > let port = > match argsMap |> Map.tryFind (nameof Arguments.Port) with > | Some [[ Arguments.Port port ]] -> Some port > | _ -> None > > let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel) > > let isExitOnError = argsMap |> Map.containsKey (nameof > Arguments.Exit_On_Error) > > async { > let port = > port > |> Option.defaultWith getCompilerPort > let struct (localToken, disposable) = > SpiralThreading.new_disposable_token None > let! serverPort, _errors, compilerToken, disposable = awaitCompiler port > (Some localToken) > use _ = disposable > > let buildFileAsync = > buildFileActions > |> List.map (fun (inputPath, outputPath) -> async { > let! _outputPath, (outputCode, errors) = > let backend = > if outputPath |> SpiralSm.ends_with ".fsx" > then Fsharp > elif outputPath |> SpiralSm.ends_with ".py" > then Cuda > else failwith $"Supervisor.main / invalid backend / > outputPath: {outputPath}" > let isReal = inputPath |> SpiralSm.ends_with ".spir" > inputPath |> buildFile backend timeout (Some serverPort) > None > > errors > |> List.map snd > |> List.iter (fun error -> > trace Critical (fun () -> $"main / error: {error |> > serializeObj}") _locals > ) > > match outputCode with > | Some outputCode -> > do! outputCode |> SpiralFileSystem.write_all_text_exists > outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileTokenRangeAsync = > fileTokenRangeActions > |> List.map (fun (inputPath, outputPath) -> async { > let! tokenRange = inputPath |> getFileTokenRange (Some > serverPort) None > match tokenRange with > | Some tokenRange -> > do! tokenRange |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileHoverAtAsync = > fileHoverAtActions > |> List.map (fun (inputPath, outputPath, line, character) -> async { > let! hoverAt = > getFileHoverAt > (Some serverPort) > None > inputPath > {| line = line; character = character |} > match hoverAt with > | Some hoverAt -> > do! hoverAt |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let executeCommandAsync = > executeCommandActions > |> List.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = Some compilerToken > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"main / executeCommand / exitCode: > {exitCode} / command: {command}") _locals > > if isExitOnError && exitCode <> 0 > then SpiralRuntime.current_process_kill () > > return exitCode > }) > > return! > [[| buildFileAsync; fileTokenRangeAsync; fileHoverAtAsync; > executeCommandAsync |]] > |> Seq.collect id > |> fun x -> > if isParallel > then Async.Parallel (x, float System.Environment.ProcessorCount > * 0.51 |> ceil |> int) > else Async.Sequential x > |> Async.map Array.sum > } > |> Async.runWithTimeout timeout > |> Option.defaultValue 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 85.81ms - return value ]───────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 155448 } 00:00:32 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:33 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb to html 00:00:33 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:33 v #7 ! validate(nb) 00:00:34 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:34 v #9 ! return _pygments_highlight( 00:00:35 v #10 ! [NbConvertApp] Writing 535466 bytes to c:\home\git\polyglot\apps\spiral\Supervisor.dib.html 00:00:35 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 } 00:00:35 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 } 00:00:35 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:36 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:36 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:36 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 156371 } 00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / code.Length: 32732 00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\Supervisor" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 424 ms). 00:00:19 v #7 > Supervisor -> C:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\linux-x64\Supervisor.dll 00:00:20 v #8 > Supervisor -> C:\home\git\polyglot\apps\spiral\dist\ 00:00:20 v #9 > 00:00:20 v #10 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:20 d #11 runtime.execute_with_options_async / { exit_code = 0; output_length = 541 } 00:00:20 d #12 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\Supervisor" } } 00:00:21 v #13 > Determining projects to restore... 00:00:21 v #14 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:22 v #15 > The last full restore is still up to date. Nothing left to do. 00:00:22 v #16 > Total time taken: 0 milliseconds 00:00:22 v #17 > Restored C:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 423 ms). 00:00:39 v #18 > Supervisor -> C:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\win-x64\Supervisor.dll 00:00:40 v #19 > Supervisor -> C:\home\git\polyglot\apps\spiral\dist\ 00:00:40 v #20 > 00:00:40 v #21 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:41 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 539 } 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/Eval.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Eval.dib" --output-path "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Eval (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > #r > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System > open System.Collections.Generic > open System.IO > open System.Text > open System.Threading > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## mapErrors │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapErrors (severity, errors, lastTopLevelIndex) allCode = > let allCodeLineLength = > allCode |> SpiralSm.split "\n" |> Array.length > > errors > |> List.map (fun (_, error) -> > match error with > | Supervisor.FatalError message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > |> List.singleton > | Supervisor.TracedError data -> > data.trace > |> List.truncate 5 > |> List.append [[ data.message ]] > |> List.map (fun message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > ) > | Supervisor.PackageErrors data > | Supervisor.TokenizerErrors data > | Supervisor.ParserErrors data > | Supervisor.TypeErrors data -> > data.errors > |> List.filter (fun ((rangeStart, _), _) -> > trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: > {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals > rangeStart.line > allCodeLineLength > ) > |> List.map (fun ((rangeStart, rangeEnd), message) -> > ( > severity, > message, > 0, > ( > (data.uri |> System.IO.Path.GetFileName), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.line - allCodeLineLength - 2 > | _ -> rangeStart.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.character - 4 > | _ -> rangeStart.character) > ), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.line - allCodeLineLength - 2 > | _ -> rangeEnd.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.character - 4 > | _ -> rangeEnd.character) > ) > ) > ) > ) > ) > |> List.collect id > |> List.toArray > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### workspaceRoot │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### targetDir │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > [[ targetDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### assemblyName │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## allCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCode = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### allPackages │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allPackages : string [[]] = [[||]] > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## allCodeReal │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCodeReal = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## traceToggle │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable traceToggle = false > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getParentProcessId │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getParentProcessId () = > if SpiralPlatform.is_windows () |> not > then 0u > else > let pid = System.Diagnostics.Process.GetCurrentProcess().Id > let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId > = {pid}" > use searcher = new System.Management.ManagementObjectSearcher (query) > use results = searcher.Get () > let data = results |> Seq.cast<System.Management.ManagementObject> > if data |> Seq.isEmpty > then 0u > else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## startTokenRangeWatcher │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startTokenRangeWatcher () = > if [[ "dotnet-repl" ]] |> List.contains assemblyName > then new_disposable (fun () -> ()) > else > let tokensDir = targetDir </> "tokens" > > [[ tokensDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > let stream, disposable = FileSystem.watchDirectory (fun _ -> false) > tokensDir > > try > let existingFilesChild = > tokensDir > |> System.IO.Directory.GetDirectories > |> Array.map (fun codeDir -> async { > try > let tokensPath = codeDir </> "tokens.json" > if tokensPath |> File.Exists |> not then > let spiralCodePath = codeDir </> "main.spi" > let spiralRealCodePath = codeDir </> > "main_real.spir" > let spiralExists = spiralCodePath |> > System.IO.File.Exists > let spiralRealExists = spiralRealCodePath |> > System.IO.File.Exists > if spiralExists |> not && spiralRealExists |> not > then do! codeDir |> > SpiralFileSystem.delete_directory_async |> Async.Ignore > else > let! tokens = > if spiralExists then spiralCodePath else > spiralRealCodePath > |> Supervisor.getFileTokenRange None None > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_async > tokensPath > | None -> > trace Verbose (fun () -> > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals > }) > |> Async.Parallel > |> Async.Ignore > > let streamAsyncChild = > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > -> > match event with > | FileSystem.FileSystemChange.Changed (codePath, _) > when [[ "main.spi"; "main_real.spir" ]] > |> List.contains (System.IO.Path.GetFileName > codePath) > -> > async { > let hashDir = codePath |> > System.IO.Directory.GetParent > let hashHex = hashDir.Name > let codePath = tokensDir </> codePath > let tokensPath = tokensDir </> hashHex </> > "tokens.json" > // do! Async.Sleep 30 > let rec loop retry = async { > let! tokens = codePath |> > Supervisor.getFileTokenRange None None > if retry = 3 || tokens <> Some [[||]] > then return tokens, retry > else > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher > / iterAsyncParallel") > (fun () -> $"retry: {retry} / tokens: > %A{tokens}") > do! Async.Sleep 30 > return! loop (retry + 1) > } > let! tokens, retries = loop 1 > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_exists > tokensPath > | None -> > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher / > iterAsyncParallel") > (fun () -> $"retries: {retries} / tokens: > {tokens}") > } > |> Async.retryAsync 3 > |> Async.map (Result.toOption >> Option.defaultValue ()) > | _ -> () |> Async.init > ) > > let parentAsyncChild = async { > let parentProcessId = getParentProcessId () > trace Verbose > (fun () -> "Eval.parentAsyncChild") > (fun () -> $"parentProcessId: {parentProcessId} / {_locals > ()}") > > if parentProcessId > 0u then > let parentProcess = parentProcessId |> int |> > System.Diagnostics.Process.GetProcessById > do! parentProcess.WaitForExitAsync () |> Async.AwaitTask > trace Debug > (fun () -> "Eval.parentAsyncChild / Parent process has > exited. Performing cleanup...") > (fun () -> $"{_locals ()}") > System.Threading.Thread.Sleep 1000 > System.Environment.Exit 1 > } > > async { > do! Async.Sleep 3000 > existingFilesChild |> Async.StartImmediate > streamAsyncChild |> Async.Start > parentAsyncChild |> Async.Start > } > |> Async.Start > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |> > SpiralSm.format_exception}") _locals > > disposable > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## startCommandsWatcher │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let startCommandsWatcher (uriServer : string) = > let commandsDir = targetDir </> "eval_commands" > let commandHistoryDir = targetDir </> "eval_command_history" > [[ commandsDir; commandHistoryDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete > > let stream, disposable = > commandsDir > |> FileSystem.watchDirectory (function > | FileSystem.FileSystemChange.Created _ -> true > | _ -> false > ) > > let connection = HubConnectionBuilder().WithUrl(uriServer).Build() > connection.StartAsync() |> Async.AwaitTask |> Async.Start > // let _ = connection.On<string>("ServerToClientMsg", fun x -> > // printfn $"ServerToClientMsg: '{x}'" > // ) > > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async { > let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}" > trace Verbose (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > > match event with > | FileSystem.FileSystemChange.Created (path, Some json) -> > try > let fullPath = commandsDir </> path > let! result = > connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask > let commandHistoryPath = commandHistoryDir </> path > do! fullPath |> SpiralFileSystem.move_file_async > commandHistoryPath |> Async.Ignore > if result |> SpiralSm.trim |> String.length > 0 then > let resultPath = commandHistoryDir </> > $"{Path.GetFileNameWithoutExtension path}_result.json" > do! result |> SpiralFileSystem.write_all_text_async > resultPath > with ex -> > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / > {_locals ()}" > trace Critical (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > | _ -> () > }) > |> Async.StartChild > |> Async.Ignore > |> Async.Start > > new_disposable (fun () -> > disposable.Dispose () > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## prepareSpiral │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepareSpiral rawCellCode lines = > let lastBlock = > lines > |> Array.tryFindBack (fun line -> > line |> String.length > 0 > && line.[[0]] <> ' ' > ) > > let hasMain = > lastBlock > |> Option.exists (fun line -> > line |> SpiralSm.starts_with "inl main " > || line |> SpiralSm.starts_with "let main " > ) > > if hasMain > then rawCellCode, None > else > let lastTopLevelIndex, _ = > (lines |> Array.indexed, (None, false)) > ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) -> > // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}") > _locals > match line with > | _ when finished -> lastTopLevelIndex, true > | "" -> lastTopLevelIndex, false > | line when > line |> SpiralSm.starts_with " " > || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, > false > | line when > line |> SpiralSm.starts_with "open " > || line |> SpiralSm.starts_with "prototype " > || line |> SpiralSm.starts_with "instance " > || line |> SpiralSm.starts_with "type " > || line |> SpiralSm.starts_with "union " > || line |> SpiralSm.starts_with "nominal " -> > lastTopLevelIndex, true > | line when > line |> SpiralSm.starts_with "inl " > || line |> SpiralSm.starts_with "and " > || line |> SpiralSm.starts_with "let " -> > let m = > System.Text.RegularExpressions.Regex.Match ( > line, > @"^(?:and +)?(inl|let) +((?:[[{( > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)" > ) > trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / > m.Groups.Count: {m.Groups.Count}") _locals > if m.Groups.Count = 3 > then Some i, false > else lastTopLevelIndex, true > | _ -> Some i, false > ) > let code = > match lastTopLevelIndex with > | Some lastTopLevelIndex -> > lines > |> Array.mapi (fun i line -> > match i with > | i when i < lastTopLevelIndex -> line > | i when i = lastTopLevelIndex -> $"\nlet main () =\n > {line}" > | _ when line |> SpiralSm.trim = "" -> "" > | _ -> $" {line}" > ) > |> SpiralSm.concat "\n" > | None -> $"{rawCellCode}\n\ninl main () = ()\n" > code, lastTopLevelIndex > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## processSpiralOutput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let processSpiralOutput > (props : {| > printCode: bool > traceLevel: TraceLevel > builderCommands: string array > lastTopLevelIndex: int option > backend: Supervisor.Backend > cancellationToken: _ > spiralErrors: _ > code: string > outputPath: string > isReal: bool > |}) > = async { > let inline _trace (fn : unit -> string) = > if props.traceLevel = Verbose > then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals > else fn () |> System.Console.WriteLine > > if props.printCode && props.backend <> Supervisor.Cuda then > let ext = props.outputPath |> System.IO.Path.GetExtension > _trace (fun () -> if props.builderCommands.Length > 0 then > $"{ext}:\n{props.code}\n" else props.code) > > let workspaceRootExternal = > let currentDir = System.IO.Directory.GetCurrentDirectory () |> > SpiralSm.to_lower > let workspaceRoot = workspaceRoot |> SpiralSm.to_lower > if currentDir |> SpiralSm.starts_with workspaceRoot > then None > else Some workspaceRoot > > let! spiralBuilderResults = > match props.builderCommands, props.lastTopLevelIndex with > | [[||]], _ | _, None -> [[||]] |> Async.init > | builderCommands, _ -> > builderCommands > |> Array.map (fun builderCommand -> > let path = > workspaceRoot </> > $@"workspace/target/release/spiral_builder{SpiralPlatform.get_executable_suffix > ()}" > |> System.IO.Path.GetFullPath > let commands = > if props.backend = Supervisor.Fsharp > && ( > builderCommand |> SpiralSm.starts_with "rust" > || builderCommand |> SpiralSm.starts_with > "typescript" > || builderCommand |> SpiralSm.starts_with "python" > ) > then [[| $"{path} fable --fs-path \"{props.outputPath}\" > --command \"{builderCommand}\"" |]] > elif props.backend = Supervisor.Cuda > && builderCommand |> SpiralSm.starts_with "cuda" > then [[| $"{path} {builderCommand} --py-path > \"{props.outputPath}\"" |]] > else [[||]] > builderCommand, commands > ) > |> Array.filter (fun (_, commands) -> commands.Length > 0) > |> Array.collect (fun (builderCommand, commands) -> > commands > |> Array.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = props.cancellationToken > l2 = [[| > "AUTOMATION", assemblyName = "dotnet-repl" > |> string > "TRACE_LEVEL", $"%A{if props.printCode then > props.traceLevel else Info}" > |]] > l6 = workspaceRootExternal > } > ) > |> SpiralRuntime.execute_with_options_async > trace Debug > (fun () -> $"Eval.processSpiralOutput / spiral_builder") > (fun () -> $"exitCode: {exitCode} / builderCommand: > {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end > 400} / {_locals ()}") > return > if exitCode = 0 > then {| code = result; eval = false; builderCommand = > builderCommand |} |> Ok > else result |> Error > }) > ) > |> Async.Parallel > > let hasEval = > props.backend = Supervisor.Fsharp > && props.builderCommands |> Array.exists (fun x -> x |> > SpiralSm.starts_with "fsharp") > > let outputResult = > if props.builderCommands.Length > 0 && not hasEval > then None > else > let code = > if props.builderCommands.Length > 1 > then > let header = "System.Console.WriteLine \".fsx output:\"\n" > $"{header}{props.code}" > else props.code > Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]]) > > match outputResult, spiralBuilderResults with > | Some outputResult, [[||]] -> > return outputResult, [[||]] > | None, [[||]] -> > return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], > [[||]] > | _, spiralBuilderResults -> > try > let spiralResults = > match outputResult with > | Some (Ok code) -> > spiralBuilderResults > |> Array.append (code |> List.map Ok |> List.toArray) > | _ -> spiralBuilderResults > let codes = > spiralResults > |> Array.map (fun spiralBuilderResult' -> > let commandResult, errors = > match spiralBuilderResult' with > | Ok result when result.eval = false -> > let result' = > result.code > |> > FSharp.Json.Json.deserialize<Map<string,string>> > let result = > match result' |> Map.tryFind "command_result" > with > | Some result'' -> > result'' > |> > FSharp.Json.Json.deserialize<Map<string,string>> > |> Map.add "builderCommand" > result.builderCommand > | None -> Map.empty > result, [[||]] > | Ok result when result.eval = true -> > let result = > [[ > "extension", "fsx" > "code", result.code > "output", "" > ]] > |> Map.ofList > result, [[||]] > | Error error -> > Map.empty, > [[| > ( > TraceLevel.Critical, > $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / > spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, > 0), (0, 0)) > ) > |]] > | _ -> > Map.empty, [[||]] > > if errors |> Array.isEmpty |> not > then Error (Exception $"Eval.processSpiralOutput / > evalResult errors / Exception / commandResult: %A{commandResult}"), errors > else > let extension = commandResult.[["extension"]] > let code = commandResult.[["code"]] > let output = commandResult.[["output"]] > let builderCommand = > commandResult > |> Map.tryFind "builderCommand" > |> Option.defaultValue "" > > let backendInfo = > match props.backend, builderCommand with > | Supervisor.Fsharp, builderCommand > when builderCommand |> SpiralSm.contains " " -> > $" ({builderCommand})" > | Supervisor.Fsharp, _ -> "" > | _ -> $" ({props.backend})" > > let eval = output = "" && extension = "fsx" > > if props.printCode && not eval > then _trace (fun () -> > $""".{extension}{backendInfo}:{'\n'}{code}""") > > trace Debug > (fun () -> $"Eval.processSpiralOutput / result") > (fun () -> $"builderCommand: {builderCommand} / > extension: {extension} / commandResult: {commandResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}") > > let code = > if props.printCode > || spiralResults.Length > 1 > || props.builderCommands.Length > 1 > then > if eval > then code > else > let header = $".{extension} > output{backendInfo}:\n" > $"""{if output |> SpiralSm.contains "\n" > then "\n" else ""}{header}{output}""" > elif eval > then code > else output > Ok {| code = code; eval = eval; builderCommand = > builderCommand |}, [[||]] > ) > trace Debug > (fun () -> $"Eval.processSpiralOutput / codes") > (fun () -> > let props = {| props with cancellationToken = None |} > $"codes: {codes |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults: > {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end > 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} > / {_locals ()}") > return > (((Ok [[]]), [[||]]), codes) > ||> Array.fold (fun (acc_code, acc_errors) (code, errors) -> > match code, acc_code with > | Ok code, Ok acc_code -> > let errors = > acc_errors > |> Array.append errors > |> Array.append props.spiralErrors > let errors = > if errors |> Array.isEmpty > then errors > else > let code = $"%A{code}" > errors > |> Array.append [[| > TraceLevel.Critical, > $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |> > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > |]] > Ok (code :: acc_code), errors > | Error ex, _ > | _, Error ex -> > Error (Exception $"Eval.processSpiralOutput / -1 / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > acc_errors |> Array.append errors > ) > with ex -> > trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.processSpiralOutput / try 2 ex / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 > ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## tryGetPropertyValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tryGetPropertyValue (propertyName: string) (obj: obj) = > let objType = obj.GetType () > let propertyInfo = propertyName |> objType.GetProperty > if propertyInfo <> null > then propertyInfo.GetValue (obj, null) |> Some > else None > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## evalAsync │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec evalAsync > retry > (props : {| > rawCellCode: _ > lines: _ > isReal: _ > builderCommands: _ array > isCache: _ > timeout: _ > cancellationToken: _ > printCode: _ > traceLevel: _ > fsi_eval: _ > |}) > = async { > try > let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode > props.lines > let newAllCode = > if props.isReal > then $"{allCodeReal}\n\n{cellCode}" > else $"{allCode}\n\n{cellCode}" > > let buildBackends = > if props.builderCommands.Length = 0 > then [[| Supervisor.Fsharp |]] > else > props.builderCommands > |> Array.map (fun x -> > if x |> SpiralSm.starts_with "cuda" > then Supervisor.Cuda > else Supervisor.Fsharp > ) > |> Array.distinct > > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / > builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / > isReal: {props.isReal} / {_locals ()}") > > let! buildCodeResults = > buildBackends > |> Array.map (fun backend -> async { > let! result = > if props.isReal > then Supervisor.Spir newAllCode > else > Supervisor.Spi > (newAllCode, if allCodeReal = "" then None else Some > allCodeReal) > |> Supervisor.buildCode backend allPackages props.isCache > props.timeout props.cancellationToken > return backend, result > }) > |> Async.Parallel > |> Async.catch > |> Async.runWithTimeoutAsync props.timeout > > match buildCodeResults with > | Some (Ok buildCodeResults) -> > let! result, errors = > ((Ok [[]], [[||]]), buildCodeResults) > ||> Async.fold (fun acc buildCodeResult -> async { > match buildCodeResult with > | backend, (_, (outputPath, Some code), spiralErrors) -> > let spiralErrors = > mapErrors (Warning, spiralErrors, lastTopLevelIndex) > allCode > let! result = > processSpiralOutput > {| > printCode = props.printCode > traceLevel = props.traceLevel > builderCommands = props.builderCommands > lastTopLevelIndex = lastTopLevelIndex > backend = backend > cancellationToken = props.cancellationToken > spiralErrors = spiralErrors > code = code > outputPath = outputPath > isReal = props.isReal > |} > match result, acc with > | (Ok code, errors), (Ok acc_code, acc_errors) -> > return Ok (acc_code @ code), acc_errors |> > Array.append errors > | (Error ex, errors), _ | _, (Error ex, errors) -> > return > Error (Exception $"Eval.evalAsync / > processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> > SpiralSm.format_exception}"), > errors |> Array.append errors > | _, (_, _, errors) when errors |> List.isEmpty |> not -> > return errors.[[0]] |> fst |> Exception |> Error, > mapErrors (TraceLevel.Critical, errors, > lastTopLevelIndex) allCode > | _ -> return acc > }) > let cancellationToken = defaultArg props.cancellationToken > System.Threading.CancellationToken.None > match result, errors with > | Ok code, [[||]] -> > let code, eval = > code > |> List.map (fun code -> > if code.eval > then None, Some code.code > else Some code.code, None > ) > |> List.unzip > let code = code |> List.choose id > let eval = eval |> List.choose id > > trace Debug > (fun () -> $"Eval.eval") > (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / {_locals ()}") > > let ch, errors = > match eval, code with > | [[]], [[]] -> > Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors > | [[ eval ]], [[]] -> > let ch, errors2 = props.fsi_eval eval cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | [[]], _ -> > let code = code |> List.rev |> String.concat "\n\n" > let code = > if props.printCode > then $"\"\"\"{code}\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = props.fsi_eval code cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | _ -> > let code, errors = > ((Ok (code |> List.rev), [[||]]), eval) > ||> List.fold (fun (acc, acc_errors) eval -> > match acc with > | Error ch -> Error ch, acc_errors > | Ok acc -> > let ch, errors = props.fsi_eval eval > cancellationToken > let errors = > errors > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, > 0))) > // ) > |> Array.append acc_errors > match ch with > | Choice1Of2 v -> > let v = > v > |> tryGetPropertyValue > "ReflectionValue" > |> Option.map (fun x -> $"%A{x}") > |> Option.defaultValue "" > Ok (v :: acc), errors > | Choice2Of2 ex -> > trace Critical (fun () -> > $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: > %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals > Error ch, errors > ) > match code with > | Error ch -> ch, errors > | Ok code -> > let code = > code > |> List.filter ((<>) "") > |> String.concat "\n\n" > > let code = > if props.builderCommands.Length > 0 && > eval.Length = 0 > then code > elif code |> SpiralSm.contains "\n\n\n" > then $"{code}\n\n" > else $"{code}\n" > > let code = > if props.printCode > then $"\"\"\"{code}\n\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = props.fsi_eval code > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > match ch with > | Choice1Of2 v -> > if props.isReal > then allCodeReal <- newAllCode > else allCode <- newAllCode > return Ok(v), errors > | Choice2Of2 ex -> > return > Error (Exception $"Eval.evalAsync / -2 / Exception / ex: > {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"), > errors > | Ok code, errors -> > return > Error (Exception "Eval.evalAsync / errors / > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > errors > | Error ex, errors -> > let ex = ex |> SpiralSm.format_exception > if retry <= 3 && > (ex |> SpiralSm.contains "Expected one of: inl, let, union, > nominal, prototype, type, instance, and, open") > || (ex |> SpiralSm.contains "Unexpected end of block past > this token.") > then return! evalAsync (retry + 1) props > else > return > Error (Exception $"Eval.evalAsync / -1 / Exception / ex: > {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 1500}"), > errors > | Some (Error ex) -> > trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.evalAsync / buildCodeResults Error / > Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > | _ -> > return > Error (Exception $"Eval.evalAsync / buildCodeResults / Exception > / buildCodeResults: %A{buildCodeResults}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > with ex -> > trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> > SpiralSm.format_exception} / lines: %A{props.lines}") _locals > return > Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex > |> SpiralSm.format_exception} / lines: %A{props.lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", > 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## eval │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline eval > (fsi_eval: > string > -> System.Threading.CancellationToken > -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int * > int) * (int * int))) array) > (cancellationToken: Option<System.Threading.CancellationToken>) > (code: string) > = > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}") > > let rawCellCode = > code |> SpiralSm.replace "\r\n" "\n" > > let lines = rawCellCode |> SpiralSm.split "\n" > > if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && > line |> SpiralSm.ends_with "\"") then > let cancellationToken = defaultArg cancellationToken > System.Threading.CancellationToken.None > let ch, errors = fsi_eval code cancellationToken > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors: > %A{errors}") _locals > match ch with > | Choice1Of2 v -> Ok(v), errors > | Choice2Of2 ex -> Error(ex), errors > else > let builderCommands = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "///! " > then line |> SpiralSm.split "///! " |> Array.tryItem 1 > else None > ) > > let packages = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "//// package=" > then line |> SpiralSm.split "=" |> Array.skip 1 |> > SpiralSm.concat "" |> Some > else None > ) > > allPackages <- packages |> Array.append allPackages |> Array.distinct > > let timeout = > lines > |> Array.tryPick (fun line -> > if line |> SpiralSm.starts_with "//// timeout=" > then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > int > else None > ) > |> Option.defaultValue (60000 * 60) > > let boolArg def command = > lines > |> Array.tryPick (fun line -> > let text = $"//// {command}" > match line.[[0..text.Length-1]], line.[[text.Length..]] with > | head, "" when head = text -> > Some true > | head, _ when head = text -> > line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > ((<>) "false") > | _ -> None > ) > |> Option.defaultValue def > > let printCode = "print_code" |> boolArg false > let isTraceToggle = "trace_toggle" |> boolArg false > let isTrace = "trace" |> boolArg false > let isCache = "cache" |> boolArg false > let isReal = "real" |> boolArg false > let timeout_continue = "timeout_continue" |> boolArg false > > if isTraceToggle > then traceToggle <- not traceToggle > > let oldLevel = get_trace_level () > let traceLevel = > if isTrace || traceToggle > then Verbose > else Info > traceLevel > |> to_trace_level > |> set_trace_level > use _ = (new_disposable (fun () -> > oldLevel |> set_trace_level > )) > > evalAsync 1 > {| > rawCellCode = rawCellCode > lines = lines > isReal = isReal > builderCommands = builderCommands > isCache = isCache > timeout = timeout > cancellationToken = cancellationToken > printCode = printCode > traceLevel = traceLevel > fsi_eval = fsi_eval > |} > |> Async.runWithTimeout timeout > |> (fun x -> > match x with > | Some ((Ok x), a) -> Some ((Ok x), a) > | Some ((Error x), a) -> > trace Info (fun () -> $"Eval.eval / error / exception: > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> "") > Some ((Error x), a) > | _ -> None > ) > |> Option.defaultWith (fun () -> ( > let lines = lines |> SpiralSm.concat (string '\n') |> > SpiralSm.ellipsis_end 1500 > in > Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / > timeout: {timeout} / timeout_continue: {timeout_continue} / lines: {lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", (0, 0), (0, 0)) > ) > |]] > )) 00:00:27 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 52922 } 00:00:27 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:28 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb to html 00:00:28 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:28 v #7 ! validate(nb) 00:00:29 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:29 v #9 ! return _pygments_highlight( 00:00:30 v #10 ! [NbConvertApp] Writing 459114 bytes to c:\home\git\polyglot\apps\spiral\Eval.dib.html 00:00:30 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:00:30 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:00:30 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:31 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:31 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:31 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53833 } 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Async.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Async.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # Async (Polyglot) │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #9 > > 00:00:18 v #10 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #11 > > #if !INTERACTIVE 00:00:18 v #12 > > open Lib 00:00:18 v #13 > > #endif 00:00:18 v #14 > > 00:00:18 v #15 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #16 > > open Common 00:00:18 v #17 > > 00:00:18 v #18 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #19 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #20 > > │ ## choice │ 00:00:18 v #21 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #22 > > 00:00:18 v #23 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #24 > > let inline choice asyncs = async { 00:00:18 v #25 > > let e = Event<_> () 00:00:18 v #26 > > use cts = new System.Threading.CancellationTokenSource () 00:00:18 v #27 > > let fn = 00:00:18 v #28 > > asyncs 00:00:18 v #29 > > |> Seq.map (fun a -> async { 00:00:18 v #30 > > let! x = a 00:00:18 v #31 > > e.Trigger x 00:00:18 v #32 > > }) 00:00:18 v #33 > > |> Async.Parallel 00:00:18 v #34 > > |> Async.Ignore 00:00:18 v #35 > > Async.Start (fn, cts.Token) 00:00:18 v #36 > > let! result = Async.AwaitEvent e.Publish 00:00:18 v #37 > > cts.Cancel () 00:00:18 v #38 > > return result 00:00:18 v #39 > > } 00:00:18 v #40 > > 00:00:18 v #41 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #42 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #43 > > │ ## map │ 00:00:18 v #44 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #45 > > 00:00:18 v #46 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #47 > > let inline map fn a = async { 00:00:18 v #48 > > let! x = a 00:00:18 v #49 > > return fn x 00:00:18 v #50 > > } 00:00:18 v #51 > > 00:00:18 v #52 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #53 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #54 > > │ ## runWithTimeoutChoiceAsync │ 00:00:18 v #55 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #56 > > 00:00:18 v #57 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #58 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn = 00:00:18 v #59 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:18 v #60 > > 00:00:18 v #61 > > let timeoutTask = async { 00:00:18 v #62 > > do! Async.Sleep timeout 00:00:18 v #63 > > trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals 00:00:18 v #64 > > return None 00:00:18 v #65 > > } 00:00:18 v #66 > > 00:00:18 v #67 > > let task = async { 00:00:18 v #68 > > try 00:00:18 v #69 > > let! result = fn 00:00:18 v #70 > > return Some result 00:00:18 v #71 > > with 00:00:18 v #72 > > | :? System.AggregateException as ex when 00:00:18 v #73 > > ex.InnerExceptions 00:00:18 v #74 > > |> Seq.exists (function :? 00:00:18 v #75 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false) 00:00:18 v #76 > > -> 00:00:18 v #77 > > trace Warning 00:00:18 v #78 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:18 v #79 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:18 v #80 > > ()}") 00:00:18 v #81 > > return None 00:00:18 v #82 > > | ex -> 00:00:18 v #83 > > trace Critical 00:00:18 v #84 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:18 v #85 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:18 v #86 > > ()}") 00:00:18 v #87 > > return None 00:00:18 v #88 > > } 00:00:18 v #89 > > 00:00:18 v #90 > > [[ timeoutTask; task ]] 00:00:18 v #91 > > |> choice 00:00:18 v #92 > > 00:00:18 v #93 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #94 > > let inline runWithTimeoutChoice timeout fn = 00:00:18 v #95 > > fn 00:00:18 v #96 > > |> runWithTimeoutChoiceAsync timeout 00:00:18 v #97 > > |> Async.RunSynchronously 00:00:18 v #98 > > 00:00:18 v #99 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #100 > > //// test 00:00:18 v #101 > > 00:00:18 v #102 > > Async.Sleep 120 00:00:18 v #103 > > |> runWithTimeoutChoice 10 00:00:18 v #104 > > |> _assertEqual None 00:00:18 v #105 > > 00:00:18 v #106 > > ╭─[ 215.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:18 v #107 > > │ 00:00:01 d #1 runWithTimeoutChoiceAsync / timeout: 10 │ 00:00:18 v #108 > > │ <null> │ 00:00:18 v #109 > > │ │ 00:00:18 v #110 > > │ │ 00:00:18 v #111 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #112 > > 00:00:18 v #113 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #114 > > //// test 00:00:18 v #115 > > 00:00:18 v #116 > > Async.Sleep 10 00:00:18 v #117 > > |> runWithTimeoutChoice 60 00:00:18 v #118 > > |> _assertEqual (Some ()) 00:00:18 v #119 > > 00:00:18 v #120 > > ╭─[ 175.02ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:18 v #121 > > │ Some () │ 00:00:18 v #122 > > │ │ 00:00:18 v #123 > > │ │ 00:00:18 v #124 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #125 > > 00:00:18 v #126 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 v #127 > > //// test 00:00:18 v #128 > > 00:00:18 v #129 > > async { 00:00:18 v #130 > > raise (exn "error") 00:00:18 v #131 > > } 00:00:18 v #132 > > |> runWithTimeoutChoice 60 00:00:18 v #133 > > |> _assertEqual None 00:00:19 v #134 > > 00:00:19 v #135 > > ╭─[ 179.69ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #136 > > │ 00:00:01 c #2 runWithTimeoutChoiceAsync / ex: System.Exception: error / │ 00:00:19 v #137 > > │ timeout: 60 │ 00:00:19 v #138 > > │ <null> │ 00:00:19 v #139 > > │ │ 00:00:19 v #140 > > │ │ 00:00:19 v #141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #142 > > 00:00:19 v #143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #144 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #145 > > │ ## catch │ 00:00:19 v #146 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #147 > > 00:00:19 v #148 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #149 > > let inline catch a = 00:00:19 v #150 > > a 00:00:19 v #151 > > |> Async.Catch 00:00:19 v #152 > > |> map (function 00:00:19 v #153 > > | Choice1Of2 result -> Ok result 00:00:19 v #154 > > | Choice2Of2 ex -> Error ex 00:00:19 v #155 > > ) 00:00:19 v #156 > > 00:00:19 v #157 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #158 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #159 > > │ ## runWithTimeoutAsync │ 00:00:19 v #160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #161 > > 00:00:19 v #162 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #163 > > let inline runWithTimeoutAsync (timeout : int) fn = async { 00:00:19 v #164 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:19 v #165 > > let! child = Async.StartChild (fn, timeout) 00:00:19 v #166 > > return! 00:00:19 v #167 > > child 00:00:19 v #168 > > |> catch 00:00:19 v #169 > > |> map (function 00:00:19 v #170 > > | Ok result -> Some result 00:00:19 v #171 > > | Error (:? System.TimeoutException as ex) -> 00:00:19 v #172 > > trace Debug (fun () -> $"Async.runWithTimeoutAsync") _locals 00:00:19 v #173 > > None 00:00:19 v #174 > > | Error ex -> 00:00:19 v #175 > > trace Critical (fun () -> $"Async.runWithTimeoutAsync** / ex: 00:00:19 v #176 > > %A{ex}") _locals 00:00:19 v #177 > > None 00:00:19 v #178 > > ) 00:00:19 v #179 > > } 00:00:19 v #180 > > 00:00:19 v #181 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #182 > > let inline runWithTimeout timeout fn = 00:00:19 v #183 > > fn 00:00:19 v #184 > > |> runWithTimeoutAsync timeout 00:00:19 v #185 > > |> Async.RunSynchronously 00:00:19 v #186 > > 00:00:19 v #187 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #188 > > //// test 00:00:19 v #189 > > 00:00:19 v #190 > > Async.Sleep 60 00:00:19 v #191 > > |> runWithTimeout 10 00:00:19 v #192 > > |> _assertEqual None 00:00:19 v #193 > > 00:00:19 v #194 > > ╭─[ 108.75ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #195 > > │ 00:00:01 d #3 Async.runWithTimeoutAsync / timeout: 10 │ 00:00:19 v #196 > > │ <null> │ 00:00:19 v #197 > > │ │ 00:00:19 v #198 > > │ │ 00:00:19 v #199 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #200 > > 00:00:19 v #201 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #202 > > //// test 00:00:19 v #203 > > 00:00:19 v #204 > > Async.Sleep 10 00:00:19 v #205 > > |> runWithTimeout 60 00:00:19 v #206 > > |> _assertEqual (Some ()) 00:00:19 v #207 > > 00:00:19 v #208 > > ╭─[ 105.37ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #209 > > │ Some () │ 00:00:19 v #210 > > │ │ 00:00:19 v #211 > > │ │ 00:00:19 v #212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #213 > > 00:00:19 v #214 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #215 > > //// test 00:00:19 v #216 > > 00:00:19 v #217 > > async { 00:00:19 v #218 > > raise (exn "error") 00:00:19 v #219 > > } 00:00:19 v #220 > > |> runWithTimeout 60 00:00:19 v #221 > > |> _assertEqual None 00:00:19 v #222 > > 00:00:19 v #223 > > ╭─[ 118.63ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #224 > > │ 00:00:02 c #4 Async.runWithTimeoutAsync** / ex: System.Exception: error │ 00:00:19 v #225 > > │ at FSI_0036.it@4-119.Invoke(Unit unitVar) │ 00:00:19 v #226 > > │ at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[ │ 00:00:19 v #227 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in │ 00:00:19 v #228 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 │ 00:00:19 v #229 > > │ at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) │ 00:00:19 v #230 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 │ 00:00:19 v #231 > > │ --- End of stack trace from previous location --- │ 00:00:19 v #232 > > │ at Microsoft.FSharp.Control.AsyncResult`1.Commit() in │ 00:00:19 v #233 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 │ 00:00:19 v #234 > > │ at │ 00:00:19 v #235 > > │ <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit │ 00:00:19 v #236 > > │ unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964 │ 00:00:19 v #237 > > │ at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[ │ 00:00:19 v #238 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in │ 00:00:19 v #239 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 │ 00:00:19 v #240 > > │ at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) │ 00:00:19 v #241 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60 │ 00:00:19 v #242 > > │ <null> │ 00:00:19 v #243 > > │ │ 00:00:19 v #244 > > │ │ 00:00:19 v #245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #246 > > 00:00:19 v #247 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #248 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #249 > > │ ## runWithTimeoutStrict │ 00:00:19 v #250 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #251 > > 00:00:19 v #252 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #253 > > let inline runWithTimeoutStrict (timeout : int) fn = 00:00:19 v #254 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:19 v #255 > > 00:00:19 v #256 > > let timeoutTask = async { 00:00:19 v #257 > > do! Async.Sleep timeout 00:00:19 v #258 > > return None, _locals 00:00:19 v #259 > > } 00:00:19 v #260 > > 00:00:19 v #261 > > let task = async { 00:00:19 v #262 > > try 00:00:19 v #263 > > return Async.RunSynchronously (fn, timeout) |> Some, _locals 00:00:19 v #264 > > with 00:00:19 v #265 > > | :? System.TimeoutException as ex -> 00:00:19 v #266 > > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:19 v #267 > > ()}" 00:00:19 v #268 > > return None, _locals 00:00:19 v #269 > > | ex -> 00:00:19 v #270 > > trace Critical 00:00:19 v #271 > > (fun () -> "Async.runWithTimeoutStrict / async error") 00:00:19 v #272 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:19 v #273 > > ()}") 00:00:19 v #274 > > return raise ex 00:00:19 v #275 > > } 00:00:19 v #276 > > 00:00:19 v #277 > > try 00:00:19 v #278 > > [[| timeoutTask; task |]] 00:00:19 v #279 > > |> Array.map Async.StartAsTask 00:00:19 v #280 > > |> System.Threading.Tasks.Task.WhenAny 00:00:19 v #281 > > |> fun task -> 00:00:19 v #282 > > match task.Result.Result with 00:00:19 v #283 > > | None, _locals -> 00:00:19 v #284 > > trace Debug (fun () -> "runWithTimeoutStrict") _locals 00:00:19 v #285 > > None 00:00:19 v #286 > > | result, _ -> result 00:00:19 v #287 > > with 00:00:19 v #288 > > | :? System.AggregateException as ex when 00:00:19 v #289 > > ex.InnerExceptions 00:00:19 v #290 > > |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException 00:00:19 v #291 > > -> true | _ -> false) 00:00:19 v #292 > > -> 00:00:19 v #293 > > trace Warning 00:00:19 v #294 > > (fun () -> "Async.runWithTimeoutStrict") 00:00:19 v #295 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:19 v #296 > > None 00:00:19 v #297 > > | ex -> 00:00:19 v #298 > > trace Critical 00:00:19 v #299 > > (fun () -> "Async.runWithTimeoutStrict / task error") 00:00:19 v #300 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:19 v #301 > > None 00:00:19 v #302 > > 00:00:19 v #303 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #304 > > //// test 00:00:19 v #305 > > 00:00:19 v #306 > > Async.Sleep 60 00:00:19 v #307 > > |> runWithTimeoutStrict 10 00:00:19 v #308 > > |> _assertEqual None 00:00:19 v #309 > > 00:00:19 v #310 > > ╭─[ 143.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #311 > > │ 00:00:02 d #5 runWithTimeoutStrict / timeout: 10 │ 00:00:19 v #312 > > │ <null> │ 00:00:19 v #313 > > │ │ 00:00:19 v #314 > > │ │ 00:00:19 v #315 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #316 > > 00:00:19 v #317 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #318 > > //// test 00:00:19 v #319 > > 00:00:19 v #320 > > Async.Sleep 10 00:00:19 v #321 > > |> runWithTimeoutStrict 60 00:00:19 v #322 > > |> _assertEqual (Some ()) 00:00:20 v #323 > > 00:00:20 v #324 > > ╭─[ 139.55ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #325 > > │ Some () │ 00:00:20 v #326 > > │ │ 00:00:20 v #327 > > │ │ 00:00:20 v #328 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #329 > > 00:00:20 v #330 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #331 > > //// test 00:00:20 v #332 > > 00:00:20 v #333 > > async { 00:00:20 v #334 > > raise (exn "error") 00:00:20 v #335 > > } 00:00:20 v #336 > > |> runWithTimeoutStrict 60 00:00:20 v #337 > > |> _assertEqual None 00:00:20 v #338 > > 00:00:20 v #339 > > ╭─[ 141.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #340 > > │ 00:00:02 c #6 Async.runWithTimeoutStrict / async error / ex: │ 00:00:20 v #341 > > │ System.Exception: error / timeout: 60 │ 00:00:20 v #342 > > │ 00:00:02 c #7 Async.runWithTimeoutStrict / task error / ex: │ 00:00:20 v #343 > > │ System.AggregateException: One or more errors occurred. (error) / timeout: │ 00:00:20 v #344 > > │ 60 │ 00:00:20 v #345 > > │ <null> │ 00:00:20 v #346 > > │ │ 00:00:20 v #347 > > │ │ 00:00:20 v #348 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #349 > > 00:00:20 v #350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #351 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #352 > > │ ## awaitValueTask │ 00:00:20 v #353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #354 > > 00:00:20 v #355 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #356 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) = 00:00:20 v #357 > > task.AsTask () |> Async.AwaitTask 00:00:20 v #358 > > 00:00:20 v #359 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) = 00:00:20 v #360 > > task.AsTask () |> Async.AwaitTask 00:00:20 v #361 > > 00:00:20 v #362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #364 > > │ ## init │ 00:00:20 v #365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #366 > > 00:00:20 v #367 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #368 > > let inline init x = async { 00:00:20 v #369 > > return x 00:00:20 v #370 > > } 00:00:20 v #371 > > 00:00:20 v #372 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #373 > > //// test 00:00:20 v #374 > > 00:00:20 v #375 > > init 1 00:00:20 v #376 > > |> Async.RunSynchronously 00:00:20 v #377 > > |> _assertEqual 1 00:00:20 v #378 > > 00:00:20 v #379 > > ╭─[ 31.06ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:20 v #380 > > │ 1 │ 00:00:20 v #381 > > │ │ 00:00:20 v #382 > > │ │ 00:00:20 v #383 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #384 > > 00:00:20 v #385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #386 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #387 > > │ ## withCancellationToken │ 00:00:20 v #388 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #389 > > 00:00:20 v #390 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #391 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn = 00:00:20 v #392 > > Async.StartImmediateAsTask (fn, ct) 00:00:20 v #393 > > |> Async.AwaitTask 00:00:20 v #394 > > 00:00:20 v #395 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #396 > > //// test 00:00:20 v #397 > > 00:00:20 v #398 > > let cts = new System.Threading.CancellationTokenSource () 00:00:20 v #399 > > 00:00:20 v #400 > > async { 00:00:20 v #401 > > let run = async { 00:00:20 v #402 > > do! Async.Sleep 100 00:00:20 v #403 > > return 1 00:00:20 v #404 > > } 00:00:20 v #405 > > 00:00:20 v #406 > > let! child = 00:00:20 v #407 > > run 00:00:20 v #408 > > |> withCancellationToken cts.Token 00:00:20 v #409 > > |> catch 00:00:20 v #410 > > |> Async.StartChild 00:00:20 v #411 > > 00:00:20 v #412 > > do! Async.Sleep 50 00:00:20 v #413 > > cts.Cancel () 00:00:20 v #414 > > return! child 00:00:20 v #415 > > } 00:00:20 v #416 > > |> Async.RunSynchronously 00:00:20 v #417 > > |> Result.mapError _.Message 00:00:20 v #418 > > |> _assertEqual (Error ("A task was canceled.")) 00:00:20 v #419 > > 00:00:20 v #420 > > ╭─[ 220.95ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #421 > > │ Error "A task was canceled." │ 00:00:20 v #422 > > │ │ 00:00:20 v #423 > > │ │ 00:00:20 v #424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #425 > > 00:00:20 v #426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #428 > > │ ## retryAsync │ 00:00:20 v #429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #430 > > 00:00:20 v #431 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #432 > > let inline retryAsync retries fn = 00:00:20 v #433 > > let rec loop retry lastError = async { 00:00:20 v #434 > > try 00:00:20 v #435 > > return! 00:00:20 v #436 > > if retry <= retries 00:00:20 v #437 > > then fn |> map Ok 00:00:20 v #438 > > else lastError |> Error |> init 00:00:20 v #439 > > with ex -> 00:00:20 v #440 > > trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries} 00:00:20 v #441 > > / ex: {ex |> SpiralSm.format_exception}") _locals 00:00:20 v #442 > > do! Async.Sleep 30 00:00:20 v #443 > > return! loop (retry + 1) (ex |> SpiralSm.format_exception) 00:00:20 v #444 > > } 00:00:20 v #445 > > loop 1 "Async.retryAsync / invalid retries / retries: {retries}" 00:00:20 v #446 > > 00:00:20 v #447 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #448 > > //// test 00:00:20 v #449 > > 00:00:20 v #450 > > let retry_fn_test = ref 0 00:00:20 v #451 > > async { 00:00:20 v #452 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:20 v #453 > > return retry_fn_test.Value 00:00:20 v #454 > > } 00:00:20 v #455 > > |> retryAsync 3 00:00:20 v #456 > > |> Async.RunSynchronously 00:00:20 v #457 > > |> _assertEqual (Ok 1) 00:00:20 v #458 > > 00:00:20 v #459 > > ╭─[ 113.27ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #460 > > │ Ok 1 │ 00:00:20 v #461 > > │ │ 00:00:20 v #462 > > │ │ 00:00:20 v #463 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #464 > > 00:00:20 v #465 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #466 > > //// test 00:00:20 v #467 > > 00:00:20 v #468 > > let retry_fn_test = ref 0 00:00:20 v #469 > > async { 00:00:20 v #470 > > return 00:00:20 v #471 > > if retry_fn_test.Value >= 2 00:00:20 v #472 > > then retry_fn_test.Value 00:00:20 v #473 > > else 00:00:20 v #474 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:20 v #475 > > failwith "test" 00:00:20 v #476 > > } 00:00:20 v #477 > > |> retryAsync 3 00:00:20 v #478 > > |> Async.RunSynchronously 00:00:20 v #479 > > |> _assertEqual (Ok 2) 00:00:21 v #480 > > 00:00:21 v #481 > > ╭─[ 175.94ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:21 v #482 > > │ 00:00:03 d #8 Async.retryAsync / retry: 1/3 / ex: System.Exception: │ 00:00:21 v #483 > > │ test │ 00:00:21 v #484 > > │ 00:00:03 d #9 Async.retryAsync / retry: 2/3 / ex: System.Exception: │ 00:00:21 v #485 > > │ test │ 00:00:21 v #486 > > │ Ok 2 │ 00:00:21 v #487 > > │ │ 00:00:21 v #488 > > │ │ 00:00:21 v #489 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #490 > > 00:00:21 v #491 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #492 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:21 v #493 > > │ ## fold │ 00:00:21 v #494 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #495 > > 00:00:21 v #496 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:21 v #497 > > let fold folder state array = 00:00:21 v #498 > > let rec loop acc i = 00:00:21 v #499 > > async { 00:00:21 v #500 > > if i < Array.length array then 00:00:21 v #501 > > let! newAcc = folder acc array.[[i]] 00:00:21 v #502 > > return! loop newAcc (i + 1) 00:00:21 v #503 > > else 00:00:21 v #504 > > return acc 00:00:21 v #505 > > } 00:00:21 v #506 > > loop state 0 00:00:21 v #507 > 00:00:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21208 } 00:00:21 v #508 > 00:00:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:22 v #509 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Async.dib.ipynb to html 00:00:22 v #510 > 00:00:21 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:22 v #511 > 00:00:21 v #7 ! validate(nb) 00:00:23 v #512 > 00:00:22 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:23 v #513 > 00:00:22 v #9 ! return _pygments_highlight( 00:00:23 v #514 > 00:00:22 v #10 ! [NbConvertApp] Writing 332808 bytes to c:\home\git\polyglot\lib\fsharp\Async.dib.html 00:00:23 v #515 > 00:00:22 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:00:23 v #516 > 00:00:22 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:00:23 v #517 > 00:00:22 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:24 v #518 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:24 v #519 > 00:00:23 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:24 v #520 > 00:00:23 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 22119 } 00:00:24 d #521 runtime.execute_with_options_async / { exit_code = 0; output_length = 25683 } 00:00:24 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Async.dib --retries 3 00:00:24 d #522 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:24 v #523 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) } 00:00:24 v #524 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:25 v #525 > > 00:00:25 v #526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:25 v #528 > > │ # AsyncSeq (Polyglot) │ 00:00:25 v #529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:40 v #530 > > 00:00:40 v #531 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:40 v #532 > > #r 00:00:40 v #533 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:40 v #534 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:40 v #535 > > #r 00:00:40 v #536 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:40 v #537 > > 0/System.Reactive.dll" 00:00:40 v #538 > > #r 00:00:40 v #539 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:40 v #540 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:42 v #541 > > 00:00:42 v #542 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #543 > > #if !INTERACTIVE 00:00:42 v #544 > > open Lib 00:00:42 v #545 > > #endif 00:00:42 v #546 > > 00:00:42 v #547 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #548 > > open Common 00:00:42 v #549 > > 00:00:42 v #550 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #551 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:42 v #552 > > │ ## subscribeEvent │ 00:00:42 v #553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 v #554 > > 00:00:42 v #555 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #556 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map = 00:00:42 v #557 > > let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 00:00:42 v #558 > > 'A>(event.AddHandler, event.RemoveHandler) 00:00:42 v #559 > > System.Reactive.Linq.Observable.Select (observable, fun event -> map 00:00:42 v #560 > > event.EventArgs) 00:00:42 v #561 > > |> FSharp.Control.AsyncSeq.ofObservableBuffered 00:00:42 v #562 > > 00:00:42 v #563 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #564 > > //// test 00:00:42 v #565 > > 00:00:42 v #566 > > type TestEvent () as self = 00:00:42 v #567 > > member val Calls = [[]] with get, set 00:00:42 v #568 > > member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get 00:00:42 v #569 > > 00:00:42 v #570 > > member _.AddCall text = 00:00:42 v #571 > > self.Calls <- self.Calls @ [[ text ]] 00:00:42 v #572 > > 00:00:42 v #573 > > member _.EventInterface = 00:00:42 v #574 > > { new IEvent<ErrorEventHandler, ErrorEventArgs> with 00:00:42 v #575 > > member _.AddHandler handler = 00:00:42 v #576 > > self.AddCall "AddHandler" 00:00:42 v #577 > > self.Event.Publish.AddHandler handler 00:00:42 v #578 > > 00:00:42 v #579 > > member _.RemoveHandler handler = 00:00:42 v #580 > > self.AddCall "RemoveHandler" 00:00:42 v #581 > > self.Event.Publish.RemoveHandler handler 00:00:42 v #582 > > 00:00:42 v #583 > > member _.Subscribe observer = 00:00:42 v #584 > > self.AddCall "IObservable.Subscribe" 00:00:42 v #585 > > let disposable = self.Event.Publish.Subscribe observer 00:00:42 v #586 > > new_disposable (fun () -> 00:00:42 v #587 > > self.AddCall "IObservable.Dispose" 00:00:42 v #588 > > disposable.Dispose () 00:00:42 v #589 > > ) 00:00:42 v #590 > > } 00:00:42 v #591 > > 00:00:42 v #592 > > member _.Subscribe () = 00:00:42 v #593 > > subscribeEvent 00:00:42 v #594 > > self.EventInterface 00:00:42 v #595 > > (fun args -> 00:00:42 v #596 > > let result = args.GetException () |> SpiralSm.format_exception 00:00:42 v #597 > > self.AddCall $"TestEvent.Subscribe({result})" 00:00:42 v #598 > > result 00:00:42 v #599 > > ) 00:00:42 v #600 > > 00:00:42 v #601 > > member _.Iter subscription = 00:00:42 v #602 > > subscription 00:00:42 v #603 > > |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async { 00:00:42 v #604 > > self.AddCall $"TestEvent.Iter({i}: {error})" 00:00:42 v #605 > > }) 00:00:42 v #606 > > 00:00:42 v #607 > > member _.WaitCall text = async { 00:00:42 v #608 > > while self.Calls |> List.last <> text do 00:00:42 v #609 > > do! Async.SwitchToThreadPool () 00:00:42 v #610 > > } 00:00:42 v #611 > > 00:00:42 v #612 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #613 > > //// test 00:00:42 v #614 > > 00:00:42 v #615 > > let testEvent = TestEvent () 00:00:42 v #616 > > 00:00:42 v #617 > > async { 00:00:42 v #618 > > testEvent.AddCall "1" 00:00:42 v #619 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:42 v #620 > > do! testEvent.WaitCall "AddHandler" 00:00:42 v #621 > > testEvent.AddCall "2" 00:00:42 v #622 > > do! child 00:00:42 v #623 > > testEvent.AddCall "3" 00:00:42 v #624 > > } 00:00:42 v #625 > > |> Async.runWithTimeout 300 00:00:42 v #626 > > |> _assertEqual None 00:00:42 v #627 > > 00:00:42 v #628 > > testEvent.Calls 00:00:42 v #629 > > |> Seq.toList 00:00:42 v #630 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]] 00:00:42 v #631 > > 00:00:42 v #632 > > ╭─[ 523.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:42 v #633 > > │ 00:00:02 d #1 Async.runWithTimeoutAsync / timeout: 300 │ 00:00:42 v #634 > > │ <null> │ 00:00:42 v #635 > > │ │ 00:00:42 v #636 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"] │ 00:00:42 v #637 > > │ │ 00:00:42 v #638 > > │ │ 00:00:42 v #639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 v #640 > > 00:00:42 v #641 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:42 v #642 > > //// test 00:00:42 v #643 > > 00:00:42 v #644 > > let testEvent = TestEvent () 00:00:42 v #645 > > 00:00:42 v #646 > > async { 00:00:42 v #647 > > testEvent.AddCall "1" 00:00:42 v #648 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:42 v #649 > > do! testEvent.WaitCall "AddHandler" 00:00:42 v #650 > > testEvent.AddCall "2" 00:00:42 v #651 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:42 v #652 > > testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})" 00:00:42 v #653 > > ) 00:00:42 v #654 > > testEvent.AddCall "3" 00:00:42 v #655 > > do! child 00:00:42 v #656 > > testEvent.AddCall "4" 00:00:42 v #657 > > } 00:00:42 v #658 > > |> Async.runWithTimeout 300 00:00:42 v #659 > > |> _assertEqual None 00:00:42 v #660 > > 00:00:42 v #661 > > testEvent.Calls 00:00:42 v #662 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 00:00:42 v #663 > > "RemoveHandler"; "IObservable.Dispose" ]] 00:00:43 v #664 > > 00:00:43 v #665 > > ╭─[ 466.55ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:43 v #666 > > │ 00:00:02 d #2 Async.runWithTimeoutAsync / timeout: 300 │ 00:00:43 v #667 > > │ <null> │ 00:00:43 v #668 > > │ │ 00:00:43 v #669 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; "RemoveHandler"; │ 00:00:43 v #670 > > │ "IObservable.Dispose"] │ 00:00:43 v #671 > > │ │ 00:00:43 v #672 > > │ │ 00:00:43 v #673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #674 > > 00:00:43 v #675 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:43 v #676 > > //// test 00:00:43 v #677 > > 00:00:43 v #678 > > let testEvent = TestEvent () 00:00:43 v #679 > > 00:00:43 v #680 > > async { 00:00:43 v #681 > > testEvent.AddCall "1" 00:00:43 v #682 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:43 v #683 > > do! testEvent.WaitCall "AddHandler" 00:00:43 v #684 > > testEvent.AddCall "2" 00:00:43 v #685 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:43 v #686 > > async { 00:00:43 v #687 > > do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)" 00:00:43 v #688 > > testEvent.AddCall 00:00:43 v #689 > > $"testEvent.EventInterface.Subscribe({args.GetException () |> 00:00:43 v #690 > > SpiralSm.format_exception})" 00:00:43 v #691 > > } 00:00:43 v #692 > > |> Async.RunSynchronously 00:00:43 v #693 > > ) 00:00:43 v #694 > > testEvent.AddCall "3" 00:00:43 v #695 > > testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error")) 00:00:43 v #696 > > testEvent.AddCall "4" 00:00:43 v #697 > > do! child 00:00:43 v #698 > > testEvent.AddCall "5" 00:00:43 v #699 > > } 00:00:43 v #700 > > |> Async.runWithTimeout 300 00:00:43 v #701 > > |> _assertEqual None 00:00:43 v #702 > > 00:00:43 v #703 > > testEvent.Calls 00:00:43 v #704 > > |> _assertEqual [[ 00:00:43 v #705 > > "1" 00:00:43 v #706 > > "AddHandler" 00:00:43 v #707 > > "2" 00:00:43 v #708 > > "IObservable.Subscribe" 00:00:43 v #709 > > "3" 00:00:43 v #710 > > "TestEvent.Subscribe(System.Exception: error)" 00:00:43 v #711 > > "TestEvent.Iter(0: System.Exception: error)" 00:00:43 v #712 > > "testEvent.EventInterface.Subscribe(System.Exception: error)" 00:00:43 v #713 > > "4" 00:00:43 v #714 > > "RemoveHandler" 00:00:43 v #715 > > "IObservable.Dispose" 00:00:43 v #716 > > ]] 00:00:43 v #717 > > 00:00:43 v #718 > > ╭─[ 499.26ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:43 v #719 > > │ 00:00:03 d #3 Async.runWithTimeoutAsync / timeout: 300 │ 00:00:43 v #720 > > │ <null> │ 00:00:43 v #721 > > │ │ 00:00:43 v #722 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; │ 00:00:43 v #723 > > │ "TestEvent.Subscribe(System.Exception: error)"; │ 00:00:43 v #724 > > │ "TestEvent.Iter(0: System.Exception: error)"; │ 00:00:43 v #725 > > │ "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4"; │ 00:00:43 v #726 > > │ "RemoveHandler"; "IObservable.Dispose"] │ 00:00:43 v #727 > > │ │ 00:00:43 v #728 > > │ │ 00:00:43 v #729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #730 > > 00:00:43 v #731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:43 v #732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:43 v #733 > > │ ## subscribeToken │ 00:00:43 v #734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #735 > > 00:00:43 v #736 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:43 v #737 > > let subscribeToken (token : System.Threading.CancellationToken) = 00:00:43 v #738 > > let tcs = new System.Threading.Tasks.TaskCompletionSource () 00:00:43 v #739 > > System.Action tcs.SetResult |> token.Register |> ignore 00:00:43 v #740 > > let start = System.DateTime.Now.Ticks 00:00:43 v #741 > > FSharp.Control.AsyncSeq.unfoldAsync 00:00:43 v #742 > > (fun () -> async { 00:00:43 v #743 > > do! tcs.Task |> Async.AwaitTask 00:00:43 v #744 > > return Some (System.DateTime.Now.Ticks - start, ()) 00:00:43 v #745 > > }) 00:00:43 v #746 > > () 00:00:43 v #747 > > 00:00:43 v #748 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:43 v #749 > > //// test 00:00:43 v #750 > > 00:00:43 v #751 > > let cts = new System.Threading.CancellationTokenSource () 00:00:43 v #752 > > 00:00:43 v #753 > > async { 00:00:43 v #754 > > let! child = 00:00:43 v #755 > > cts.Token 00:00:43 v #756 > > |> subscribeToken 00:00:43 v #757 > > |> FSharp.Control.AsyncSeq.tryFirst 00:00:43 v #758 > > |> Async.StartChild 00:00:43 v #759 > > 00:00:43 v #760 > > do! Async.Sleep 100 00:00:43 v #761 > > cts.Cancel () 00:00:43 v #762 > > return! child 00:00:43 v #763 > > } 00:00:43 v #764 > > |> Async.RunSynchronously 00:00:43 v #765 > > |> Option.get 00:00:43 v #766 > > |> fun x -> x > 900000 00:00:43 v #767 > > |> _assertEqual true 00:00:44 v #768 > > 00:00:44 v #769 > > ╭─[ 195.46ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:44 v #770 > > │ true │ 00:00:44 v #771 > > │ │ 00:00:44 v #772 > > │ │ 00:00:44 v #773 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 v #774 > 00:00:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9731 } 00:00:44 v #775 > 00:00:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:45 v #776 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html 00:00:45 v #777 > 00:00:21 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:45 v #778 > 00:00:21 v #7 ! validate(nb) 00:00:45 v #779 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:45 v #780 > 00:00:21 v #9 ! return _pygments_highlight( 00:00:46 v #781 > 00:00:22 v #10 ! [NbConvertApp] Writing 303129 bytes to c:\home\git\polyglot\lib\fsharp\AsyncSeq.dib.html 00:00:46 v #782 > 00:00:22 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 } 00:00:46 v #783 > 00:00:22 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 } 00:00:46 v #784 > 00:00:22 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:46 v #785 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:46 v #786 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:46 v #787 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10648 } 00:00:46 d #788 runtime.execute_with_options_async / { exit_code = 0; output_length = 13730 } 00:00:46 d #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path AsyncSeq.dib --retries 3 00:00:46 d #789 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:46 v #790 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) } 00:00:46 v #791 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Common.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Common.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:48 v #792 > > 00:00:48 v #793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:48 v #794 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:48 v #795 > > │ # Common (Polyglot) │ 00:00:48 v #796 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #797 > > 00:01:03 v #798 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #799 > > #if !INTERACTIVE 00:01:03 v #800 > > open Lib 00:01:03 v #801 > > #endif 00:01:03 v #802 > > 00:01:03 v #803 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #804 > > let nl = System.Environment.NewLine 00:01:03 v #805 > > let q = @"""" 00:01:03 v #806 > > 00:01:03 v #807 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #808 > > let inline cons head tail = head :: tail 00:01:03 v #809 > > 00:01:03 v #810 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #811 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #812 > > │ ## memoize │ 00:01:03 v #813 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #814 > > 00:01:03 v #815 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #816 > > let inline memoize fn = 00:01:03 v #817 > > let result = lazy fn () 00:01:03 v #818 > > fun () -> result.Value 00:01:03 v #819 > > 00:01:03 v #820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #822 > > │ ## TraceLevel │ 00:01:03 v #823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #824 > > 00:01:03 v #825 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #826 > > type TraceLevel = 00:01:03 v #827 > > | Verbose 00:01:03 v #828 > > | Debug 00:01:03 v #829 > > | Info 00:01:03 v #830 > > | Warning 00:01:03 v #831 > > | Critical 00:01:03 v #832 > > 00:01:03 v #833 > > let inline _locals () = "" 00:01:03 v #834 > > 00:01:03 v #835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #836 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #837 > > │ ## trace │ 00:01:03 v #838 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #839 > > 00:01:03 v #840 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #841 > > let to_trace_level = function 00:01:03 v #842 > > | Verbose -> SpiralTrace.TraceLevel.US0_0 00:01:03 v #843 > > | Debug -> SpiralTrace.TraceLevel.US0_1 00:01:03 v #844 > > | Info -> SpiralTrace.TraceLevel.US0_2 00:01:03 v #845 > > | Warning -> SpiralTrace.TraceLevel.US0_3 00:01:03 v #846 > > | Critical -> SpiralTrace.TraceLevel.US0_4 00:01:03 v #847 > > 00:01:03 v #848 > > let trace level fn locals = 00:01:03 v #849 > > let level = level |> to_trace_level 00:01:03 v #850 > > SpiralTrace.trace level fn locals 00:01:03 v #851 > > 00:01:03 v #852 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #853 > > //// test 00:01:03 v #854 > > 00:01:03 v #855 > > trace Debug (fun () -> "test") _locals 00:01:03 v #856 > > 00:01:03 v #857 > > ╭─[ 26.97ms - stdout ]─────────────────────────────────────────────────────────╮ 00:01:03 v #858 > > │ 00:00:00 d #1 test │ 00:01:03 v #859 > > │ │ 00:01:03 v #860 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #861 > 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2930 } 00:01:03 v #862 > 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:04 v #863 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Common.dib.ipynb to html 00:01:04 v #864 > 00:00:17 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:04 v #865 > 00:00:17 v #7 ! validate(nb) 00:01:05 v #866 > 00:00:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:05 v #867 > 00:00:18 v #9 ! return _pygments_highlight( 00:01:05 v #868 > 00:00:18 v #10 ! [NbConvertApp] Writing 280728 bytes to c:\home\git\polyglot\lib\fsharp\Common.dib.html 00:01:05 v #869 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:01:05 v #870 > 00:00:18 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:01:05 v #871 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:05 v #872 > 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:05 v #873 > 00:00:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:05 v #874 > 00:00:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3843 } 00:01:05 d #875 runtime.execute_with_options_async / { exit_code = 0; output_length = 6546 } 00:01:05 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Common.dib --retries 3 00:01:05 d #876 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:05 v #877 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) } 00:01:05 v #878 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:07 v #879 > > 00:01:07 v #880 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 v #881 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 v #882 > > │ # CommonFSharp (Polyglot) │ 00:01:07 v #883 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 v #884 > > 00:01:22 v #885 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:22 v #886 > > open Common 00:01:22 v #887 > > 00:01:22 v #888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 v #889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 v #890 > > │ ## getUnionCaseName │ 00:01:22 v #891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 v #892 > > 00:01:22 v #893 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:22 v #894 > > let inline getUnionCaseName<'T> (x: 'T) = 00:01:22 v #895 > > match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with 00:01:22 v #896 > > | case, _ -> case.Name 00:01:22 v #897 > > 00:01:22 v #898 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:22 v #899 > > //// test 00:01:22 v #900 > > 00:01:22 v #901 > > TraceLevel.Critical 00:01:22 v #902 > > |> getUnionCaseName 00:01:22 v #903 > > |> _assertEqual (nameof TraceLevel.Critical) 00:01:22 v #904 > > 00:01:22 v #905 > > ╭─[ 70.07ms - stdout ]─────────────────────────────────────────────────────────╮ 00:01:22 v #906 > > │ "Critical" │ 00:01:22 v #907 > > │ │ 00:01:22 v #908 > > │ │ 00:01:22 v #909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 v #910 > 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1546 } 00:01:22 v #911 > 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:24 v #912 > 00:00:18 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html 00:01:24 v #913 > 00:00:18 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:24 v #914 > 00:00:18 v #7 ! validate(nb) 00:01:24 v #915 > 00:00:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:24 v #916 > 00:00:18 v #9 ! return _pygments_highlight( 00:01:24 v #917 > 00:00:19 v #10 ! [NbConvertApp] Writing 275592 bytes to c:\home\git\polyglot\lib\fsharp\CommonFSharp.dib.html 00:01:25 v #918 > 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 866 } 00:01:25 v #919 > 00:00:19 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 866 } 00:01:25 v #920 > 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:25 v #921 > 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:25 v #922 > 00:00:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:25 v #923 > 00:00:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 2471 } 00:01:25 d #924 runtime.execute_with_options_async / { exit_code = 0; output_length = 5152 } 00:01:25 d #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path CommonFSharp.dib --retries 3 00:01:25 d #925 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:25 v #926 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) } 00:01:25 v #927 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/FileSystem.dib" --output-path "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:27 v #928 > > 00:01:27 v #929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 v #930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 v #931 > > │ # FileSystem (Polyglot) │ 00:01:27 v #932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:30 v #933 > > 00:01:30 v #934 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:30 v #935 > > #r 00:01:30 v #936 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:01:30 v #937 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:01:30 v #938 > > #r 00:01:30 v #939 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:01:30 v #940 > > 0/System.Reactive.dll" 00:01:30 v #941 > > #r 00:01:30 v #942 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:01:30 v #943 > > netstandard2.0/System.Reactive.Linq.dll" 00:01:30 v #944 > > #r 00:01:30 v #945 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:01:43 v #946 > > 00:01:43 v #947 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:43 v #948 > > #if !INTERACTIVE 00:01:43 v #949 > > open Lib 00:01:43 v #950 > > #endif 00:01:43 v #951 > > 00:01:43 v #952 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:43 v #953 > > open Common 00:01:43 v #954 > > open SpiralFileSystem.Operators 00:01:43 v #955 > > 00:01:43 v #956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:43 v #957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:43 v #958 > > │ ## watchDirectory │ 00:01:43 v #959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:43 v #960 > > 00:01:43 v #961 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:43 v #962 > > [[<RequireQualifiedAccess>]] 00:01:43 v #963 > > type FileSystemChangeType = 00:01:43 v #964 > > | Failure 00:01:43 v #965 > > | Changed 00:01:43 v #966 > > | Created 00:01:43 v #967 > > | Deleted 00:01:43 v #968 > > | Renamed 00:01:43 v #969 > > 00:01:43 v #970 > > [[<RequireQualifiedAccess>]] 00:01:43 v #971 > > type FileSystemChange = 00:01:43 v #972 > > | Failure of exn: exn 00:01:43 v #973 > > | Changed of path: string * content: string option 00:01:43 v #974 > > | Created of path: string * content: string option 00:01:43 v #975 > > | Deleted of path: string 00:01:43 v #976 > > | Renamed of oldPath: string * (string * string option) 00:01:43 v #977 > > 00:01:43 v #978 > > 00:01:43 v #979 > > let inline watchDirectoryWithFilter filter shouldReadContent path = 00:01:43 v #980 > > let fullPath = path |> System.IO.Path.GetFullPath 00:01:43 v #981 > > let _locals () = $"filter: {filter} / {_locals ()}" 00:01:43 v #982 > > 00:01:43 v #983 > > let watcher = 00:01:43 v #984 > > new System.IO.FileSystemWatcher ( 00:01:43 v #985 > > Path = fullPath, 00:01:43 v #986 > > NotifyFilter = filter, 00:01:43 v #987 > > EnableRaisingEvents = true, 00:01:43 v #988 > > IncludeSubdirectories = true 00:01:43 v #989 > > ) 00:01:43 v #990 > > 00:01:43 v #991 > > let inline getEventPath (path : string) = 00:01:43 v #992 > > path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |> 00:01:43 v #993 > > SpiralSm.trim_start [[| '/'; '\\' |]] 00:01:43 v #994 > > 00:01:43 v #995 > > let inline ticks () = 00:01:43 v #996 > > System.DateTime.UtcNow.Ticks 00:01:43 v #997 > > 00:01:43 v #998 > > let changedStream = 00:01:43 v #999 > > AsyncSeq.subscribeEvent 00:01:43 v #1000 > > watcher.Changed 00:01:43 v #1001 > > (fun event -> 00:01:43 v #1002 > > ticks (), 00:01:43 v #1003 > > [[ FileSystemChange.Changed (getEventPath event.FullPath, None) 00:01:43 v #1004 > > ]] 00:01:43 v #1005 > > ) 00:01:43 v #1006 > > 00:01:43 v #1007 > > let deletedStream = 00:01:43 v #1008 > > AsyncSeq.subscribeEvent 00:01:43 v #1009 > > watcher.Deleted 00:01:43 v #1010 > > (fun event -> 00:01:43 v #1011 > > ticks (), 00:01:43 v #1012 > > [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]] 00:01:43 v #1013 > > ) 00:01:43 v #1014 > > 00:01:43 v #1015 > > let createdStream = 00:01:43 v #1016 > > AsyncSeq.subscribeEvent 00:01:43 v #1017 > > watcher.Created 00:01:43 v #1018 > > (fun event -> 00:01:43 v #1019 > > let path = getEventPath event.FullPath 00:01:43 v #1020 > > ticks (), [[ 00:01:43 v #1021 > > FileSystemChange.Created (path, None) 00:01:43 v #1022 > > if SpiralPlatform.is_windows () then 00:01:43 v #1023 > > FileSystemChange.Changed (path, None) 00:01:43 v #1024 > > ]]) 00:01:43 v #1025 > > 00:01:43 v #1026 > > let renamedStream = 00:01:43 v #1027 > > AsyncSeq.subscribeEvent 00:01:43 v #1028 > > watcher.Renamed 00:01:43 v #1029 > > (fun event -> 00:01:43 v #1030 > > ticks (), [[ 00:01:43 v #1031 > > FileSystemChange.Renamed ( 00:01:43 v #1032 > > getEventPath event.OldFullPath, 00:01:43 v #1033 > > (getEventPath event.FullPath, None) 00:01:43 v #1034 > > ) 00:01:43 v #1035 > > ]] 00:01:43 v #1036 > > ) 00:01:43 v #1037 > > 00:01:43 v #1038 > > let failureStream = 00:01:43 v #1039 > > AsyncSeq.subscribeEvent 00:01:43 v #1040 > > watcher.Error 00:01:43 v #1041 > > (fun event -> ticks (), [[ FileSystemChange.Failure 00:01:43 v #1042 > > (event.GetException ()) ]]) 00:01:43 v #1043 > > 00:01:43 v #1044 > > let stream = 00:01:43 v #1045 > > [[ 00:01:43 v #1046 > > changedStream 00:01:43 v #1047 > > deletedStream 00:01:43 v #1048 > > createdStream 00:01:43 v #1049 > > renamedStream 00:01:43 v #1050 > > failureStream 00:01:43 v #1051 > > ]] 00:01:43 v #1052 > > |> FSharp.Control.AsyncSeq.mergeAll 00:01:43 v #1053 > > |> FSharp.Control.AsyncSeq.map (fun (t, events) -> 00:01:43 v #1054 > > events 00:01:43 v #1055 > > |> List.fold 00:01:43 v #1056 > > (fun (i, events) event -> 00:01:43 v #1057 > > i + 1L, 00:01:43 v #1058 > > (t + i, event) :: events) 00:01:43 v #1059 > > (0L, [[]]) 00:01:43 v #1060 > > |> snd 00:01:43 v #1061 > > |> List.rev 00:01:43 v #1062 > > ) 00:01:43 v #1063 > > |> FSharp.Control.AsyncSeq.concatSeq 00:01:43 v #1064 > > |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async { 00:01:43 v #1065 > > match shouldReadContent event, event with 00:01:43 v #1066 > > | true, FileSystemChange.Changed (path, _) -> 00:01:43 v #1067 > > do! Async.Sleep 5 00:01:43 v #1068 > > let! content = fullPath </> path |> 00:01:43 v #1069 > > SpiralFileSystem.read_all_text_retry_async 00:01:43 v #1070 > > return t, FileSystemChange.Changed (path, content) 00:01:43 v #1071 > > | true, FileSystemChange.Created (path, _) -> 00:01:43 v #1072 > > do! Async.Sleep 5 00:01:43 v #1073 > > let! content = fullPath </> path |> 00:01:43 v #1074 > > SpiralFileSystem.read_all_text_retry_async 00:01:43 v #1075 > > return t, FileSystemChange.Created (path, content) 00:01:43 v #1076 > > | true, FileSystemChange.Renamed (oldPath, (newPath, _)) -> 00:01:43 v #1077 > > let! content = fullPath </> newPath |> 00:01:43 v #1078 > > SpiralFileSystem.read_all_text_retry_async 00:01:43 v #1079 > > return t, FileSystemChange.Renamed (oldPath, (newPath, content)) 00:01:43 v #1080 > > | _ -> return t, event 00:01:43 v #1081 > > }) 00:01:43 v #1082 > > 00:01:43 v #1083 > > let disposable = 00:01:43 v #1084 > > new_disposable (fun () -> 00:01:43 v #1085 > > trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch 00:01:43 v #1086 > > stream") _locals 00:01:43 v #1087 > > watcher.EnableRaisingEvents <- false 00:01:43 v #1088 > > watcher.Dispose () 00:01:43 v #1089 > > ) 00:01:43 v #1090 > > 00:01:43 v #1091 > > stream, disposable 00:01:43 v #1092 > > 00:01:43 v #1093 > > let inline watchDirectory path = 00:01:43 v #1094 > > watchDirectoryWithFilter 00:01:43 v #1095 > > (System.IO.NotifyFilters.FileName 00:01:43 v #1096 > > // ||| System.IO.NotifyFilters.DirectoryName 00:01:43 v #1097 > > // ||| System.IO.NotifyFilters.Attributes 00:01:43 v #1098 > > //// ||| System.IO.NotifyFilters.Size 00:01:43 v #1099 > > ||| System.IO.NotifyFilters.LastWrite 00:01:43 v #1100 > > //// ||| System.IO.NotifyFilters.LastAccess 00:01:43 v #1101 > > // ||| System.IO.NotifyFilters.CreationTime 00:01:43 v #1102 > > // ||| System.IO.NotifyFilters.Security 00:01:43 v #1103 > > ) 00:01:43 v #1104 > > path 00:01:44 v #1105 > > 00:01:44 v #1106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:44 v #1107 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:44 v #1108 > > │ ### testEventsRaw (test) │ 00:01:44 v #1109 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:44 v #1110 > > 00:01:44 v #1111 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:44 v #1112 > > //// test 00:01:44 v #1113 > > 00:01:44 v #1114 > > let inline testEventsRaw 00:01:44 v #1115 > > (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 * 00:01:44 v #1116 > > FileSystemChange> * IDisposable) 00:01:44 v #1117 > > write 00:01:44 v #1118 > > = 00:01:44 v #1119 > > let struct (tempDir, tempDisposable) = 00:01:44 v #1120 > > "FileSystem.testEventsRaw" 00:01:44 v #1121 > > |> SpiralCrypto.hash_text 00:01:44 v #1122 > > |> SpiralFileSystem.create_temp_dir' 00:01:44 v #1123 > > let stream, disposable = watchFn (fun _ -> true) tempDir 00:01:44 v #1124 > > 00:01:44 v #1125 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:44 v #1126 > > 00:01:44 v #1127 > > let inline iter () = 00:01:44 v #1128 > > stream 00:01:44 v #1129 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:44 v #1130 > > events.Add event }) 00:01:44 v #1131 > > 00:01:44 v #1132 > > let run = async { 00:01:44 v #1133 > > let! _ = iter () |> Async.StartChild 00:01:44 v #1134 > > do! Async.Sleep 250 00:01:44 v #1135 > > return! write tempDir 00:01:44 v #1136 > > } 00:01:44 v #1137 > > 00:01:44 v #1138 > > try 00:01:44 v #1139 > > run 00:01:44 v #1140 > > |> Async.runWithTimeout 60000 00:01:44 v #1141 > > |> _assertEqual (Some ()) 00:01:44 v #1142 > > finally 00:01:44 v #1143 > > disposable.Dispose () 00:01:44 v #1144 > > tempDisposable.Dispose () 00:01:44 v #1145 > > 00:01:44 v #1146 > > let eventsLog = 00:01:44 v #1147 > > events 00:01:44 v #1148 > > |> Seq.toList 00:01:44 v #1149 > > |> List.sortBy fst 00:01:44 v #1150 > > |> List.fold 00:01:44 v #1151 > > (fun (prev, acc) (ticks, event) -> 00:01:44 v #1152 > > ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event) 00:01:44 v #1153 > > :: acc 00:01:44 v #1154 > > ) 00:01:44 v #1155 > > (0L, [[]]) 00:01:44 v #1156 > > |> snd 00:01:44 v #1157 > > |> List.rev 00:01:44 v #1158 > > |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |> 00:01:44 v #1159 > > SpiralSm.ellipsis_end 100L) 00:01:44 v #1160 > > |> SpiralSm.concat "\n" 00:01:44 v #1161 > > let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}" 00:01:44 v #1162 > > trace Debug (fun () -> "FileSystem.testEventsRaw") _locals 00:01:44 v #1163 > > 00:01:44 v #1164 > > events 00:01:44 v #1165 > > |> Seq.toList 00:01:44 v #1166 > > |> List.sortBy fst 00:01:44 v #1167 > > |> List.map snd 00:01:44 v #1168 > > |> List.fold 00:01:44 v #1169 > > (fun acc event -> 00:01:44 v #1170 > > match acc, event with 00:01:44 v #1171 > > | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent 00:01:44 v #1172 > > :: acc, 00:01:44 v #1173 > > FileSystemChange.Changed (path, Some content) 00:01:44 v #1174 > > when lastPath = path && content |> SpiralSm.starts_with 00:01:44 v #1175 > > lastContent 00:01:44 v #1176 > > -> 00:01:44 v #1177 > > event :: acc 00:01:44 v #1178 > > | _ -> event :: acc 00:01:44 v #1179 > > ) 00:01:44 v #1180 > > [[]] 00:01:44 v #1181 > > |> List.rev 00:01:44 v #1182 > > 00:01:44 v #1183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:44 v #1184 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:44 v #1185 > > │ #### fast (test) │ 00:01:44 v #1186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:44 v #1187 > > 00:01:44 v #1188 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:44 v #1189 > > //// test 00:01:44 v #1190 > > 00:01:44 v #1191 > > let inline write path = async { 00:01:44 v #1192 > > let n = 2 00:01:44 v #1193 > > 00:01:44 v #1194 > > for i = 1 to n do 00:01:44 v #1195 > > do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:44 v #1196 > > $"file{i}.txt") 00:01:44 v #1197 > > 00:01:44 v #1198 > > do! Async.Sleep 250 00:01:44 v #1199 > > 00:01:44 v #1200 > > for i = 1 to n do 00:01:44 v #1201 > > do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:44 v #1202 > > $"file{i}.txt") 00:01:44 v #1203 > > 00:01:44 v #1204 > > do! Async.Sleep 250 00:01:44 v #1205 > > 00:01:44 v #1206 > > for i = 1 to n do 00:01:44 v #1207 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:44 v #1208 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:44 v #1209 > > 00:01:44 v #1210 > > do! Async.Sleep 250 00:01:44 v #1211 > > 00:01:44 v #1212 > > for i = 1 to n do 00:01:44 v #1213 > > do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:44 v #1214 > > $"file_{i}.txt") 00:01:44 v #1215 > > 00:01:44 v #1216 > > do! Async.Sleep 250 00:01:44 v #1217 > > 00:01:44 v #1218 > > for i = 1 to n do 00:01:44 v #1219 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:44 v #1220 > > Async.Ignore 00:01:44 v #1221 > > 00:01:44 v #1222 > > do! Async.Sleep 250 00:01:44 v #1223 > > } 00:01:44 v #1224 > > 00:01:44 v #1225 > > let inline run () = 00:01:44 v #1226 > > let events = testEventsRaw watchDirectory write 00:01:44 v #1227 > > 00:01:44 v #1228 > > events 00:01:44 v #1229 > > |> _sequenceEqual [[ 00:01:44 v #1230 > > FileSystemChange.Created ("file1.txt", Some "a1") 00:01:44 v #1231 > > FileSystemChange.Changed ("file1.txt", Some "a1") 00:01:44 v #1232 > > FileSystemChange.Created ("file2.txt", Some "a2") 00:01:44 v #1233 > > FileSystemChange.Changed ("file2.txt", Some "a2") 00:01:44 v #1234 > > 00:01:44 v #1235 > > FileSystemChange.Changed ("file1.txt", Some "b1") 00:01:44 v #1236 > > FileSystemChange.Changed ("file2.txt", Some "b2") 00:01:44 v #1237 > > 00:01:44 v #1238 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1")) 00:01:44 v #1239 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2")) 00:01:44 v #1240 > > 00:01:44 v #1241 > > FileSystemChange.Changed ("file_1.txt", Some "c1") 00:01:44 v #1242 > > FileSystemChange.Changed ("file_2.txt", Some "c2") 00:01:44 v #1243 > > 00:01:44 v #1244 > > FileSystemChange.Deleted "file_1.txt" 00:01:44 v #1245 > > FileSystemChange.Deleted "file_2.txt" 00:01:44 v #1246 > > ]] 00:01:44 v #1247 > > 00:01:44 v #1248 > > run 00:01:44 v #1249 > > |> retry_fn 3 00:01:44 v #1250 > > |> _assertEqual (Some ()) 00:01:47 v #1251 > > 00:01:47 v #1252 > > ╭─[ 3.55s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:47 v #1253 > > │ Some () │ 00:01:47 v #1254 > > │ │ 00:01:47 v #1255 > > │ 00:00:06 d #1 FileSystem.watchWithFilter / Disposing watch stream / │ 00:01:47 v #1256 > > │ filter: FileName, LastWrite │ 00:01:47 v #1257 > > │ 00:00:06 d #2 FileSystem.testEventsRaw / eventsLog: │ 00:01:47 v #1258 > > │ 0 / 638711276205088928 / Created ("file1.txt", Some "a1") │ 00:01:47 v #1259 > > │ 1 / 638711276205088929 / Changed ("file1.txt", Some "a1") │ 00:01:47 v #1260 > > │ 21995 / 638711276205110924 / Changed ("file1.txt", Some "a1") │ 00:01:47 v #1261 > > │ 1330 / 638711276205112254 / Created ("file2.txt", Some "a2") │ 00:01:47 v #1262 > > │ 1 / 638711276205112255 / Changed ("file2.txt", Some "a2") │ 00:01:47 v #1263 > > │ 41 / 638711276205112296 / Changed ("file2.txt", Some "a2") │ 00:01:47 v #1264 > > │ 2400551 / 638711276207512847 / Changed ("file1.txt", Some "b1") │ 00:01:47 v #1265 > > │ 1662 / 638711276207514509 / Changed ("file1.txt", Some "b1") │ 00:01:47 v #1266 > > │ 7635 / 638711276207522144 / Changed ("file2.txt", Some "b2") │ 00:01:47 v #1267 > > │ 1302 / 638711276207523446 / Changed ("file2.txt", Some "b2") │ 00:01:47 v #1268 > > │ 2709799 / 638711276210233245 / Renamed ("file1.txt", ("file_1.txt", Some │ 00:01:47 v #1269 > > │ "b1")) │ 00:01:47 v #1270 > > │ 13888 / 638711276210247133 / Renamed ("file2.txt", ("file_2.txt", Some │ 00:01:47 v #1271 > > │ "b2")) │ 00:01:47 v #1272 > > │ 2424093 / 638711276212671226 / Changed ("file_1.txt", Some "c1") │ 00:01:47 v #1273 > > │ 1658 / 638711276212672884 / Changed ("file_1.txt", Some "c1") │ 00:01:47 v #1274 > > │ 7974 / 638711276212680858 / Changed ("file_2.txt", Some "c2") │ 00:01:47 v #1275 > > │ 1212 / 638711276212682070 / Changed ("file_2.txt", Some "c2") │ 00:01:47 v #1276 > > │ 2572367 / 638711276215254437 / Deleted "file_1.txt" │ 00:01:47 v #1277 > > │ 3021 / 638711276215257458 / Deleted "file_2.txt" │ 00:01:47 v #1278 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some "a1"); Created │ 00:01:47 v #1279 > > │ ("file2.txt", Some "a2"); │ 00:01:47 v #1280 > > │ Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some "b1"); Changed │ 00:01:47 v #1281 > > │ ("file2.txt", Some "b2"); │ 00:01:47 v #1282 > > │ Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed ("file2.txt", │ 00:01:47 v #1283 > > │ ("file_2.txt", Some "b2")); │ 00:01:47 v #1284 > > │ Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt", Some "c2"); │ 00:01:47 v #1285 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"] │ 00:01:47 v #1286 > > │ │ 00:01:47 v #1287 > > │ Some () │ 00:01:47 v #1288 > > │ │ 00:01:47 v #1289 > > │ │ 00:01:47 v #1290 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:47 v #1291 > > 00:01:47 v #1292 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:47 v #1293 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:47 v #1294 > > │ #### slow (test) │ 00:01:47 v #1295 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:47 v #1296 > > 00:01:47 v #1297 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:47 v #1298 > > //// test 00:01:47 v #1299 > > 00:01:47 v #1300 > > let inline write path = async { 00:01:47 v #1301 > > let n = 2 00:01:47 v #1302 > > 00:01:47 v #1303 > > let contents = 00:01:47 v #1304 > > [[ 1 .. n ]] 00:01:47 v #1305 > > |> List.map (string >> String.replicate 1_000_000) 00:01:47 v #1306 > > 00:01:47 v #1307 > > for i = 1 to n do 00:01:47 v #1308 > > do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async 00:01:47 v #1309 > > (path </> $"file{i}.txt") 00:01:47 v #1310 > > 00:01:47 v #1311 > > do! Async.Sleep 1500 00:01:47 v #1312 > > 00:01:47 v #1313 > > for i = 1 to n do 00:01:47 v #1314 > > do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async 00:01:47 v #1315 > > (path </> $"file{i}.txt") 00:01:47 v #1316 > > 00:01:47 v #1317 > > do! Async.Sleep 1500 00:01:47 v #1318 > > 00:01:47 v #1319 > > for i = 1 to n do 00:01:47 v #1320 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:47 v #1321 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:47 v #1322 > > 00:01:47 v #1323 > > do! Async.Sleep 1500 00:01:47 v #1324 > > 00:01:47 v #1325 > > for i = 1 to n do 00:01:47 v #1326 > > do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async 00:01:47 v #1327 > > (path </> $"file_{i}.txt") 00:01:47 v #1328 > > 00:01:47 v #1329 > > do! Async.Sleep 1500 00:01:47 v #1330 > > 00:01:47 v #1331 > > for i = 1 to n do 00:01:47 v #1332 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:47 v #1333 > > Async.Ignore 00:01:47 v #1334 > > 00:01:47 v #1335 > > do! Async.Sleep 1500 00:01:47 v #1336 > > } 00:01:47 v #1337 > > 00:01:47 v #1338 > > let inline run () = 00:01:47 v #1339 > > let events = 00:01:47 v #1340 > > testEventsRaw watchDirectory write 00:01:47 v #1341 > > |> List.map (function 00:01:47 v #1342 > > | FileSystemChange.Changed (path, Some content) -> 00:01:47 v #1343 > > FileSystemChange.Changed (path, content |> Seq.distinct |> 00:01:47 v #1344 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:47 v #1345 > > | FileSystemChange.Created (path, Some content) -> 00:01:47 v #1346 > > FileSystemChange.Created (path, content |> Seq.distinct |> 00:01:47 v #1347 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:47 v #1348 > > | FileSystemChange.Renamed (oldPath, (newPath, Some content)) -> 00:01:47 v #1349 > > FileSystemChange.Renamed ( 00:01:47 v #1350 > > oldPath, 00:01:47 v #1351 > > (newPath, content |> Seq.distinct |> Seq.map string |> 00:01:47 v #1352 > > SpiralSm.concat "" |> Some) 00:01:47 v #1353 > > ) 00:01:47 v #1354 > > | event -> event 00:01:47 v #1355 > > ) 00:01:47 v #1356 > > 00:01:47 v #1357 > > events 00:01:47 v #1358 > > |> _sequenceEqual [[ 00:01:47 v #1359 > > FileSystemChange.Created ("file1.txt", Some "1a") 00:01:47 v #1360 > > FileSystemChange.Changed ("file1.txt", Some "1a") 00:01:47 v #1361 > > FileSystemChange.Created ("file2.txt", Some "2a") 00:01:47 v #1362 > > FileSystemChange.Changed ("file2.txt", Some "2a") 00:01:47 v #1363 > > 00:01:47 v #1364 > > FileSystemChange.Changed ("file1.txt", Some "1b") 00:01:47 v #1365 > > FileSystemChange.Changed ("file2.txt", Some "2b") 00:01:47 v #1366 > > 00:01:47 v #1367 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b")) 00:01:47 v #1368 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b")) 00:01:47 v #1369 > > 00:01:47 v #1370 > > FileSystemChange.Changed ("file_1.txt", Some "1c") 00:01:47 v #1371 > > FileSystemChange.Changed ("file_2.txt", Some "2c") 00:01:47 v #1372 > > 00:01:47 v #1373 > > FileSystemChange.Deleted "file_1.txt" 00:01:47 v #1374 > > FileSystemChange.Deleted "file_2.txt" 00:01:47 v #1375 > > ]] 00:01:47 v #1376 > > 00:01:47 v #1377 > > run 00:01:47 v #1378 > > |> retry_fn 5 00:01:47 v #1379 > > |> _assertEqual (Some ()) 00:01:58 v #1380 > > 00:01:58 v #1381 > > ╭─[ 10.59s - stdout ]──────────────────────────────────────────────────────────╮ 00:01:58 v #1382 > > │ Some () │ 00:01:58 v #1383 > > │ │ 00:01:58 v #1384 > > │ 00:00:16 d #3 FileSystem.watchWithFilter / Disposing watch stream / │ 00:01:58 v #1385 > > │ filter: FileName, LastWrite │ 00:01:58 v #1386 > > │ 00:00:16 d #4 FileSystem.testEventsRaw / eventsLog: │ 00:01:58 v #1387 > > │ 0 / 638711276242301618 / Created │ 00:01:58 v #1388 > > │ ("file1.txt", │ 00:01:58 v #1389 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:58 v #1390 > > │ 1 / 638711276242301619 / Changed │ 00:01:58 v #1391 > > │ ("file1.txt", │ 00:01:58 v #1392 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:58 v #1393 > > │ 38027 / 638711276242339646 / Changed │ 00:01:58 v #1394 > > │ ("file1.txt...11111111111111111111111111111111111111111111111a") │ 00:01:58 v #1395 > > │ 14127 / 638711276242353773 / Created │ 00:01:58 v #1396 > > │ ("file2.txt...22222222222222222222222222222222222222222222222a") │ 00:01:58 v #1397 > > │ 1 / 638711276242353774 / Changed │ 00:01:58 v #1398 > > │ ("file2.txt", │ 00:01:58 v #1399 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:58 v #1400 > > │ 44436 / 638711276242398210 / Changed │ 00:01:58 v #1401 > > │ ("file2.txt...22222222222222222222222222222222222222222222222a") │ 00:01:58 v #1402 > > │ 15122083 / 638711276257520293 / Changed │ 00:01:58 v #1403 > > │ ("file1....11111111111111111111111111111111111111111111111b") │ 00:01:58 v #1404 > > │ 172230 / 638711276257692523 / Changed │ 00:01:58 v #1405 > > │ ("file1.tx...11111111111111111111111111111111111111111111111b") │ 00:01:58 v #1406 > > │ 47108 / 638711276257739631 / Changed │ 00:01:58 v #1407 > > │ ("file2.txt...22222222222222222222222222222222222222222222222b") │ 00:01:58 v #1408 > > │ 86107 / 638711276257825738 / Changed │ 00:01:58 v #1409 > > │ ("file2.txt...22222222222222222222222222222222222222222222222b") │ 00:01:58 v #1410 > > │ 15032306 / 638711276272858044 / Renamed │ 00:01:58 v #1411 > > │ ("file1....1111111111111111111111111111111111111111111111b")) │ 00:01:58 v #1412 > > │ 2860 / 638711276272860904 / Renamed │ 00:01:58 v #1413 > > │ ("file2.txt"...2222222222222222222222222222222222222222222222b")) │ 00:01:58 v #1414 > > │ 15116127 / 638711276287977031 / Changed │ 00:01:58 v #1415 > > │ ("file_1...11111111111111111111111111111111111111111111111c") │ 00:01:58 v #1416 > > │ 95835 / 638711276288072866 / Changed │ 00:01:58 v #1417 > > │ ("file_1.tx...11111111111111111111111111111111111111111111111c") │ 00:01:58 v #1418 > > │ 54340 / 638711276288127206 / Changed │ 00:01:58 v #1419 > > │ ("file_2.tx...22222222222222222222222222222222222222222222222c") │ 00:01:58 v #1420 > > │ 134643 / 638711276288261849 / Changed │ 00:01:58 v #1421 > > │ ("file_2.t...22222222222222222222222222222222222222222222222c") │ 00:01:58 v #1422 > > │ 15115871 / 638711276303377720 / Deleted "file_1.txt" │ 00:01:58 v #1423 > > │ 6670 / 638711276303384390 / Deleted "file_2.txt" │ 00:01:58 v #1424 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some "1a"); Created │ 00:01:58 v #1425 > > │ ("file2.txt", Some "2a"); │ 00:01:58 v #1426 > > │ Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some "1b"); Changed │ 00:01:58 v #1427 > > │ ("file2.txt", Some "2b"); │ 00:01:58 v #1428 > > │ Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed ("file2.txt", │ 00:01:58 v #1429 > > │ ("file_2.txt", Some "2b")); │ 00:01:58 v #1430 > > │ Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt", Some "2c"); │ 00:01:58 v #1431 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"] │ 00:01:58 v #1432 > > │ │ 00:01:58 v #1433 > > │ Some () │ 00:01:58 v #1434 > > │ │ 00:01:58 v #1435 > > │ │ 00:01:58 v #1436 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:58 v #1437 > > 00:01:58 v #1438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:58 v #1439 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:58 v #1440 > > │ ### testEventsSorted (test) │ 00:01:58 v #1441 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:58 v #1442 > > 00:01:58 v #1443 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:58 v #1444 > > //// test 00:01:58 v #1445 > > 00:01:58 v #1446 > > let inline sortEvent event = 00:01:58 v #1447 > > match event with 00:01:58 v #1448 > > | FileSystemChange.Failure _ -> 0 00:01:58 v #1449 > > | FileSystemChange.Created _ -> 1 00:01:58 v #1450 > > | FileSystemChange.Changed _ -> 2 00:01:58 v #1451 > > | FileSystemChange.Renamed (_oldPath, _) -> 3 00:01:58 v #1452 > > | FileSystemChange.Deleted _ -> 4 00:01:58 v #1453 > > 00:01:58 v #1454 > > let inline formatEvents events = 00:01:58 v #1455 > > events 00:01:58 v #1456 > > |> Seq.toList 00:01:58 v #1457 > > |> List.sortBy (snd >> sortEvent) 00:01:58 v #1458 > > |> List.choose (fun (ticks, event) -> 00:01:58 v #1459 > > match event with 00:01:58 v #1460 > > | FileSystemChange.Failure _ -> 00:01:58 v #1461 > > None 00:01:58 v #1462 > > | FileSystemChange.Changed (path, _) -> 00:01:58 v #1463 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:58 v #1464 > > FileSystemChangeType.Changed) 00:01:58 v #1465 > > | FileSystemChange.Created (path, _) -> 00:01:58 v #1466 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:58 v #1467 > > FileSystemChangeType.Created) 00:01:58 v #1468 > > | FileSystemChange.Deleted path -> 00:01:58 v #1469 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:58 v #1470 > > FileSystemChangeType.Deleted) 00:01:58 v #1471 > > | FileSystemChange.Renamed (_oldPath, (path, _)) -> 00:01:58 v #1472 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:58 v #1473 > > FileSystemChangeType.Renamed) 00:01:58 v #1474 > > ) 00:01:58 v #1475 > > |> List.sortBy (fun (_, path, _) -> path) 00:01:58 v #1476 > > |> List.distinctBy (fun (_, path, event) -> path, event) 00:01:58 v #1477 > > 00:01:58 v #1478 > > let inline testEventsSorted 00:01:58 v #1479 > > (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * 00:01:58 v #1480 > > IDisposable) 00:01:58 v #1481 > > write 00:01:58 v #1482 > > = 00:01:58 v #1483 > > let struct (tempDir, tempDisposable) = 00:01:58 v #1484 > > "FileSystem.testEventsSorted" 00:01:58 v #1485 > > |> SpiralCrypto.hash_text 00:01:58 v #1486 > > |> SpiralFileSystem.create_temp_dir' 00:01:58 v #1487 > > let stream, disposable = watchFn tempDir 00:01:58 v #1488 > > 00:01:58 v #1489 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:58 v #1490 > > 00:01:58 v #1491 > > let inline iter () = 00:01:58 v #1492 > > stream 00:01:58 v #1493 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:58 v #1494 > > events.Add event }) 00:01:58 v #1495 > > 00:01:58 v #1496 > > let run = async { 00:01:58 v #1497 > > let! _ = iter () |> Async.StartChild 00:01:58 v #1498 > > do! Async.Sleep 250 00:01:58 v #1499 > > return! write tempDir 00:01:58 v #1500 > > } 00:01:58 v #1501 > > 00:01:58 v #1502 > > try 00:01:58 v #1503 > > run 00:01:58 v #1504 > > |> Async.runWithTimeout 5000 00:01:58 v #1505 > > |> _assertEqual (Some ()) 00:01:58 v #1506 > > finally 00:01:58 v #1507 > > disposable.Dispose () 00:01:58 v #1508 > > tempDisposable.Dispose () 00:01:58 v #1509 > > 00:01:58 v #1510 > > let events = formatEvents events 00:01:58 v #1511 > > 00:01:58 v #1512 > > let eventMap = 00:01:58 v #1513 > > events 00:01:58 v #1514 > > |> List.map (fun (ticks, path, event) -> path, (event, ticks)) 00:01:58 v #1515 > > |> List.groupBy fst 00:01:58 v #1516 > > |> List.map (fun (path, events) -> 00:01:58 v #1517 > > let event, _ticks = 00:01:58 v #1518 > > events 00:01:58 v #1519 > > |> List.map snd 00:01:58 v #1520 > > |> List.sortByDescending snd 00:01:58 v #1521 > > |> List.head 00:01:58 v #1522 > > 00:01:58 v #1523 > > path, event 00:01:58 v #1524 > > ) 00:01:58 v #1525 > > |> Map.ofList 00:01:58 v #1526 > > 00:01:58 v #1527 > > let eventList = 00:01:58 v #1528 > > events 00:01:58 v #1529 > > |> List.map (fun (_ticks, path, event) -> path, event) 00:01:58 v #1530 > > 00:01:58 v #1531 > > eventMap, eventList 00:01:58 v #1532 > > 00:01:58 v #1533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:58 v #1534 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:58 v #1535 > > │ #### create and delete (test) │ 00:01:58 v #1536 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:58 v #1537 > > 00:01:58 v #1538 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:58 v #1539 > > //// test 00:01:58 v #1540 > > 00:01:58 v #1541 > > let inline write path = async { 00:01:58 v #1542 > > let n = 3 00:01:58 v #1543 > > 00:01:58 v #1544 > > for i = 1 to n do 00:01:58 v #1545 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:58 v #1546 > > $"file{i}.txt") 00:01:58 v #1547 > > 00:01:58 v #1548 > > for i = 1 to n do 00:01:58 v #1549 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:01:58 v #1550 > > Async.Ignore 00:01:58 v #1551 > > 00:01:58 v #1552 > > do! Async.Sleep 150 00:01:58 v #1553 > > } 00:01:58 v #1554 > > 00:01:58 v #1555 > > let inline run () = 00:01:58 v #1556 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:58 v #1557 > > write 00:01:58 v #1558 > > 00:01:58 v #1559 > > [[ 00:01:58 v #1560 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:58 v #1561 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:58 v #1562 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1563 > > 00:01:58 v #1564 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:58 v #1565 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:58 v #1566 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1567 > > 00:01:58 v #1568 > > "file3.txt", nameof FileSystemChangeType.Created 00:01:58 v #1569 > > "file3.txt", nameof FileSystemChangeType.Changed 00:01:58 v #1570 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1571 > > ]] 00:01:58 v #1572 > > |> _sequenceEqual eventList 00:01:58 v #1573 > > 00:01:58 v #1574 > > [[ 00:01:58 v #1575 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1576 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1577 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:58 v #1578 > > ]] 00:01:58 v #1579 > > |> Map.ofList 00:01:58 v #1580 > > |> _sequenceEqual eventMap 00:01:58 v #1581 > > 00:01:58 v #1582 > > run 00:01:58 v #1583 > > |> retry_fn 3 00:01:58 v #1584 > > |> _assertEqual (Some ()) 00:02:00 v #1585 > > 00:02:00 v #1586 > > ╭─[ 1.85s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:00 v #1587 > > │ Some () │ 00:02:00 v #1588 > > │ │ 00:02:00 v #1589 > > │ 00:00:18 d #5 FileSystem.watchWithFilter / Disposing watch stream / │ 00:02:00 v #1590 > > │ filter: FileName, LastWrite │ 00:02:00 v #1591 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt", │ 00:02:00 v #1592 > > │ "Deleted"); ("file2.txt", "Created"); │ 00:02:00 v #1593 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted"); ("file3.txt", │ 00:02:00 v #1594 > > │ "Created"); ("file3.txt", "Changed"); │ 00:02:00 v #1595 > > │ ("file3.txt", "Deleted")] │ 00:02:00 v #1596 > > │ │ 00:02:00 v #1597 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted"); ("file3.txt", │ 00:02:00 v #1598 > > │ "Deleted")] │ 00:02:00 v #1599 > > │ │ 00:02:00 v #1600 > > │ Some () │ 00:02:00 v #1601 > > │ │ 00:02:00 v #1602 > > │ │ 00:02:00 v #1603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #1604 > > 00:02:00 v #1605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:00 v #1606 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:00 v #1607 > > │ #### change (test) │ 00:02:00 v #1608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #1609 > > 00:02:00 v #1610 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:00 v #1611 > > //// test 00:02:00 v #1612 > > 00:02:00 v #1613 > > let inline write path = async { 00:02:00 v #1614 > > let n = 2 00:02:00 v #1615 > > 00:02:00 v #1616 > > for i = 1 to n do 00:02:00 v #1617 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:02:00 v #1618 > > $"file{i}.txt") 00:02:00 v #1619 > > 00:02:00 v #1620 > > for i = 1 to n do 00:02:00 v #1621 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:02:00 v #1622 > > $"file{i}.txt") 00:02:00 v #1623 > > 00:02:00 v #1624 > > for i = 1 to n do 00:02:00 v #1625 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:02:00 v #1626 > > Async.Ignore 00:02:00 v #1627 > > 00:02:00 v #1628 > > do! Async.Sleep 150 00:02:00 v #1629 > > } 00:02:00 v #1630 > > 00:02:00 v #1631 > > let inline run () = 00:02:00 v #1632 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:02:00 v #1633 > > write 00:02:00 v #1634 > > 00:02:00 v #1635 > > [[ 00:02:00 v #1636 > > "file1.txt", nameof FileSystemChangeType.Created 00:02:00 v #1637 > > "file1.txt", nameof FileSystemChangeType.Changed 00:02:00 v #1638 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:02:00 v #1639 > > 00:02:00 v #1640 > > "file2.txt", nameof FileSystemChangeType.Created 00:02:00 v #1641 > > "file2.txt", nameof FileSystemChangeType.Changed 00:02:00 v #1642 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:02:00 v #1643 > > ]] 00:02:00 v #1644 > > |> _sequenceEqual eventList 00:02:00 v #1645 > > 00:02:00 v #1646 > > [[ 00:02:00 v #1647 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:02:00 v #1648 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:02:00 v #1649 > > ]] 00:02:00 v #1650 > > |> Map.ofList 00:02:00 v #1651 > > |> _sequenceEqual eventMap 00:02:00 v #1652 > > 00:02:00 v #1653 > > run 00:02:00 v #1654 > > |> retry_fn 3 00:02:00 v #1655 > > |> _assertEqual (Some ()) 00:02:02 v #1656 > > 00:02:02 v #1657 > > ╭─[ 1.99s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:02 v #1658 > > │ Some () │ 00:02:02 v #1659 > > │ │ 00:02:02 v #1660 > > │ 00:00:20 d #6 FileSystem.watchWithFilter / Disposing watch stream / │ 00:02:02 v #1661 > > │ filter: FileName, LastWrite │ 00:02:02 v #1662 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt", │ 00:02:02 v #1663 > > │ "Deleted"); ("file2.txt", "Created"); │ 00:02:02 v #1664 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted")] │ 00:02:02 v #1665 > > │ │ 00:02:02 v #1666 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")] │ 00:02:02 v #1667 > > │ │ 00:02:02 v #1668 > > │ Some () │ 00:02:02 v #1669 > > │ │ 00:02:02 v #1670 > > │ │ 00:02:02 v #1671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:02 v #1672 > > 00:02:02 v #1673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 v #1674 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:02 v #1675 > > │ #### rename (test) │ 00:02:02 v #1676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:02 v #1677 > > 00:02:02 v #1678 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:02 v #1679 > > //// test 00:02:02 v #1680 > > 00:02:02 v #1681 > > let inline write path = async { 00:02:02 v #1682 > > let n = 2 00:02:02 v #1683 > > 00:02:02 v #1684 > > for i = 1 to n do 00:02:02 v #1685 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:02:02 v #1686 > > $"file{i}.txt") 00:02:02 v #1687 > > 00:02:02 v #1688 > > for i = 1 to n do 00:02:02 v #1689 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:02:02 v #1690 > > </> $"file_{i}.txt") |> Async.Ignore 00:02:02 v #1691 > > 00:02:02 v #1692 > > for i = 1 to n do 00:02:02 v #1693 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:02:02 v #1694 > > Async.Ignore 00:02:02 v #1695 > > 00:02:02 v #1696 > > do! Async.Sleep 150 00:02:02 v #1697 > > } 00:02:02 v #1698 > > 00:02:02 v #1699 > > let inline run () = 00:02:02 v #1700 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:02:02 v #1701 > > write 00:02:02 v #1702 > > 00:02:02 v #1703 > > [[ 00:02:02 v #1704 > > "file1.txt", nameof FileSystemChangeType.Created 00:02:02 v #1705 > > "file1.txt", nameof FileSystemChangeType.Changed 00:02:02 v #1706 > > "file2.txt", nameof FileSystemChangeType.Created 00:02:02 v #1707 > > "file2.txt", nameof FileSystemChangeType.Changed 00:02:02 v #1708 > > 00:02:02 v #1709 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:02:02 v #1710 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:02:02 v #1711 > > 00:02:02 v #1712 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:02:02 v #1713 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:02:02 v #1714 > > ]] 00:02:02 v #1715 > > |> _sequenceEqual eventList 00:02:02 v #1716 > > 00:02:02 v #1717 > > [[ 00:02:02 v #1718 > > "file1.txt", nameof FileSystemChangeType.Changed 00:02:02 v #1719 > > "file2.txt", nameof FileSystemChangeType.Changed 00:02:02 v #1720 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:02:02 v #1721 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:02:02 v #1722 > > ]] 00:02:02 v #1723 > > |> Map.ofList 00:02:02 v #1724 > > |> _sequenceEqual eventMap 00:02:02 v #1725 > > 00:02:02 v #1726 > > run 00:02:02 v #1727 > > |> retry_fn 3 00:02:02 v #1728 > > |> _assertEqual (Some ()) 00:02:04 v #1729 > > 00:02:04 v #1730 > > ╭─[ 2.25s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:04 v #1731 > > │ Some () │ 00:02:04 v #1732 > > │ │ 00:02:04 v #1733 > > │ 00:00:23 d #7 FileSystem.watchWithFilter / Disposing watch stream / │ 00:02:04 v #1734 > > │ filter: FileName, LastWrite │ 00:02:04 v #1735 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt", │ 00:02:04 v #1736 > > │ "Created"); ("file2.txt", "Changed"); │ 00:02:04 v #1737 > > │ ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted"); ("file_2.txt", │ 00:02:04 v #1738 > > │ "Renamed"); ("file_2.txt", "Deleted")] │ 00:02:04 v #1739 > > │ │ 00:02:04 v #1740 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt", │ 00:02:04 v #1741 > > │ "Deleted"); ("file_2.txt", "Deleted")] │ 00:02:04 v #1742 > > │ │ 00:02:04 v #1743 > > │ Some () │ 00:02:04 v #1744 > > │ │ 00:02:04 v #1745 > > │ │ 00:02:04 v #1746 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:04 v #1747 > > 00:02:04 v #1748 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:04 v #1749 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:04 v #1750 > > │ #### full (test) │ 00:02:04 v #1751 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:04 v #1752 > > 00:02:04 v #1753 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:04 v #1754 > > //// test 00:02:04 v #1755 > > 00:02:04 v #1756 > > let inline write path = async { 00:02:04 v #1757 > > let n = 2 00:02:04 v #1758 > > 00:02:04 v #1759 > > for i = 1 to n do 00:02:04 v #1760 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:02:04 v #1761 > > $"file{i}.txt") 00:02:04 v #1762 > > 00:02:04 v #1763 > > for i = 1 to n do 00:02:04 v #1764 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:02:04 v #1765 > > $"file{i}.txt") 00:02:04 v #1766 > > 00:02:04 v #1767 > > for i = 1 to n do 00:02:04 v #1768 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:02:04 v #1769 > > </> $"file_{i}.txt") |> Async.Ignore 00:02:04 v #1770 > > 00:02:04 v #1771 > > for i = 1 to n do 00:02:04 v #1772 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:02:04 v #1773 > > $"file_{i}.txt") 00:02:04 v #1774 > > 00:02:04 v #1775 > > for i = 1 to n do 00:02:04 v #1776 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:02:04 v #1777 > > Async.Ignore 00:02:04 v #1778 > > 00:02:04 v #1779 > > do! Async.Sleep 150 00:02:04 v #1780 > > } 00:02:04 v #1781 > > 00:02:04 v #1782 > > let inline run () = 00:02:04 v #1783 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:02:04 v #1784 > > write 00:02:04 v #1785 > > 00:02:04 v #1786 > > [[ 00:02:04 v #1787 > > "file1.txt", nameof FileSystemChangeType.Created 00:02:04 v #1788 > > "file1.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1789 > > "file2.txt", nameof FileSystemChangeType.Created 00:02:04 v #1790 > > "file2.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1791 > > 00:02:04 v #1792 > > "file_1.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1793 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:02:04 v #1794 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:02:04 v #1795 > > 00:02:04 v #1796 > > "file_2.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1797 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:02:04 v #1798 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:02:04 v #1799 > > ]] 00:02:04 v #1800 > > |> _sequenceEqual eventList 00:02:04 v #1801 > > 00:02:04 v #1802 > > [[ 00:02:04 v #1803 > > "file1.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1804 > > "file2.txt", nameof FileSystemChangeType.Changed 00:02:04 v #1805 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:02:04 v #1806 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:02:04 v #1807 > > ]] 00:02:04 v #1808 > > |> Map.ofList 00:02:04 v #1809 > > |> _sequenceEqual eventMap 00:02:04 v #1810 > > 00:02:04 v #1811 > > run 00:02:04 v #1812 > > |> retry_fn 3 00:02:04 v #1813 > > |> _assertEqual (Some ()) 00:02:07 v #1814 > > 00:02:07 v #1815 > > ╭─[ 2.55s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:07 v #1816 > > │ Some () │ 00:02:07 v #1817 > > │ │ 00:02:07 v #1818 > > │ 00:00:25 d #8 FileSystem.watchWithFilter / Disposing watch stream / │ 00:02:07 v #1819 > > │ filter: FileName, LastWrite │ 00:02:07 v #1820 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt", │ 00:02:07 v #1821 > > │ "Created"); ("file2.txt", "Changed"); │ 00:02:07 v #1822 > > │ ("file_1.txt", "Changed"); ("file_1.txt", "Renamed"); ("file_1.txt", │ 00:02:07 v #1823 > > │ "Deleted"); ("file_2.txt", "Changed"); │ 00:02:07 v #1824 > > │ ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")] │ 00:02:07 v #1825 > > │ │ 00:02:07 v #1826 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt", │ 00:02:07 v #1827 > > │ "Deleted"); ("file_2.txt", "Deleted")] │ 00:02:07 v #1828 > > │ │ 00:02:07 v #1829 > > │ Some () │ 00:02:07 v #1830 > > │ │ 00:02:07 v #1831 > > │ │ 00:02:07 v #1832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:07 v #1833 > 00:00:42 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 36872 } 00:02:07 v #1834 > 00:00:42 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:08 v #1835 > 00:00:43 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/FileSystem.dib.ipynb to html 00:02:08 v #1836 > 00:00:43 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:08 v #1837 > 00:00:43 v #7 ! validate(nb) 00:02:09 v #1838 > 00:00:44 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:09 v #1839 > 00:00:44 v #9 ! return _pygments_highlight( 00:02:10 v #1840 > 00:00:44 v #10 ! [NbConvertApp] Writing 383447 bytes to c:\home\git\polyglot\lib\fsharp\FileSystem.dib.html 00:02:10 v #1841 > 00:00:44 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 } 00:02:10 v #1842 > 00:00:44 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 } 00:02:10 v #1843 > 00:00:44 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:10 v #1844 > 00:00:45 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:10 v #1845 > 00:00:45 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:10 v #1846 > 00:00:45 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 37793 } 00:02:10 d #1847 runtime.execute_with_options_async / { exit_code = 0; output_length = 42206 } 00:02:10 d #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path FileSystem.dib --retries 3 00:02:10 d #1848 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:10 v #1849 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) } 00:02:10 v #1850 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/fsharp/Runtime.dib", "--output-path", "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/fsharp/Runtime.dib" --output-path "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:02:12 v #1851 > > 00:02:12 v #1852 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:12 v #1853 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:12 v #1854 > > │ # Runtime (Polyglot) │ 00:02:12 v #1855 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:16 v #1856 > > 00:02:16 v #1857 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:16 v #1858 > > #r 00:02:16 v #1859 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:02:16 v #1860 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:02:16 v #1861 > > #r 00:02:16 v #1862 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:02:16 v #1863 > > 0/System.Reactive.dll" 00:02:16 v #1864 > > #r 00:02:16 v #1865 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:02:16 v #1866 > > netstandard2.0/System.Reactive.Linq.dll" 00:02:16 v #1867 > > #r 00:02:16 v #1868 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:02:28 v #1869 > > 00:02:28 v #1870 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1871 > > #if !INTERACTIVE 00:02:28 v #1872 > > open Lib 00:02:28 v #1873 > > #endif 00:02:28 v #1874 > > 00:02:28 v #1875 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1876 > > open Common 00:02:28 v #1877 > > 00:02:28 v #1878 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1879 > > //// test 00:02:28 v #1880 > > 00:02:28 v #1881 > > open SpiralFileSystem.Operators 00:02:28 v #1882 > > 00:02:28 v #1883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:28 v #1884 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:28 v #1885 > > │ ## parseArgs │ 00:02:28 v #1886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:28 v #1887 > > 00:02:28 v #1888 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1889 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:28 v #1890 > > let assemblyName = 00:02:28 v #1891 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name 00:02:28 v #1892 > > let errorHandler : Argu.IExiter = 00:02:28 v #1893 > > if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |> 00:02:28 v #1894 > > List.contains assemblyName 00:02:28 v #1895 > > then Argu.ExceptionExiter () 00:02:28 v #1896 > > else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ -> 00:02:28 v #1897 > > Some System.ConsoleColor.Red) 00:02:28 v #1898 > > 00:02:28 v #1899 > > let parser = 00:02:28 v #1900 > > Argu.ArgumentParser.Create<'T> ( 00:02:28 v #1901 > > programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix 00:02:28 v #1902 > > ()}", 00:02:28 v #1903 > > errorHandler = errorHandler 00:02:28 v #1904 > > ) 00:02:28 v #1905 > > 00:02:28 v #1906 > > parser.ParseCommandLine args 00:02:28 v #1907 > > 00:02:28 v #1908 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1909 > > //// test 00:02:28 v #1910 > > 00:02:28 v #1911 > > [[<RequireQualifiedAccess>]] 00:02:28 v #1912 > > type Arguments = 00:02:28 v #1913 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:02:28 v #1914 > > Argu.ArguAttributes.Last>]] 00:02:28 v #1915 > > Paths of paths : string list 00:02:28 v #1916 > > 00:02:28 v #1917 > > interface Argu.IArgParserTemplate with 00:02:28 v #1918 > > member s.Usage = 00:02:28 v #1919 > > match s with 00:02:28 v #1920 > > | Paths _ -> nameof Paths 00:02:28 v #1921 > > 00:02:28 v #1922 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:28 v #1923 > > //// test 00:02:28 v #1924 > > 00:02:28 v #1925 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:02:29 v #1926 > > 00:02:29 v #1927 > > ╭─[ 119.26ms - return value ]──────────────────────────────────────────────────╮ 00:02:29 v #1928 > > │ "USAGE: dotnet-repl [--help] <paths>... │ 00:02:29 v #1929 > > │ │ 00:02:29 v #1930 > > │ PATHS: │ 00:02:29 v #1931 > > │ │ 00:02:29 v #1932 > > │ <paths>... Paths │ 00:02:29 v #1933 > > │ │ 00:02:29 v #1934 > > │ OPTIONS: │ 00:02:29 v #1935 > > │ │ 00:02:29 v #1936 > > │ --help display this list of options. │ 00:02:29 v #1937 > > │ " │ 00:02:29 v #1938 > > │ │ 00:02:29 v #1939 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #1940 > > 00:02:29 v #1941 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:29 v #1942 > > //// test 00:02:29 v #1943 > > 00:02:29 v #1944 > > fun () -> parseArgs<Arguments> [[||]] |> ignore 00:02:29 v #1945 > > |> _throwsC (fun ex _ -> 00:02:29 v #1946 > > SpiralSm.format_exception ex 00:02:29 v #1947 > > |> _stringContains "Argu.ArguParseException: ERROR: missing parameter 00:02:29 v #1948 > > '<paths>...'." 00:02:29 v #1949 > > ) 00:02:29 v #1950 > > 00:02:29 v #1951 > > ╭─[ 71.54ms - stdout ]─────────────────────────────────────────────────────────╮ 00:02:29 v #1952 > > │ <fun:it@3-3> │ 00:02:29 v #1953 > > │ │ 00:02:29 v #1954 > > │ "Argu.ArguParseException: ERROR: missing parameter '<paths>...'. │ 00:02:29 v #1955 > > │ USAGE: dotnet-repl.exe [--help] <paths>... │ 00:02:29 v #1956 > > │ │ 00:02:29 v #1957 > > │ PATHS: │ 00:02:29 v #1958 > > │ │ 00:02:29 v #1959 > > │ <paths>... Paths │ 00:02:29 v #1960 > > │ │ 00:02:29 v #1961 > > │ OPTIONS: │ 00:02:29 v #1962 > > │ │ 00:02:29 v #1963 > > │ --help display this list of options. │ 00:02:29 v #1964 > > │ " │ 00:02:29 v #1965 > > │ │ 00:02:29 v #1966 > > │ │ 00:02:29 v #1967 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #1968 > > 00:02:29 v #1969 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:29 v #1970 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:29 v #1971 > > args 00:02:29 v #1972 > > |> parseArgs<'T> 00:02:29 v #1973 > > |> fun results -> results.GetAllResults () 00:02:29 v #1974 > > 00:02:29 v #1975 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:29 v #1976 > > //// test 00:02:29 v #1977 > > 00:02:29 v #1978 > > [[<RequireQualifiedAccess>]] 00:02:29 v #1979 > > type Arguments = 00:02:29 v #1980 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:02:29 v #1981 > > Argu.ArguAttributes.Last>]] 00:02:29 v #1982 > > Paths of paths : string list 00:02:29 v #1983 > > 00:02:29 v #1984 > > interface Argu.IArgParserTemplate with 00:02:29 v #1985 > > member s.Usage = 00:02:29 v #1986 > > match s with 00:02:29 v #1987 > > | Paths _ -> nameof Paths 00:02:29 v #1988 > > 00:02:29 v #1989 > > parseAllArgs<Arguments> [[| "a b"; "c" |]] 00:02:29 v #1990 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]] 00:02:29 v #1991 > > 00:02:29 v #1992 > > ╭─[ 104.77ms - stdout ]────────────────────────────────────────────────────────╮ 00:02:29 v #1993 > > │ [Paths ["a b"; "c"]] │ 00:02:29 v #1994 > > │ │ 00:02:29 v #1995 > > │ │ 00:02:29 v #1996 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #1997 > > 00:02:29 v #1998 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:29 v #1999 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:29 v #2000 > > args 00:02:29 v #2001 > > |> parseAllArgs<'T> 00:02:29 v #2002 > > |> List.groupBy CommonFSharp.getUnionCaseName<'T> 00:02:29 v #2003 > > |> Map.ofList 00:02:29 v #2004 > > 00:02:29 v #2005 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:29 v #2006 > > //// test 00:02:29 v #2007 > > 00:02:29 v #2008 > > parseArgsMap<Arguments> [[| "a b"; "c" |]] 00:02:29 v #2009 > > |> _assertEqual ( 00:02:29 v #2010 > > [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]] 00:02:29 v #2011 > > |> Map.ofList 00:02:29 v #2012 > > ) 00:02:29 v #2013 > > 00:02:29 v #2014 > > ╭─[ 57.93ms - stdout ]─────────────────────────────────────────────────────────╮ 00:02:29 v #2015 > > │ map [("Paths", [Paths ["a b"; "c"]])] │ 00:02:29 v #2016 > > │ │ 00:02:29 v #2017 > > │ │ 00:02:29 v #2018 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #2019 > 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7590 } 00:02:29 v #2020 > 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:30 v #2021 > 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/fsharp/Runtime.dib.ipynb to html 00:02:30 v #2022 > 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:30 v #2023 > 00:00:19 v #7 ! validate(nb) 00:02:31 v #2024 > 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:31 v #2025 > 00:00:20 v #9 ! return _pygments_highlight( 00:02:31 v #2026 > 00:00:20 v #10 ! [NbConvertApp] Writing 292946 bytes to c:\home\git\polyglot\lib\fsharp\Runtime.dib.html 00:02:31 v #2027 > 00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:02:31 v #2028 > 00:00:20 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:02:31 v #2029 > 00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:31 v #2030 > 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:31 v #2031 > 00:00:21 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:31 v #2032 > 00:00:21 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8505 } 00:02:31 d #2033 runtime.execute_with_options_async / { exit_code = 0; output_length = 11415 } 00:02:31 d #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Runtime.dib --retries 3 00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Runtime.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib 00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib 00:00:00 d #1 writeDibCode / output: Fs / path: FileSystem.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Runtime.dib 00:00:00 d #3 parseDibCode / output: Fs / file: Common.dib 00:00:00 d #5 parseDibCode / output: Fs / file: Async.dib 00:00:00 d #5 parseDibCode / output: Fs / file: FileSystem.dib 00:00:00 d #3 parseDibCode / output: Fs / file: AsyncSeq.dib 00:00:00 d #3 parseDibCode / output: Fs / file: CommonFSharp.dib
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path spiral_builder.dib"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path spiral_builder.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_builder.dib"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib" --output-path "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # spiral_builder │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #9 > > 00:00:06 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 v #11 > > open file_system_operators 00:00:06 v #12 > > open rust.rust_operators 00:00:06 v #13 > > open rust 00:00:06 v #14 > > open sm'_operators 00:00:07 v #15 > > 00:00:07 v #16 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #17 > > //// test 00:00:07 v #18 > > 00:00:07 v #19 > > open testing 00:00:08 v #20 > > 00:00:08 v #21 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #23 > > │ ## get_args │ 00:00:08 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #25 > > 00:00:08 v #26 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #27 > > inl get_args () = 00:00:08 v #28 > > { 00:00:08 v #29 > > fsharp = "fsharp", { 00:00:08 v #30 > > spi_path = "spi-path", 's' 00:00:08 v #31 > > } 00:00:08 v #32 > > cuda = "cuda", { 00:00:08 v #33 > > py_path = "py-path", 'p' 00:00:08 v #34 > > env = "env", 'e' 00:00:08 v #35 > > deps = "deps", 'd' 00:00:08 v #36 > > } 00:00:08 v #37 > > fable = "fable", { 00:00:08 v #38 > > fs_path = "fs-path", 'f' 00:00:08 v #39 > > command = "command", 'c' 00:00:08 v #40 > > } 00:00:08 v #41 > > rust = "rust", { 00:00:08 v #42 > > fs_path = "fs-path", 'f' 00:00:08 v #43 > > deps = "deps", 'd' 00:00:08 v #44 > > wasm = "wasm", 'w' 00:00:08 v #45 > > contract = "contract", 'c' 00:00:08 v #46 > > cleanup = "cleanup", 'l' 00:00:08 v #47 > > } 00:00:08 v #48 > > typescript = "typescript", { 00:00:08 v #49 > > fs_path = "fs-path", 'f' 00:00:08 v #50 > > deps = "deps", 'd' 00:00:08 v #51 > > } 00:00:08 v #52 > > python = "python", { 00:00:08 v #53 > > fs_path = "fs-path", 'f' 00:00:08 v #54 > > deps = "deps", 'd' 00:00:08 v #55 > > } 00:00:08 v #56 > > dib = "dib", { 00:00:08 v #57 > > path = "path", 'p' 00:00:08 v #58 > > retries = "retries", 'r' 00:00:08 v #59 > > working_directory = "working-directory", 'w' 00:00:08 v #60 > > } 00:00:08 v #61 > > } 00:00:08 v #62 > > 00:00:08 v #63 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #64 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #65 > > │ ## cuda_env │ 00:00:08 v #66 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #67 > > 00:00:08 v #68 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #69 > > union cuda_env = 00:00:08 v #70 > > | Pip 00:00:08 v #71 > > | Poetry 00:00:09 v #72 > > 00:00:09 v #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #75 > > │ ## get_command │ 00:00:09 v #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #77 > > 00:00:09 v #78 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #79 > > let get_command () = 00:00:09 v #80 > > ##"command" 00:00:09 v #81 > > |> runtime.new_command 00:00:09 v #82 > > |> runtime.command_subcommand_required true 00:00:09 v #83 > > |> runtime.command_subcommand ( 00:00:09 v #84 > > ##(get_args () .fsharp |> fst) 00:00:09 v #85 > > |> runtime.new_command 00:00:09 v #86 > > |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) ( 00:00:09 v #87 > > runtime.arg_required true 00:00:09 v #88 > > ) 00:00:09 v #89 > > ) 00:00:09 v #90 > > |> runtime.command_subcommand ( 00:00:09 v #91 > > ##(get_args () .cuda |> fst) 00:00:09 v #92 > > |> runtime.new_command 00:00:09 v #93 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) ( 00:00:09 v #94 > > runtime.arg_required true 00:00:09 v #95 > > ) 00:00:09 v #96 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).env) ( 00:00:09 v #97 > > real runtime.arg_union `cuda_env ignore 00:00:09 v #98 > > ) 00:00:09 v #99 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) ( 00:00:09 v #100 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:09 v #101 > > >> runtime.arg_num_args_range ( 00:00:09 v #102 > > runtime.new_value_range 00:00:09 v #103 > > false 00:00:09 v #104 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:09 v #105 > > (am'.End eval) 00:00:09 v #106 > > ) 00:00:09 v #107 > > >> runtime.arg_action runtime.Append 00:00:09 v #108 > > ) 00:00:09 v #109 > > ) 00:00:09 v #110 > > |> runtime.command_subcommand ( 00:00:09 v #111 > > ##(get_args () .fable |> fst) 00:00:09 v #112 > > |> runtime.new_command 00:00:09 v #113 > > |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) ( 00:00:09 v #114 > > runtime.arg_required true 00:00:09 v #115 > > ) 00:00:09 v #116 > > |> runtime.command_init_arg ((get_args () .fable |> snd).command) ( 00:00:09 v #117 > > id 00:00:09 v #118 > > ) 00:00:09 v #119 > > ) 00:00:09 v #120 > > |> runtime.command_subcommand ( 00:00:09 v #121 > > ##(get_args () .rust |> fst) 00:00:09 v #122 > > |> runtime.new_command 00:00:09 v #123 > > |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) ( 00:00:09 v #124 > > runtime.arg_required true 00:00:09 v #125 > > ) 00:00:09 v #126 > > |> runtime.command_init_arg ((get_args () .rust |> snd).deps) ( 00:00:09 v #127 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:09 v #128 > > >> runtime.arg_num_args_range ( 00:00:09 v #129 > > runtime.new_value_range 00:00:09 v #130 > > false 00:00:09 v #131 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:09 v #132 > > (am'.End eval) 00:00:09 v #133 > > ) 00:00:09 v #134 > > >> runtime.arg_action runtime.Append 00:00:09 v #135 > > ) 00:00:09 v #136 > > |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) ( 00:00:09 v #137 > > runtime.arg_num_args_range ( 00:00:09 v #138 > > runtime.new_value_range 00:00:09 v #139 > > true 00:00:09 v #140 > > (am'.End eval) 00:00:09 v #141 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:09 v #142 > > ) 00:00:09 v #143 > > >> runtime.arg_require_equals true 00:00:09 v #144 > > >> runtime.arg_default_missing_value "" 00:00:09 v #145 > > ) 00:00:09 v #146 > > |> runtime.command_init_arg ((get_args () .rust |> snd).contract) ( 00:00:09 v #147 > > runtime.arg_num_args_range ( 00:00:09 v #148 > > runtime.new_value_range 00:00:09 v #149 > > true 00:00:09 v #150 > > (am'.End eval) 00:00:09 v #151 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:09 v #152 > > ) 00:00:09 v #153 > > >> runtime.arg_require_equals true 00:00:09 v #154 > > >> runtime.arg_default_missing_value "" 00:00:09 v #155 > > ) 00:00:09 v #156 > > |> runtime.command_init_arg ((get_args () .rust |> snd).cleanup) ( 00:00:09 v #157 > > runtime.arg_default_value "true" 00:00:09 v #158 > > >> runtime.arg_action runtime.SetFalse 00:00:09 v #159 > > ) 00:00:09 v #160 > > ) 00:00:09 v #161 > > |> runtime.command_subcommand ( 00:00:09 v #162 > > ##(get_args () .typescript |> fst) 00:00:09 v #163 > > |> runtime.new_command 00:00:09 v #164 > > |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) ( 00:00:09 v #165 > > runtime.arg_required true 00:00:09 v #166 > > ) 00:00:09 v #167 > > |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) ( 00:00:09 v #168 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:09 v #169 > > >> runtime.arg_num_args_range ( 00:00:09 v #170 > > runtime.new_value_range 00:00:09 v #171 > > false 00:00:09 v #172 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:09 v #173 > > (am'.End eval) 00:00:09 v #174 > > ) 00:00:09 v #175 > > >> runtime.arg_action runtime.Append 00:00:09 v #176 > > ) 00:00:09 v #177 > > ) 00:00:09 v #178 > > |> runtime.command_subcommand ( 00:00:09 v #179 > > ##(get_args () .python |> fst) 00:00:09 v #180 > > |> runtime.new_command 00:00:09 v #181 > > |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) ( 00:00:09 v #182 > > runtime.arg_required true 00:00:09 v #183 > > ) 00:00:09 v #184 > > |> runtime.command_init_arg ((get_args () .python |> snd).deps) ( 00:00:09 v #185 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:09 v #186 > > >> runtime.arg_num_args_range ( 00:00:09 v #187 > > runtime.new_value_range 00:00:09 v #188 > > false 00:00:09 v #189 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:09 v #190 > > (am'.End eval) 00:00:09 v #191 > > ) 00:00:09 v #192 > > >> runtime.arg_action runtime.Append 00:00:09 v #193 > > ) 00:00:09 v #194 > > ) 00:00:09 v #195 > > |> runtime.command_subcommand ( 00:00:09 v #196 > > ##(get_args () .dib |> fst) 00:00:09 v #197 > > |> runtime.new_command 00:00:09 v #198 > > |> runtime.command_init_arg ((get_args () .dib |> snd).path) ( 00:00:09 v #199 > > runtime.arg_required true 00:00:09 v #200 > > // >> runtime.arg_value_parser (runtime.value_parser_path_buf ()) 00:00:09 v #201 > > ) 00:00:09 v #202 > > |> runtime.command_init_arg ((get_args () .dib |> snd).retries) ( 00:00:09 v #203 > > runtime.arg_value_parser (runtime.value_parser_expr "u8") 00:00:09 v #204 > > ) 00:00:09 v #205 > > |> runtime.command_init_arg ((get_args () .dib |> 00:00:09 v #206 > > snd).working_directory) ( 00:00:09 v #207 > > id 00:00:09 v #208 > > ) 00:00:09 v #209 > > ) 00:00:09 v #210 > > 00:00:09 v #211 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #212 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #213 > > │ ## fable │ 00:00:09 v #214 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #215 > > 00:00:09 v #216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #218 > > │ ### fable_target │ 00:00:09 v #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #220 > > 00:00:09 v #221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #222 > > union fable_target = 00:00:09 v #223 > > | Rust 00:00:09 v #224 > > | TypeScript 00:00:09 v #225 > > | Python 00:00:10 v #226 > > 00:00:10 v #227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #228 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #229 > > │ ### fable_runtime │ 00:00:10 v #230 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #231 > > 00:00:10 v #232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #233 > > union fable_runtime = 00:00:10 v #234 > > | Wasm : string 00:00:10 v #235 > > | Contract : string 00:00:10 v #236 > > 00:00:10 v #237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #238 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #239 > > │ ### execute_dotnet_fable │ 00:00:10 v #240 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #241 > > 00:00:10 v #242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #243 > > let execute_dotnet_fable { workspace_root_external fsproj_path extension 00:00:10 v #244 > > package_dir runtime } = 00:00:10 v #245 > > open runtime 00:00:10 v #246 > > execution_options fun x => { x with 00:00:10 v #247 > > command = 00:00:10 v #248 > > inl platform = 00:00:10 v #249 > > if platform.is_windows () 00:00:10 v #250 > > then "_WINDOWS" 00:00:10 v #251 > > else "_LINUX" 00:00:10 v #252 > > inl platform : string = $'$" --define {!platform}"' 00:00:10 v #253 > > inl runtime = 00:00:10 v #254 > > match runtime with 00:00:10 v #255 > > | Some (runtime : fable_runtime) => 00:00:10 v #256 > > inl runtime = runtime |> reflection.union_to_string |> 00:00:10 v #257 > > sm'.to_upper 00:00:10 v #258 > > $'$" --define {!runtime}"' 00:00:10 v #259 > > | None => "" 00:00:10 v #260 > > $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang 00:00:10 v #261 > > {!extension} --extension .{!extension} --outDir 00:00:10 v #262 > > \\\"{!package_dir}\\\"{!platform}{!runtime}"' 00:00:10 v #263 > > working_directory = workspace_root_external |> resultm.box |> 00:00:10 v #264 > > resultm.ok' 00:00:10 v #265 > > } 00:00:10 v #266 > > |> execute_retry 3u8 00:00:10 v #267 > > 00:00:10 v #268 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #269 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #270 > > │ ### get_package_dir │ 00:00:10 v #271 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #272 > > 00:00:10 v #273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #274 > > let get_package_dir { workspace_root target name hash } = 00:00:10 v #275 > > inl dir = workspace_root </> "target/spiral_builder" </> name 00:00:10 v #276 > > match hash, (target : option fable_target) with 00:00:10 v #277 > > | Some hash, Some target => dir </> "packages" </> (target |> 00:00:10 v #278 > > reflection.union_to_string) </> hash 00:00:10 v #279 > > | _ => dir 00:00:11 v #280 > > 00:00:11 v #281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #283 > > │ ### persist_code_project │ 00:00:11 v #284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #285 > > 00:00:11 v #286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #287 > > let persist_code_project { workspace_root package_dir packages modules name code 00:00:11 v #288 > > } = 00:00:11 v #289 > > package_dir |> file_system.create_dir |> ignore 00:00:11 v #290 > > 00:00:11 v #291 > > inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path 00:00:11 v #292 > > code |> file_system.write_all_text_exists fs_path 00:00:11 v #293 > > 00:00:11 v #294 > > inl modules_code = 00:00:11 v #295 > > modules 00:00:11 v #296 > > |> listm.map fun path => 00:00:11 v #297 > > inl path = workspace_root </> path 00:00:11 v #298 > > $'$"<Compile Include=\\\"{!path}\\\" />"' : string 00:00:11 v #299 > > |> listm'.box 00:00:11 v #300 > > |> seq.of_list' 00:00:11 v #301 > > |> sm'.concat "\\n " 00:00:11 v #302 > > 00:00:11 v #303 > > inl packages_code = 00:00:11 v #304 > > packages 00:00:11 v #305 > > |> listm.map fun (package : string) => 00:00:11 v #306 > > $'$"<PackageReference Include=\\\"{!package}\\\" Version=\\\"*\\\" 00:00:11 v #307 > > />"' : string 00:00:11 v #308 > > |> listm'.box 00:00:11 v #309 > > |> seq.of_list' 00:00:11 v #310 > > |> sm'.concat "\\n " 00:00:11 v #311 > > 00:00:11 v #312 > > inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |> 00:00:11 v #313 > > file_system.normalize_path 00:00:11 v #314 > > inl fsproj_code : string = 00:00:11 v #315 > > $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"' 00:00:11 v #316 > > +#. $'$"<PropertyGroup>"' 00:00:11 v #317 > > +#. $'$" <TargetFramework>net9.0</TargetFramework>"' 00:00:11 v #318 > > +#. $'$" <LangVersion>preview</LangVersion>"' 00:00:11 v #319 > > +#. $'$" <RollForward>Major</RollForward>"' 00:00:11 v #320 > > +#. $'$" <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"' 00:00:11 v #321 > > +#. $'$" <PublishAot>false</PublishAot>"' 00:00:11 v #322 > > +#. $'$" <PublishTrimmed>false</PublishTrimmed>"' 00:00:11 v #323 > > +#. $'$" <PublishSingleFile>true</PublishSingleFile>"' 00:00:11 v #324 > > +#. $'$" <SelfContained>true</SelfContained>"' 00:00:11 v #325 > > +#. $'$" <Version>0.0.1-alpha.1</Version>"' 00:00:11 v #326 > > +#. $'$" <OutputType>Exe</OutputType>"' 00:00:11 v #327 > > +#. $'$"</PropertyGroup>"' 00:00:11 v #328 > > 00:00:11 v #329 > > +#. $'$"<PropertyGroup 00:00:11 v #330 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"' 00:00:11 v #331 > > +#. $'$" <DefineConstants>_FREEBSD</DefineConstants>"' 00:00:11 v #332 > > +#. $'$"</PropertyGroup>"' 00:00:11 v #333 > > 00:00:11 v #334 > > +#. $'$"<PropertyGroup 00:00:11 v #335 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"' 00:00:11 v #336 > > +#. $'$" <DefineConstants>_LINUX</DefineConstants>"' 00:00:11 v #337 > > +#. $'$"</PropertyGroup>"' 00:00:11 v #338 > > 00:00:11 v #339 > > +#. $'$"<PropertyGroup 00:00:11 v #340 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"' 00:00:11 v #341 > > +#. $'$" <DefineConstants>_OSX</DefineConstants>"' 00:00:11 v #342 > > +#. $'$"</PropertyGroup>"' 00:00:11 v #343 > > 00:00:11 v #344 > > +#. $'$"<PropertyGroup 00:00:11 v #345 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"' 00:00:11 v #346 > > +#. $'$" <DefineConstants>_WINDOWS</DefineConstants>"' 00:00:11 v #347 > > +#. $'$"</PropertyGroup>"' 00:00:11 v #348 > > 00:00:11 v #349 > > +#. $'$"<ItemGroup>"' 00:00:11 v #350 > > +#. $'$" {!modules_code}"' 00:00:11 v #351 > > +#. $'$" <Compile Include=\\\"{!fs_path}\\\" />"' 00:00:11 v #352 > > +#. $'$"</ItemGroup>"' 00:00:11 v #353 > > 00:00:11 v #354 > > +#. $'$"<ItemGroup>"' 00:00:11 v #355 > > +#. $'$" {!packages_code}"' 00:00:11 v #356 > > +#. $'$"</ItemGroup>"' 00:00:11 v #357 > > 00:00:11 v #358 > > +#. $'$"</Project>"' 00:00:11 v #359 > > 00:00:11 v #360 > > fsproj_code |> file_system.write_all_text_exists fsproj_path 00:00:11 v #361 > > 00:00:11 v #362 > > fsproj_path 00:00:11 v #363 > > 00:00:11 v #364 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #365 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #366 > > │ ### build_project │ 00:00:11 v #367 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #368 > > 00:00:11 v #369 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #370 > > inl build_project runtime' output_dir path = 00:00:11 v #371 > > inl full_path = path |> file_system.get_full_path 00:00:11 v #372 > > inl file_dir = full_path |> file_system.directory_get_parent |> 00:00:11 v #373 > > optionm'.default_value' "" 00:00:11 v #374 > > inl extension = full_path |> file_system.get_extension 00:00:11 v #375 > > 00:00:11 v #376 > > trace Debug 00:00:11 v #377 > > fun () => "build_project" 00:00:11 v #378 > > fun () => { full_path } 00:00:11 v #379 > > 00:00:11 v #380 > > match extension with 00:00:11 v #381 > > | "fsproj" => () 00:00:11 v #382 > > | _ => failwith $'$"spiral_builder.build_project / Invalid project file 00:00:11 v #383 > > extension: {!extension}"' 00:00:11 v #384 > > 00:00:11 v #385 > > inl runtimes = 00:00:11 v #386 > > runtime' 00:00:11 v #387 > > |> optionm.map listm.singleton 00:00:11 v #388 > > |> optionm'.default_value [[ "linux-x64"; "win-x64" ]] 00:00:11 v #389 > > 00:00:11 v #390 > > inl output_dir = output_dir |> optionm'.default_value "dist" 00:00:11 v #391 > > 00:00:11 v #392 > > runtimes 00:00:11 v #393 > > |> listm.map fun runtime' => 00:00:11 v #394 > > runtime.execution_options fun x => { x with 00:00:11 v #395 > > command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration 00:00:11 v #396 > > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"' 00:00:11 v #397 > > working_directory = file_dir |> Some |> optionm'.box 00:00:11 v #398 > > } 00:00:11 v #399 > > |> runtime.execute_with_options 00:00:11 v #400 > > |> fst 00:00:11 v #401 > > |> listm'.sum 00:00:12 v #402 > > 00:00:12 v #403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #404 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #405 > > │ ### build_code │ 00:00:12 v #406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #407 > > 00:00:12 v #408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #409 > > inl build_code { workspace_root runtime packages modules output_dir name code } 00:00:12 v #410 > > = 00:00:12 v #411 > > inl package_dir = get_package_dir { workspace_root name target = None; hash 00:00:12 v #412 > > = None } 00:00:12 v #413 > > inl fsproj_path = persist_code_project { workspace_root package_dir packages 00:00:12 v #414 > > modules name code } 00:00:12 v #415 > > inl exit_code = fsproj_path |> build_project runtime output_dir 00:00:12 v #416 > > if exit_code <>. 0 then 00:00:12 v #417 > > trace Critical 00:00:12 v #418 > > fun () => "build_code" 00:00:12 v #419 > > fun () => { 00:00:12 v #420 > > code = code |> sm'.ellipsis_end 400 00:00:12 v #421 > > fsproj_text = fsproj_path |> file_system.read_all_text 00:00:12 v #422 > > } 00:00:12 v #423 > > exit_code 00:00:12 v #424 > > 00:00:12 v #425 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #426 > > //// test 00:00:12 v #427 > > ///! rust -d encoding_rs encoding_rs_io regex 00:00:12 v #428 > > 00:00:12 v #429 > > build_code { 00:00:12 v #430 > > workspace_root = file_system.get_workspace_root () 00:00:12 v #431 > > runtime = None 00:00:12 v #432 > > packages = [[]] 00:00:12 v #433 > > modules = [[]] 00:00:12 v #434 > > output_dir = None 00:00:12 v #435 > > name = "test1" 00:00:12 v #436 > > code = "1 + 1 |> ignore" 00:00:12 v #437 > > } 00:00:12 v #438 > > |> _assert_eq 0 00:00:36 v #439 > > 00:00:36 v #440 > > ╭─[ 23.45s - return value ]────────────────────────────────────────────────────╮ 00:00:36 v #441 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:00:36 v #442 > > │ c:\home\git\polyglot\target/spiral_builder\test1 } │ 00:00:36 v #443 > > │ 00:00:00 d #2 build_project / { full_path = │ 00:00:36 v #444 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj } │ 00:00:36 v #445 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet; │ 00:00:36 v #446 > > │ arguments = ["publish", │ 00:00:36 v #447 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj", │ 00:00:36 v #448 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "win-x64"]; │ 00:00:36 v #449 > > │ options = { command = dotnet publish │ 00:00:36 v #450 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj" │ 00:00:36 v #451 > > │ --configuration Release --output "dist" --runtime win-x64; │ 00:00:36 v #452 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:00:36 v #453 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:00:36 v #454 > > │ "\\?\C:\home\git\polyglot\target\spiral_builder\test1", │ 00:00:36 v #455 > > │ ) } } │ 00:00:36 v #456 > > │ 00:00:00 v #4 > Determining projects to restore... │ 00:00:36 v #457 > > │ 00:00:01 v #5 > Restored │ 00:00:36 v #458 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj (in 333 ms). │ 00:00:36 v #459 > > │ 00:00:01 v #6 > test1 -> │ 00:00:36 v #460 > > │ c:\home\git\polyglot\target\spiral_builder\test1\bin\Release\net9.0\win-x64\ │ 00:00:36 v #461 > > │ test1.dll │ 00:00:36 v #462 > > │ 00:00:02 v #7 > test1 -> │ 00:00:36 v #463 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test1\dist\ │ 00:00:36 v #464 > > │ 00:00:02 v #8 > │ 00:00:36 v #465 > > │ 00:00:02 v #9 > Workload updates are available. Run `dotnet workload │ 00:00:36 v #466 > > │ list` for more information. │ 00:00:36 v #467 > > │ 00:00:03 v #10 runtime.execute_with_options / result / { exit_code = │ 00:00:36 v #468 > > │ 0; std_trace_length = 371 } │ 00:00:36 v #469 > > │ 00:00:03 d #11 runtime.execute_with_options / { file_name = dotnet; │ 00:00:36 v #470 > > │ arguments = ["publish", │ 00:00:36 v #471 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj", │ 00:00:36 v #472 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "linux-x64"]; │ 00:00:36 v #473 > > │ options = { command = dotnet publish │ 00:00:36 v #474 > > │ "c:/home/git/polyglot/target/spiral_builder/test1/test1.fsproj" │ 00:00:36 v #475 > > │ --configuration Release --output "dist" --runtime linux-x64; │ 00:00:36 v #476 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:00:36 v #477 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:00:36 v #478 > > │ "\\?\C:\home\git\polyglot\target\spiral_builder\test1", │ 00:00:36 v #479 > > │ ) } } │ 00:00:36 v #480 > > │ 00:00:04 v #12 > Determining projects to restore... │ 00:00:36 v #481 > > │ 00:00:04 v #13 > Restored │ 00:00:36 v #482 > > │ c:\home\git\polyglot\target\spiral_builder\test1\test1.fsproj (in 316 ms). │ 00:00:36 v #483 > > │ 00:00:05 v #14 > test1 -> │ 00:00:36 v #484 > > │ c:\home\git\polyglot\target\spiral_builder\test1\bin\Release\net9.0\linux-x6 │ 00:00:36 v #485 > > │ 4\test1.dll │ 00:00:36 v #486 > > │ 00:00:06 v #15 > test1 -> │ 00:00:36 v #487 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test1\dist\ │ 00:00:36 v #488 > > │ 00:00:06 v #16 > │ 00:00:36 v #489 > > │ 00:00:06 v #17 > Workload updates are available. Run `dotnet workload │ 00:00:36 v #490 > > │ list` for more information. │ 00:00:36 v #491 > > │ 00:00:06 v #18 runtime.execute_with_options / result / { exit_code = │ 00:00:36 v #492 > > │ 0; std_trace_length = 373 } │ 00:00:36 v #493 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:00:36 v #494 > > │ │ 00:00:36 v #495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 v #496 > > 00:00:36 v #497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 v #498 > > //// test 00:00:36 v #499 > > ///! rust -d encoding_rs encoding_rs_io regex 00:00:36 v #500 > > 00:00:36 v #501 > > build_code { 00:00:36 v #502 > > workspace_root = file_system.get_workspace_root () 00:00:36 v #503 > > runtime = None 00:00:36 v #504 > > packages = [[]] 00:00:36 v #505 > > modules = [[]] 00:00:36 v #506 > > output_dir = None 00:00:36 v #507 > > name = "test2" 00:00:36 v #508 > > code = "1 + a |> ignore" 00:00:36 v #509 > > } 00:00:36 v #510 > > |> _assert_eq 2 00:00:57 v #511 > > 00:00:57 v #512 > > ╭─[ 21.59s - return value ]────────────────────────────────────────────────────╮ 00:00:57 v #513 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:00:57 v #514 > > │ c:\home\git\polyglot\target/spiral_builder\test2 } │ 00:00:57 v #515 > > │ 00:00:00 d #2 build_project / { full_path = │ 00:00:57 v #516 > > │ \\?\C:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj } │ 00:00:57 v #517 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet; │ 00:00:57 v #518 > > │ arguments = ["publish", │ 00:00:57 v #519 > > │ "c:/home/git/polyglot/target/spiral_builder/test2/test2.fsproj", │ 00:00:57 v #520 > > │ "--configuration", "Release", "--output", "dist", "--runtime", "win-x64"]; │ 00:00:57 v #521 > > │ options = { command = dotnet publish │ 00:00:57 v #522 > > │ "c:/home/git/polyglot/target/spiral_builder/test2/test2.fsproj" │ 00:00:57 v #523 > > │ --configuration Release --output "dist" --runtime win-x64; │ 00:00:57 v #524 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:00:57 v #525 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:00:57 v #526 > > │ "\\?\C:\home\git\polyglot\target\spiral_builder\test2", │ 00:00:57 v #527 > > │ ) } } │ 00:00:57 v #528 > > │ 00:00:00 v #4 > Determining projects to restore... │ 00:00:57 v #529 > > │ 00:00:01 v #5 > Restored │ 00:00:57 v #530 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj (in 353 ms). │ 00:00:57 v #531 > > │ 00:00:03 v #6 > │ 00:00:57 v #532 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fs(1,5): error │ 00:00:57 v #533 > > │ FS0039: The value or constructor 'a' is not defined. [ │ 00:00:57 v #534 > > │ c:\home\git\polyglot\target\spiral_builder\test2\test2.fsproj] │ 00:00:57 v #535 > > │ 00:00:03 v #7 > │ 00:00:57 v #536 > > │ 00:00:03 v #8 > Workload updates are available. Run `dotnet workload │ 00:00:57 v #537 > > │ list` for more information. │ 00:00:57 v #538 > > │ 00:00:03 v #9 runtime.execute_with_options / result / { exit_code = 1; │ 00:00:57 v #539 > > │ std_trace_length = 391 } │ 00:00:57 v #540 > > │ 00:00:03 d #10 runtime.e...v #14 > │ 00:00:57 v #541 > > │ 00:00:07 v #15 > Workload updates are available. Run `dotnet workload │ 00:00:57 v #542 > > │ list` for more information. │ 00:00:57 v #543 > > │ 00:00:07 v #16 runtime.execute_with_options / result / { exit_code = │ 00:00:57 v #544 > > │ 1; std_trace_length = 391 } │ 00:00:57 v #545 > > │ 00:00:07 c #17 build_code / { code = 1 + a |> ignore; fsproj_text = │ 00:00:57 v #546 > > │ <Project Sdk="Microsoft.NET.Sdk"> │ 00:00:57 v #547 > > │ <PropertyGroup> │ 00:00:57 v #548 > > │ <TargetFramework>net9.0</TargetFramework> │ 00:00:57 v #549 > > │ <LangVersion>preview</LangVersion> │ 00:00:57 v #550 > > │ <RollForward>Major</RollForward> │ 00:00:57 v #551 > > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> │ 00:00:57 v #552 > > │ <PublishAot>false</PublishAot> │ 00:00:57 v #553 > > │ <PublishTrimmed>false</PublishTrimmed> │ 00:00:57 v #554 > > │ <PublishSingleFile>true</PublishSingleFile> │ 00:00:57 v #555 > > │ <SelfContained>true</SelfContained> │ 00:00:57 v #556 > > │ <Version>0.0.1-alpha.1</Version> │ 00:00:57 v #557 > > │ <OutputType>Exe</OutputType> │ 00:00:57 v #558 > > │ </PropertyGroup> │ 00:00:57 v #559 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> │ 00:00:57 v #560 > > │ <DefineConstants>_FREEBSD</DefineConstants> │ 00:00:57 v #561 > > │ </PropertyGroup> │ 00:00:57 v #562 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))"> │ 00:00:57 v #563 > > │ <DefineConstants>_LINUX</DefineConstants> │ 00:00:57 v #564 > > │ </PropertyGroup> │ 00:00:57 v #565 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> │ 00:00:57 v #566 > > │ <DefineConstants>_OSX</DefineConstants> │ 00:00:57 v #567 > > │ </PropertyGroup> │ 00:00:57 v #568 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))"> │ 00:00:57 v #569 > > │ <DefineConstants>_WINDOWS</DefineConstants> │ 00:00:57 v #570 > > │ </PropertyGroup> │ 00:00:57 v #571 > > │ <ItemGroup> │ 00:00:57 v #572 > > │ │ 00:00:57 v #573 > > │ <Compile │ 00:00:57 v #574 > > │ Include="c:/home/git/polyglot/target/spiral_builder/test2/test2.fs" /> │ 00:00:57 v #575 > > │ </ItemGroup> │ 00:00:57 v #576 > > │ <ItemGroup> │ 00:00:57 v #577 > > │ │ 00:00:57 v #578 > > │ </ItemGroup> │ 00:00:57 v #579 > > │ </Project> } │ 00:00:57 v #580 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:00:57 v #581 > > │ │ 00:00:57 v #582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:57 v #583 > > 00:00:57 v #584 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:57 v #585 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:57 v #586 > > │ ### read_file │ 00:00:57 v #587 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:57 v #588 > > 00:00:57 v #589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:57 v #590 > > inl read_file path = 00:00:57 v #591 > > inl code = 00:00:57 v #592 > > path 00:00:57 v #593 > > |> file_system.read_all_text 00:00:57 v #594 > > |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 00:00:57 v #595 > > "$a[[<EntryPoint>]]\n$a$b" 00:00:57 v #596 > > inl code_trim = code |> sm'.trim_end [[]] 00:00:57 v #597 > > if code_trim |> sm'.ends_with "\\n()" 00:00:57 v #598 > > then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3) 00:00:57 v #599 > > else code 00:00:58 v #600 > > 00:00:58 v #601 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:58 v #602 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:58 v #603 > > │ ### persist_file │ 00:00:58 v #604 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 v #605 > > 00:00:58 v #606 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:58 v #607 > > inl persist_file { workspace_root package_dir packages modules path } = 00:00:58 v #608 > > inl full_path = path |> file_system.get_full_path 00:00:58 v #609 > > inl name = full_path |> file_system.get_file_name_without_extension 00:00:58 v #610 > > inl code = full_path |> read_file 00:00:58 v #611 > > persist_code_project { workspace_root package_dir packages modules name code 00:00:58 v #612 > > } 00:00:58 v #613 > > 00:00:58 v #614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:58 v #615 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:58 v #616 > > │ ### build_file │ 00:00:58 v #617 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 v #618 > > 00:00:58 v #619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:58 v #620 > > inl build_file { workspace_root runtime packages modules path } = 00:00:58 v #621 > > inl full_path = path |> file_system.get_full_path 00:00:58 v #622 > > inl dir = full_path |> file_system.directory_get_parent |> 00:00:58 v #623 > > optionm'.default_value' "" 00:00:58 v #624 > > build_code { 00:00:58 v #625 > > workspace_root 00:00:58 v #626 > > runtime 00:00:58 v #627 > > packages 00:00:58 v #628 > > modules 00:00:58 v #629 > > output_dir = dir </> "dist" |> Some 00:00:58 v #630 > > name = full_path |> file_system.get_file_name_without_extension 00:00:58 v #631 > > code = full_path |> read_file 00:00:58 v #632 > > } 00:00:59 v #633 > > 00:00:59 v #634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 v #635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 v #636 > > │ ## rust │ 00:00:59 v #637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 v #638 > > 00:00:59 v #639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 v #640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 v #641 > > │ ### get_workspace_cargo_toml_content │ 00:00:59 v #642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 v #643 > > 00:00:59 v #644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 v #645 > > inl get_workspace_cargo_toml_content { workspace_root } : string = 00:00:59 v #646 > > inl workspace_root = workspace_root |> file_system.normalize_path 00:00:59 v #647 > > $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"' 00:00:59 v #648 > > +#. $'$""' 00:00:59 v #649 > > +#. $'$"[[workspace]]"' 00:00:59 v #650 > > +#. $'$"resolver = \\\"2\\\""' 00:00:59 v #651 > > +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"' 00:00:59 v #652 > > +#. $'$""' 00:00:59 v #653 > > +#. $'$"[[workspace.dependencies.fable_library_rust]]"' 00:00:59 v #654 > > +#. $'$"path = 00:00:59 v #655 > > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""' 00:00:59 v #656 > > +#. $'$"default-features = false"' 00:00:59 v #657 > > +#. $'$"features = [[]]"' 00:00:59 v #658 > > +#. $'$""' 00:00:59 v #659 > > +#. $'$"[[workspace.dependencies]]"' 00:00:59 v #660 > > +#. $'$"inline_colorization = \\\"~0.1\\\""' 00:00:59 v #661 > > +#. $'$""' 00:00:59 v #662 > > +#. $'$"[[profile.release]]"' 00:00:59 v #663 > > +#. $'$"codegen-units = 1"' 00:00:59 v #664 > > +#. $'$"opt-level = \\\"z\\\""' 00:00:59 v #665 > > +#. $'$"lto = true"' 00:00:59 v #666 > > +#. $'$"debug = false"' 00:00:59 v #667 > > +#. $'$"panic = \\\"abort\\\""' 00:00:59 v #668 > > +#. $'$"overflow-checks = true"' 00:00:59 v #669 > > +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"' 00:00:59 v #670 > > 00:00:59 v #671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 v #672 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 v #673 > > │ ### get_cargo_toml_content │ 00:00:59 v #674 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 v #675 > > 00:00:59 v #676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 v #677 > > inl get_cargo_toml_content { hash_hex runtime deps static_do_bindings } : string 00:00:59 v #678 > > = 00:00:59 v #679 > > $'$"[[package]]"' 00:00:59 v #680 > > +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""' 00:00:59 v #681 > > +#. $'$"version = \\\"0.0.1\\\""' 00:00:59 v #682 > > +#. $'$"edition = \\\"2021\\\""' 00:00:59 v #683 > > +#. $'$""' 00:00:59 v #684 > > +#. $'$"[[dependencies]]"' 00:00:59 v #685 > > +#. ( 00:00:59 v #686 > > if runtime <>. None 00:00:59 v #687 > > then $'$"fable_library_rust = {{ workspace = true }}"' 00:00:59 v #688 > > else 00:00:59 v #689 > > $'$"fable_library_rust = {{"' 00:00:59 v #690 > > +. $'$" workspace = true,"' 00:00:59 v #691 > > +. $'$" features = [["' 00:00:59 v #692 > > +. ( 00:00:59 v #693 > > if static_do_bindings 00:00:59 v #694 > > then $'$"\\\"static_do_bindings\\\", \\\"datetime\\\", 00:00:59 v #695 > > \\\"guid\\\", \\\"threaded\\\""' 00:00:59 v #696 > > else $'$"\\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\""' 00:00:59 v #697 > > ) 00:00:59 v #698 > > +. $'$"]]"' 00:00:59 v #699 > > +. $'$"}}"' 00:00:59 v #700 > > ) 00:00:59 v #701 > > +#. $'$"inline_colorization = {{ workspace = true }}"' 00:00:59 v #702 > > +#. $'$"{!deps}"' 00:00:59 v #703 > > +#. $'$""' 00:00:59 v #704 > > +#. ( 00:00:59 v #705 > > if runtime = None then 00:00:59 v #706 > > $'$"[[[[bin]]]]"' 00:00:59 v #707 > > +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""' 00:00:59 v #708 > > else 00:00:59 v #709 > > $'$"[[lib]]"' 00:00:59 v #710 > > +#. $'$"crate-type = [[\\\"cdylib\\\"]]"' 00:00:59 v #711 > > ) 00:00:59 v #712 > > +#. $'$"path = \\\"spiral_builder.rs\\\""' 00:01:00 v #713 > > 00:01:00 v #714 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:00 v #715 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:00 v #716 > > │ ### get_empty_cargo_toml_content │ 00:01:00 v #717 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #718 > > 00:01:00 v #719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:00 v #720 > > inl get_empty_cargo_toml_content () = 00:01:00 v #721 > > inl guid = date_time.now () |> date_time.new_guid_from_date_time |> 00:01:00 v #722 > > sm'.obj_to_string 00:01:00 v #723 > > $'$"[[package]]"' 00:01:00 v #724 > > +#. $'$"name = \\\"spiral_builder_{!guid}\\\""' 00:01:00 v #725 > > +#. $'$"version = \\\"0.0.1\\\""' 00:01:00 v #726 > > +#. $'$"edition = \\\"2021\\\""' 00:01:00 v #727 > > +#. $'$""' 00:01:00 v #728 > > +#. $'$"[[[[bin]]]]"' 00:01:00 v #729 > > +#. $'$"name = \\\"spiral_builder_{!guid}\\\""' 00:01:00 v #730 > > +#. $'$"path = \\\"spiral_builder.rs\\\""' 00:01:00 v #731 > > 00:01:00 v #732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:00 v #733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:00 v #734 > > │ ### process_rust │ 00:01:00 v #735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #736 > > 00:01:00 v #737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:00 v #738 > > inl process_rust { fs_path deps trace_level runtime cleanup } = 00:01:00 v #739 > > open runtime 00:01:00 v #740 > > 00:01:00 v #741 > > inl extension = "rs" 00:01:00 v #742 > > inl code = fs_path |> file_system.read_all_text 00:01:00 v #743 > > 00:01:00 v #744 > > inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text 00:01:00 v #745 > > 00:01:00 v #746 > > inl workspace_name = "spiral_builder" 00:01:00 v #747 > > 00:01:00 v #748 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:00 v #749 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:00 v #750 > > resultm.unwrap_or_else id 00:01:00 v #751 > > 00:01:00 v #752 > > inl package_dir = 00:01:00 v #753 > > get_package_dir { workspace_root name = workspace_name; target = Some 00:01:00 v #754 > > Rust; hash = Some hash_hex } 00:01:00 v #755 > > 00:01:00 v #756 > > inl fsproj_path = 00:01:00 v #757 > > persist_code_project { 00:01:00 v #758 > > workspace_root 00:01:00 v #759 > > package_dir 00:01:00 v #760 > > packages = [[ "Fable.Core" ]] 00:01:00 v #761 > > modules = [[]] 00:01:00 v #762 > > name = workspace_name 00:01:00 v #763 > > code 00:01:00 v #764 > > } 00:01:00 v #765 > > 00:01:00 v #766 > > inl workspace_dir = package_dir </> "../../.." 00:01:00 v #767 > > inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml" 00:01:00 v #768 > > 00:01:00 v #769 > > if workspace_cargo_toml_path |> file_system.file_exists |> not 00:01:00 v #770 > > then get_empty_cargo_toml_content () |> file_system.write_all_text 00:01:00 v #771 > > workspace_cargo_toml_path 00:01:00 v #772 > > 00:01:00 v #773 > > inl cargo_toml_path = package_dir </> "Cargo.toml" 00:01:00 v #774 > > 00:01:00 v #775 > > if cargo_toml_path |> file_system.file_exists |> not 00:01:00 v #776 > > then get_empty_cargo_toml_content () |> file_system.write_all_text 00:01:00 v #777 > > cargo_toml_path 00:01:00 v #778 > > 00:01:00 v #779 > > inl lib_link_target_path = workspace_root </> 00:01:00 v #780 > > "lib/rust/fable/fable_modules/fable-library-rust" 00:01:00 v #781 > > inl lib_link_path = package_dir </> "fable_modules/fable-library-rust" 00:01:00 v #782 > > 00:01:00 v #783 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:00 v #784 > > 00:01:00 v #785 > > inl exit_code, dotnet_fable_result = 00:01:00 v #786 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:00 v #787 > > package_dir runtime } 00:01:00 v #788 > > 00:01:00 v #789 > > inl result' = { 00:01:00 v #790 > > extension = Some extension 00:01:00 v #791 > > code = None 00:01:00 v #792 > > code_path = None 00:01:00 v #793 > > output = None 00:01:00 v #794 > > } 00:01:00 v #795 > > 00:01:00 v #796 > > if exit_code <>. 0 then 00:01:00 v #797 > > trace Critical 00:01:00 v #798 > > fun () => "spiral_builder.process_rust / dotnet fable error" 00:01:00 v #799 > > fun () => { exit_code dotnet_fable_result } 00:01:00 v #800 > > { result' with 00:01:00 v #801 > > output = Some dotnet_fable_result 00:01:00 v #802 > > } 00:01:00 v #803 > > else 00:01:00 v #804 > > inl deps = 00:01:00 v #805 > > inl deps = 00:01:00 v #806 > > if runtime = None 00:01:00 v #807 > > then deps 00:01:00 v #808 > > else 00:01:00 v #809 > > // TODO: simplify 00:01:00 v #810 > > inl has_near_sdk = 00:01:00 v #811 > > deps 00:01:00 v #812 > > |> am'.vec_filter (sm'.from_std_string >> sm'.contains 00:01:00 v #813 > > "near-sdk") 00:01:00 v #814 > > |> am'.vec_len 00:01:00 v #815 > > |> i32 00:01:00 v #816 > > |> fun n => n > 0 00:01:00 v #817 > > // TODO: simplify with ++ 00:01:00 v #818 > > if has_near_sdk 00:01:00 v #819 > > then deps 00:01:00 v #820 > > else deps |> am'.vec_extend (;[[ "near-sdk" |> 00:01:00 v #821 > > sm'.to_std_string ]] |> am'.to_vec) 00:01:00 v #822 > > deps 00:01:00 v #823 > > |> am'.vec_map fun dep => 00:01:00 v #824 > > inl dep = dep |> sm'.from_std_string 00:01:00 v #825 > > if dep |> sm'.contains "=" 00:01:00 v #826 > > then dep 00:01:00 v #827 > > elif dep |> sm'.ends_with "]]" 00:01:00 v #828 > > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' 00:01:00 v #829 > > |> fun x => $'$"{!x}}}"' 00:01:00 v #830 > > else $'$"{!dep}=\'*\'"' 00:01:00 v #831 > > |> am'.from_vec 00:01:00 v #832 > > |> fun x => x : _ i32 _ 00:01:00 v #833 > > |> seq.of_array' 00:01:00 v #834 > > |> sm'.concat "\n" 00:01:00 v #835 > > 00:01:00 v #836 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:00 v #837 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:00 v #838 > > 00:01:00 v #839 > > inl on_startup_text = "on_startup!" +. (join "(") 00:01:00 v #840 > > inl method0_fn_text = " method0" +. (join "(") 00:01:00 v #841 > > inl static_do_bindings = 00:01:00 v #842 > > (new_code |> sm'.contains on_startup_text) 00:01:00 v #843 > > && (new_code |> sm'.contains method0_fn_text |> not) 00:01:00 v #844 > > inl cargo_toml_content = 00:01:00 v #845 > > get_cargo_toml_content { hash_hex runtime deps static_do_bindings } 00:01:00 v #846 > > inl workspace_cargo_toml_content = get_workspace_cargo_toml_content { 00:01:00 v #847 > > workspace_root } 00:01:00 v #848 > > 00:01:00 v #849 > > cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path 00:01:00 v #850 > > workspace_cargo_toml_content |> file_system.write_all_text_exists 00:01:00 v #851 > > workspace_cargo_toml_path 00:01:00 v #852 > > 00:01:00 v #853 > > inl range_rs_path = lib_link_path </> "src/Range.rs" 00:01:00 v #854 > > if range_rs_path |> file_system.file_exists then 00:01:00 v #855 > > inl text = range_rs_path |> file_system.read_all_text 00:01:00 v #856 > > text 00:01:00 v #857 > > |> sm'.replace "use crate::String_::fromCharCode;" "use 00:01:00 v #858 > > crate::String_::fromChar;" 00:01:00 v #859 > > |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()" 00:01:00 v #860 > > |> file_system.write_all_text_exists range_rs_path 00:01:00 v #861 > > 00:01:00 v #862 > > inl exit_code, cargo_fmt_result = 00:01:00 v #863 > > fun () => 00:01:00 v #864 > > inl exit_code, result = 00:01:00 v #865 > > execution_options fun x => { x with 00:01:00 v #866 > > command = $'$"cargo fmt --manifest-path 00:01:00 v #867 > > \\\"{!cargo_toml_path}\\\" --"' 00:01:00 v #868 > > working_directory = workspace_root_external |> 00:01:00 v #869 > > resultm.box |> resultm.ok' 00:01:00 v #870 > > } 00:01:00 v #871 > > |> execute_with_options 00:01:00 v #872 > > 00:01:00 v #873 > > inl return () = 00:01:00 v #874 > > if exit_code = 0 00:01:00 v #875 > > then Ok (exit_code, result) 00:01:00 v #876 > > else Error (exit_code, result) 00:01:00 v #877 > > 00:01:00 v #878 > > if result |> sm'.contains "failed to load manifest for workspace 00:01:00 v #879 > > member" |> not 00:01:00 v #880 > > then return () 00:01:00 v #881 > > else 00:01:00 v #882 > > inl missing_toml_path = 00:01:00 v #883 > > "failed to read `(?<a>.*?Cargo.toml)`" 00:01:00 v #884 > > |> sm'.new_regex 00:01:00 v #885 > > |> resultm.unwrap' 00:01:00 v #886 > > |> sm'.regex_captures result 00:01:00 v #887 > > |> am'.from_vec 00:01:00 v #888 > > |> fun x => x : _ i32 _ 00:01:00 v #889 > > |> am'.try_item 0 00:01:00 v #890 > > |> optionm.map (mapm.get "a" >> optionm'.unbox) 00:01:00 v #891 > > |> optionm'.flatten 00:01:00 v #892 > > 00:01:00 v #893 > > match missing_toml_path with 00:01:00 v #894 > > | None => Error (exit_code, result) 00:01:00 v #895 > > | Some missing_toml_path => 00:01:00 v #896 > > if missing_toml_path |> file_system.file_exists |> not 00:01:00 v #897 > > then 00:01:00 v #898 > > missing_toml_path 00:01:00 v #899 > > |> file_system.directory_get_parent 00:01:00 v #900 > > |> optionm'.default_value' "" 00:01:00 v #901 > > |> file_system.create_dir 00:01:00 v #902 > > |> ignore 00:01:00 v #903 > > 00:01:00 v #904 > > get_empty_cargo_toml_content () 00:01:00 v #905 > > |> file_system.write_all_text missing_toml_path 00:01:00 v #906 > > return () 00:01:00 v #907 > > |> retry_fn' 3u8 00:01:00 v #908 > > 00:01:00 v #909 > > if exit_code <>. 0 then 00:01:00 v #910 > > trace Critical 00:01:00 v #911 > > fun () => "spiral_builder.process_rust / cargo fmt error" 00:01:00 v #912 > > fun () => { exit_code cargo_fmt_result } 00:01:00 v #913 > > 00:01:00 v #914 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:00 v #915 > > 00:01:00 v #916 > > inl main_code_header = 00:01:00 v #917 > > "pub fn main() -> Result<(), String> " +. (join "{") 00:01:00 v #918 > > 00:01:00 v #919 > > inl main_code : string = 00:01:00 v #920 > > if runtime = None 00:01:00 v #921 > > then "" 00:01:00 v #922 > > else 00:01:00 v #923 > > $'$"#[[near_sdk::near_bindgen]]"' 00:01:00 v #924 > > +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"' 00:01:00 v #925 > > +#. $'$"pub struct MainState {{"' 00:01:00 v #926 > > +#. $'$"}}"' 00:01:00 v #927 > > +#. $'$""' 00:01:00 v #928 > > +#. $'$"#[[near_sdk::near_bindgen]]"' 00:01:00 v #929 > > +#. $'$"impl MainState {{"' 00:01:00 v #930 > > +#. $'$" pub fn state_main() {{"' 00:01:00 v #931 > > +#. $'$" Spiral_builder::method0();"' 00:01:00 v #932 > > +#. $'$" }}"' 00:01:00 v #933 > > +#. $'$"}}"' 00:01:00 v #934 > > +#. ( 00:01:00 v #935 > > if runtime = None && (new_code |> sm'.contains (on_startup_text 00:01:00 v #936 > > +. "Spiral_builder::method0()")) 00:01:00 v #937 > > then $'$"{!main_code_header} Ok(Spiral_builder::method0()) }}"' 00:01:00 v #938 > > else $'$"{!main_code_header} Ok(()) }}"' 00:01:00 v #939 > > ) 00:01:00 v #940 > > 00:01:00 v #941 > > inl cached = new_code |> sm'.contains main_code_header 00:01:00 v #942 > > 00:01:00 v #943 > > inl new_code' = $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:00 v #944 > > inl new_code = 00:01:00 v #945 > > if cached 00:01:00 v #946 > > then new_code 00:01:00 v #947 > > else 00:01:00 v #948 > > inl runtime_contract = 00:01:00 v #949 > > match runtime with 00:01:00 v #950 > > | Some (Contract _) => true 00:01:00 v #951 > > | _ => false 00:01:00 v #952 > > 00:01:00 v #953 > > new_code' 00:01:00 v #954 > > |> sm'.replace 00:01:00 v #955 > > ("),)" +. !\($'"\\\";\\\".into()"')) 00:01:00 v #956 > > "));" 00:01:00 v #957 > > |> sm'.replace 00:01:00 v #958 > > ("},)" +. !\($'"\\\";\\\".into()"')) 00:01:00 v #959 > > "});" 00:01:00 v #960 > > |> sm'.replace_regex 00:01:00 v #961 > > "\\s\\sdefaultOf\\(\\);" 00:01:00 v #962 > > " defaultOf::<()>();" 00:01:00 v #963 > > |> sm'.replace_regex 00:01:00 v #964 > > "\\s\\sgetZero\\(\\);" 00:01:00 v #965 > > " getZero::<()>();" 00:01:00 v #966 > > |> sm'.replace 00:01:00 v #967 > > "::Slice'_" 00:01:00 v #968 > > "::Slice__" 00:01:00 v #969 > > |> sm'.replace 00:01:00 v #970 > > " Slice'_" 00:01:00 v #971 > > " Slice__" 00:01:00 v #972 > > |> sm'.replace 00:01:00 v #973 > > ("defaultOf()" +. !\($'"\\\",\\\".into()"')) 00:01:00 v #974 > > "defaultOf::<std::sync::Arc<dyn IDisposable>>()," 00:01:00 v #975 > > |> sm'.replace 00:01:00 v #976 > > ("__self" +. !\($'"\\\"__.\\\".into()"')) 00:01:00 v #977 > > "self." 00:01:00 v #978 > > |> sm'.replace 00:01:00 v #979 > > ("_self" +. !\($'"\\\"_.\\\".into()"')) 00:01:00 v #980 > > "self." 00:01:00 v #981 > > |> sm'.replace 00:01:00 v #982 > > ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"')) 00:01:00 v #983 > > "get_or_init" 00:01:00 v #984 > > |> sm'.replace 00:01:00 v #985 > > ("use 00:01:00 v #986 > > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +. 00:01:00 v #987 > > !\($'"\\\";\\\".into()"')) 00:01:00 v #988 > > "type ConcurrentStack_1<T> = T;" 00:01:00 v #989 > > |> sm'.replace 00:01:00 v #990 > > ("use fable_library_rust::System::TimeZoneInfo" +. 00:01:00 v #991 > > !\($'"\\\";\\\".into()"')) 00:01:00 v #992 > > "type TimeZoneInfo = i64;" 00:01:00 v #993 > > |> sm'.replace 00:01:00 v #994 > > ("use 00:01:00 v #995 > > fable_library_rust::System::Threading::Tasks::TaskCanceledException" +. 00:01:00 v #996 > > !\($'"\\\";\\\".into()"')) 00:01:00 v #997 > > "type TaskCanceledException = ();" 00:01:00 v #998 > > |> if static_do_bindings 00:01:00 v #999 > > then id 00:01:00 v #1000 > > else sm'.replace 00:01:00 v #1001 > > on_startup_text 00:01:00 v #1002 > > ("// " +. on_startup_text) 00:01:00 v #1003 > > |> if runtime_contract |> not 00:01:00 v #1004 > > then id 00:01:00 v #1005 > > else sm'.replace 00:01:00 v #1006 > > ("use fable_library_rust::DateTime_::DateTime" +. 00:01:00 v #1007 > > ";") 00:01:00 v #1008 > > "type DateTime = ();" 00:01:00 v #1009 > > 00:01:00 v #1010 > > if not cached then 00:01:00 v #1011 > > new_code 00:01:00 v #1012 > > |> file_system.write_all_text_exists new_code_path 00:01:00 v #1013 > > 00:01:00 v #1014 > > inl command = 00:01:00 v #1015 > > if runtime <> None 00:01:00 v #1016 > > then $'$"cargo +nightly-2024-07-14 build --release --target 00:01:00 v #1017 > > wasm32-unknown-unknown --manifest-path \\\"{!cargo_toml_path}\\\""' 00:01:00 v #1018 > > else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""' 00:01:00 v #1019 > > inl environment_variables = 00:01:00 v #1020 > > if runtime <> None 00:01:00 v #1021 > > then ;[[]] 00:01:00 v #1022 > > else 00:01:00 v #1023 > > inl fast = false 00:01:00 v #1024 > > ;[[ 00:01:00 v #1025 > > "TRACE_LEVEL", "Verbose" 00:01:00 v #1026 > > "RUSTC_WRAPPER", "sccache" 00:01:00 v #1027 > > "RUST_BACKTRACE", "full" 00:01:00 v #1028 > > "RUSTFLAGS", 00:01:00 v #1029 > > if fast 00:01:00 v #1030 > > then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C 00:01:00 v #1031 > > debuginfo=0" 00:01:00 v #1032 > > else "-C prefer-dynamic" 00:01:00 v #1033 > > ]] 00:01:00 v #1034 > > inl exit_code, cargo_result = 00:01:00 v #1035 > > execution_options fun x => { x with 00:01:00 v #1036 > > command 00:01:00 v #1037 > > environment_variables 00:01:00 v #1038 > > working_directory = workspace_root_external |> resultm.box |> 00:01:00 v #1039 > > resultm.ok' 00:01:00 v #1040 > > } 00:01:00 v #1041 > > |> execute_with_options 00:01:00 v #1042 > > 00:01:00 v #1043 > > inl result = 00:01:00 v #1044 > > if runtime = None then 00:01:00 v #1045 > > inl external_command = 00:01:00 v #1046 > > inl vars = 00:01:00 v #1047 > > a environment_variables 00:01:00 v #1048 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : 00:01:00 v #1049 > > string 00:01:00 v #1050 > > |> fun x => x : _ i32 _ 00:01:00 v #1051 > > |> seq.of_array 00:01:00 v #1052 > > |> sm'.concat ";" 00:01:00 v #1053 > > inl command = 00:01:00 v #1054 > > a ;[[ 00:01:00 v #1055 > > vars 00:01:00 v #1056 > > command 00:01:00 v #1057 > > ]] 00:01:00 v #1058 > > |> fun x => x : _ i32 _ 00:01:00 v #1059 > > |> seq.of_array 00:01:00 v #1060 > > |> sm'.concat ";" 00:01:00 v #1061 > > $'$"pwsh -c \'{!command}\'"' : string 00:01:00 v #1062 > > if exit_code <>. 0 then 00:01:00 v #1063 > > trace Critical 00:01:00 v #1064 > > fun () => "spiral_builder.process_rust / error" 00:01:00 v #1065 > > fun () => { exit_code new_code_path external_command 00:01:00 v #1066 > > cleanup cargo_result } 00:01:00 v #1067 > > result' 00:01:00 v #1068 > > else 00:01:00 v #1069 > > inl output = 00:01:00 v #1070 > > try 00:01:00 v #1071 > > fun () => 00:01:00 v #1072 > > cargo_result 00:01:00 v #1073 > > |> sm'.split "\n" 00:01:00 v #1074 > > |> fun x => a x : _ i32 _ 00:01:00 v #1075 > > |> am'.skip_while fun line => 00:01:00 v #1076 > > (line |> sm'.contains "profile [[optimized]] 00:01:00 v #1077 > > target" |> not) 00:01:00 v #1078 > > && (line |> sm'.contains "profile 00:01:00 v #1079 > > [[unoptimized]] target" |> not) 00:01:00 v #1080 > > && (line |> sm'.contains "profile 00:01:00 v #1081 > > [[unoptimized + debuginfo]] target" |> not) 00:01:00 v #1082 > > |> am'.skip 2 00:01:00 v #1083 > > |> seq.of_array 00:01:00 v #1084 > > |> sm'.concat "\n" 00:01:00 v #1085 > > fun ex => 00:01:00 v #1086 > > trace Critical 00:01:00 v #1087 > > fun () => "spiral_builder.process_rust 00:01:00 v #1088 > > Exception" 00:01:00 v #1089 > > fun () => { ex new_code_path 00:01:00 v #1090 > > external_command cargo_result } 00:01:00 v #1091 > > None 00:01:00 v #1092 > > |> optionm'.box 00:01:00 v #1093 > > |> optionm'.unwrap 00:01:00 v #1094 > > { result' with 00:01:00 v #1095 > > code = Some new_code 00:01:00 v #1096 > > code_path = Some new_code_path 00:01:00 v #1097 > > output = Some output 00:01:00 v #1098 > > } 00:01:00 v #1099 > > else 00:01:00 v #1100 > > inl wasm_path : string = 00:01:00 v #1101 > > 00:01:00 v #1102 > > $'$"target/spiral_builder/{!workspace_name}/target/wasm32-unknown-unknown/releas 00:01:00 v #1103 > > e/spiral_builder_{!hash_hex}.wasm"' 00:01:00 v #1104 > > 00:01:00 v #1105 > > inl command = 00:01:00 v #1106 > > inl invoke_block_path = "scripts/invoke-block.ps1" 00:01:00 v #1107 > > inl spiral_wasm_command : string = 00:01:00 v #1108 > > inl runtime_cmd = 00:01:00 v #1109 > > match runtime with 00:01:00 v #1110 > > | Some (Wasm cmd) => cmd 00:01:00 v #1111 > > | Some (Contract cmd) => cmd 00:01:00 v #1112 > > | _ => "" 00:01:00 v #1113 > > $'$"\'workspace/target/release/spiral_wasm -w 00:01:00 v #1114 > > {!wasm_path} -t Debug {!runtime_cmd}\'"' 00:01:00 v #1115 > > inl automation = "AUTOMATION" |> 00:01:00 v #1116 > > env.get_environment_variable 00:01:00 v #1117 > > $'$"pwsh -c \\\"pwsh {!invoke_block_path} 00:01:00 v #1118 > > {!spiral_wasm_command} -Linux -EnvironmentVariables 00:01:00 v #1119 > > AUTOMATION={!automation}\`nNEAR_RPC_TIMEOUT_SECS=100\\\""' 00:01:00 v #1120 > > 00:01:00 v #1121 > > if exit_code = 0 then 00:01:00 v #1122 > > inl exit_code, spiral_wasm_result = 00:01:00 v #1123 > > execution_options fun x => { x with 00:01:00 v #1124 > > command 00:01:00 v #1125 > > working_directory = workspace_root |> optionm'.some' 00:01:00 v #1126 > > } 00:01:00 v #1127 > > |> execute_with_options 00:01:00 v #1128 > > 00:01:00 v #1129 > > if exit_code = 0 then 00:01:00 v #1130 > > { result' with 00:01:00 v #1131 > > code = Some new_code 00:01:00 v #1132 > > code_path = Some new_code_path 00:01:00 v #1133 > > output = Some spiral_wasm_result 00:01:00 v #1134 > > } 00:01:00 v #1135 > > else 00:01:00 v #1136 > > trace Critical 00:01:00 v #1137 > > fun () => "spiral_builder.process_rust / wasm error" 00:01:00 v #1138 > > fun () => { 00:01:00 v #1139 > > exit_code new_code_path cargo_result cleanup 00:01:00 v #1140 > > spiral_wasm_result = 00:01:00 v #1141 > > $'$"\\n{!spiral_wasm_result}"' : string 00:01:00 v #1142 > > } 00:01:00 v #1143 > > result' 00:01:00 v #1144 > > else 00:01:00 v #1145 > > trace Critical 00:01:00 v #1146 > > fun () => "spiral_builder.process_rust / cargo error" 00:01:00 v #1147 > > fun () => { 00:01:00 v #1148 > > exit_code new_code_path wasm_path command cleanup 00:01:00 v #1149 > > cargo_result = $'$"\\n{!cargo_result}"' : string 00:01:00 v #1150 > > } 00:01:00 v #1151 > > result' 00:01:00 v #1152 > > 00:01:00 v #1153 > > if cleanup then 00:01:00 v #1154 > > inl cleanup = 00:01:00 v #1155 > > inl build_target = 00:01:00 v #1156 > > if runtime <> None 00:01:00 v #1157 > > then "wasm32-unknown-unknown/release" 00:01:00 v #1158 > > else "debug" 00:01:00 v #1159 > > 00:01:00 v #1160 > > [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]] 00:01:00 v #1161 > > |> listm.map fun ext => 00:01:00 v #1162 > > workspace_dir </> 00:01:00 v #1163 > > $'$"target/{!build_target}/spiral_builder_{!hash_hex}{!ext}"' 00:01:00 v #1164 > > |> listm.map fun path => path, path |> file_system.file_exists 00:01:00 v #1165 > > 00:01:00 v #1166 > > trace Verbose 00:01:00 v #1167 > > fun () => "spiral_builder.process_rust / cleanup" 00:01:00 v #1168 > > fun () => { new_code_path cleanup } 00:01:00 v #1169 > > 00:01:00 v #1170 > > cleanup 00:01:00 v #1171 > > |> listm'.filter snd 00:01:00 v #1172 > > |> listm.iter (fst >> file_system.file_delete) 00:01:00 v #1173 > > 00:01:00 v #1174 > > result 00:01:01 v #1175 > > 00:01:01 v #1176 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:01 v #1177 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:01 v #1178 > > │ ## dib │ 00:01:01 v #1179 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:01 v #1180 > > 00:01:01 v #1181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:01 v #1182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:01 v #1183 > > │ ### process_dib │ 00:01:01 v #1184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:01 v #1185 > > 00:01:01 v #1186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:01 v #1187 > > inl process_dib { path retries working_directory } = 00:01:01 v #1188 > > inl exit_code, repl_result = 00:01:01 v #1189 > > let rec loop retry = 00:01:01 v #1190 > > inl exit_code, repl_result = 00:01:01 v #1191 > > runtime.execution_options fun x => { x with 00:01:01 v #1192 > > command = $'$"dotnet repl --exit-after-run --run 00:01:01 v #1193 > > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""' 00:01:01 v #1194 > > environment_variables = ;[[ 00:01:01 v #1195 > > "TRACE_LEVEL", "Verbose" 00:01:01 v #1196 > > "AUTOMATION", "True" 00:01:01 v #1197 > > ]] 00:01:01 v #1198 > > trace = false 00:01:01 v #1199 > > working_directory = working_directory |> optionm'.box 00:01:01 v #1200 > > } 00:01:01 v #1201 > > |> runtime.execute_with_options 00:01:01 v #1202 > > 00:01:01 v #1203 > > if exit_code = 0 || retry >= retries 00:01:01 v #1204 > > then exit_code, repl_result 00:01:01 v #1205 > > else 00:01:01 v #1206 > > trace Debug 00:01:01 v #1207 > > fun () => "spiral_builder.run / repl error" 00:01:01 v #1208 > > fun () => { exit_code repl_result retry = 00:01:01 v #1209 > > $'$"{!retry}/{!retries}"' : string } 00:01:01 v #1210 > > loop (retry + 1) 00:01:01 v #1211 > > loop 1 00:01:01 v #1212 > > 00:01:01 v #1213 > > inl exit_code, result = 00:01:01 v #1214 > > if exit_code <>. 0 00:01:01 v #1215 > > then exit_code, repl_result 00:01:01 v #1216 > > else 00:01:01 v #1217 > > inl exit_code, jupyter_result = 00:01:01 v #1218 > > runtime.execution_options fun x => { x with 00:01:01 v #1219 > > command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to 00:01:01 v #1220 > > html --HTMLExporter.theme=dark"' 00:01:01 v #1221 > > } 00:01:01 v #1222 > > |> runtime.execute_with_options 00:01:01 v #1223 > > 00:01:01 v #1224 > > trace Debug 00:01:01 v #1225 > > fun () => "spiral_builder.run / dib / jupyter nbconvert" 00:01:01 v #1226 > > fun () => { exit_code jupyter_result_length = jupyter_result |> 00:01:01 v #1227 > > sm'.length : i32 } 00:01:01 v #1228 > > 00:01:01 v #1229 > > if exit_code <>. 0 00:01:01 v #1230 > > then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 00:01:01 v #1231 > > {!jupyter_result}"' 00:01:01 v #1232 > > else 00:01:01 v #1233 > > inl exit_code, pwsh_replace_html_result = 00:01:01 v #1234 > > inl path = path |> sm'.replace "'" "''" 00:01:01 v #1235 > > runtime.execution_options fun x => { x with 00:01:01 v #1236 > > command = $'$"pwsh -c \\\"$counter = 1; $path = 00:01:01 v #1237 > > \'{!path}.html\'; (Get-Content $path -Raw) -replace 00:01:01 v #1238 > > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++ 00:01:01 v #1239 > > }} | Set-Content $path\\\""' 00:01:01 v #1240 > > } 00:01:01 v #1241 > > |> runtime.execute_with_options 00:01:01 v #1242 > > 00:01:01 v #1243 > > trace Debug 00:01:01 v #1244 > > fun () => "spiral_builder.run / dib / html cell ids" 00:01:01 v #1245 > > fun () => { exit_code pwsh_replace_html_result_length = 00:01:01 v #1246 > > pwsh_replace_html_result |> sm'.length : i32 } 00:01:01 v #1247 > > 00:01:01 v #1248 > > $'$"{!path}.html"' 00:01:01 v #1249 > > |> file_system.read_all_text 00:01:01 v #1250 > > |> sm'.replace "\r\n" "\n" 00:01:01 v #1251 > > |> file_system.write_all_text $'$"{!path}.html"' 00:01:01 v #1252 > > 00:01:01 v #1253 > > $'$"{!path}.ipynb"' 00:01:01 v #1254 > > |> file_system.read_all_text 00:01:01 v #1255 > > |> sm'.replace "\r\n" "\n" 00:01:01 v #1256 > > |> sm'.replace "\\r\\n" "\\n" 00:01:01 v #1257 > > |> file_system.write_all_text $'$"{!path}.ipynb"' 00:01:01 v #1258 > > 00:01:01 v #1259 > > exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 00:01:01 v #1260 > > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"' 00:01:01 v #1261 > > 00:01:01 v #1262 > > trace Debug 00:01:01 v #1263 > > fun () => "spiral_builder.run / dib" 00:01:01 v #1264 > > fun () => { exit_code result_length = result |> sm'.length : i32 } 00:01:01 v #1265 > > 00:01:01 v #1266 > > if exit_code <>. 0 00:01:01 v #1267 > > then failwith $'$"spiral_builder.run / dib / exit_code: {!exit_code} 00:01:01 v #1268 > > result: {!result}"' 00:01:01 v #1269 > > ;[[ 00:01:01 v #1270 > > "stdio", 00:01:01 v #1271 > > result 00:01:01 v #1272 > > ]] 00:01:01 v #1273 > > 00:01:01 v #1274 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:01 v #1275 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:01 v #1276 > > │ ## typescript │ 00:01:01 v #1277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:01 v #1278 > > 00:01:01 v #1279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:01 v #1280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:01 v #1281 > > │ ### process_typescript │ 00:01:01 v #1282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:01 v #1283 > > 00:01:01 v #1284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:01 v #1285 > > inl process_typescript { fs_path deps trace_level } = 00:01:01 v #1286 > > inl extension = "ts" 00:01:01 v #1287 > > 00:01:01 v #1288 > > inl code = fs_path |> file_system.read_all_text 00:01:01 v #1289 > > 00:01:01 v #1290 > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text 00:01:01 v #1291 > > 00:01:01 v #1292 > > inl workspace_name = "spiral_builder" 00:01:01 v #1293 > > 00:01:01 v #1294 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:01 v #1295 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:01 v #1296 > > resultm.unwrap_or_else id 00:01:01 v #1297 > > 00:01:01 v #1298 > > inl package_dir = 00:01:01 v #1299 > > get_package_dir 00:01:01 v #1300 > > { workspace_root name = workspace_name; target = Some TypeScript; 00:01:01 v #1301 > > hash = Some hash_hex } 00:01:01 v #1302 > > 00:01:01 v #1303 > > inl fsproj_path = 00:01:01 v #1304 > > persist_code_project { 00:01:01 v #1305 > > workspace_root 00:01:01 v #1306 > > package_dir 00:01:01 v #1307 > > packages = [[ "Fable.Core" ]] 00:01:01 v #1308 > > modules = [[]] 00:01:01 v #1309 > > name = workspace_name 00:01:01 v #1310 > > code 00:01:01 v #1311 > > } 00:01:01 v #1312 > > 00:01:01 v #1313 > > inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules" 00:01:01 v #1314 > > inl lib_dir_prefix = $'$"fable-library-{!extension}"' 00:01:01 v #1315 > > inl lib_dir_prefix' = join lib_dir_prefix 00:01:01 v #1316 > > 00:01:01 v #1317 > > inl versions : _ (string * string) = 00:01:01 v #1318 > > lib_path 00:01:01 v #1319 > > |> file_system.new_walk_dir 00:01:01 v #1320 > > |> file_system.walk_dir_filter fun entry => async.new_future_move_send 00:01:01 v #1321 > > fun () => 00:01:01 v #1322 > > entry 00:01:01 v #1323 > > |> file_system.dir_entry_file_type 00:01:01 v #1324 > > |> async.await_send 00:01:01 v #1325 > > |> resultm.map_error' sm'.format' 00:01:01 v #1326 > > |> resultm.unbox 00:01:01 v #1327 > > |> function 00:01:01 v #1328 > > | Ok file_type when file_type |> file_system.file_type_is_dir |> 00:01:01 v #1329 > > not => file_system.Ignore 00:01:01 v #1330 > > | _ => 00:01:01 v #1331 > > inl path = 00:01:01 v #1332 > > entry 00:01:01 v #1333 > > |> file_system.dir_entry_path 00:01:01 v #1334 > > |> file_system.path_buf_display 00:01:01 v #1335 > > |> sm'.format' 00:01:01 v #1336 > > |> sm'.from_std_string 00:01:01 v #1337 > > if path |> file_system.get_directory_name |> sm'.starts_with 00:01:01 v #1338 > > lib_dir_prefix |> not 00:01:01 v #1339 > > then file_system.IgnoreDir 00:01:01 v #1340 > > else 00:01:01 v #1341 > > match path |> file_system.directory_get_parent |> 00:01:01 v #1342 > > optionm'.unbox with 00:01:01 v #1343 > > | Some parent when parent |> sm'.contains lib_dir_prefix 00:01:01 v #1344 > > |> not => 00:01:01 v #1345 > > file_system.Continue 00:01:01 v #1346 > > | _ => file_system.IgnoreDir 00:01:01 v #1347 > > |> async.stream_filter_map_futures fun (entry : _ _ 00:01:01 v #1348 > > file_system.async_walkdir_error) => 00:01:01 v #1349 > > inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox 00:01:01 v #1350 > > match entry with 00:01:01 v #1351 > > | Ok entry => 00:01:01 v #1352 > > inl path = 00:01:01 v #1353 > > entry 00:01:01 v #1354 > > |> file_system.dir_entry_path 00:01:01 v #1355 > > |> file_system.path_buf_display 00:01:01 v #1356 > > |> sm'.format' 00:01:01 v #1357 > > |> sm'.from_std_string 00:01:01 v #1358 > > inl version = 00:01:01 v #1359 > > $'$"{!lib_dir_prefix'}\\.(?<a>[[-\\d\\w.]]+)$"' 00:01:01 v #1360 > > |> sm'.new_regex 00:01:01 v #1361 > > |> resultm.unwrap' 00:01:01 v #1362 > > |> sm'.regex_captures path 00:01:01 v #1363 > > |> am'.from_vec 00:01:01 v #1364 > > |> fun x => x : _ int _ 00:01:01 v #1365 > > |> am'.try_item 0 00:01:01 v #1366 > > |> optionm.map (mapm.get "a" >> optionm'.unbox) 00:01:01 v #1367 > > |> optionm'.flatten 00:01:01 v #1368 > > version 00:01:01 v #1369 > > |> optionm.map fun version => 00:01:01 v #1370 > > path, version 00:01:01 v #1371 > > | Error error => 00:01:01 v #1372 > > trace Critical 00:01:01 v #1373 > > fun () => "spiral_builder.process_typescript 00:01:01 v #1374 > > stream_filter_map" 00:01:01 v #1375 > > fun () => { error } 00:01:01 v #1376 > > None 00:01:01 v #1377 > > |> optionm'.box 00:01:01 v #1378 > > |> async.stream_collect_futures 00:01:01 v #1379 > > |> async.await 00:01:01 v #1380 > > |> async.into_par_iter 00:01:01 v #1381 > > |> async.par_map id 00:01:01 v #1382 > > |> async.par_collect 00:01:01 v #1383 > > 00:01:01 v #1384 > > inl version = 00:01:01 v #1385 > > versions 00:01:01 v #1386 > > |> am'.from_vec 00:01:01 v #1387 > > |> fun x => x : _ i32 _ 00:01:01 v #1388 > > |> am'.try_item 0 00:01:01 v #1389 > > 00:01:01 v #1390 > > trace Debug 00:01:01 v #1391 > > fun () => "spiral_builder.process_typescript" 00:01:01 v #1392 > > fun () => { version } 00:01:01 v #1393 > > 00:01:01 v #1394 > > 00:01:01 v #1395 > > let link_lib () = 00:01:01 v #1396 > > match version with 00:01:01 v #1397 > > | Some (_path, version) => 00:01:01 v #1398 > > inl lib_link_target_path = lib_path </> 00:01:01 v #1399 > > $'$"fable-library-{!extension}.{!version}"' 00:01:01 v #1400 > > inl lib_link_path = package_dir </> 00:01:01 v #1401 > > $'$"fable_modules/fable-library-{!extension}.{!version}"' 00:01:01 v #1402 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:01 v #1403 > > | None => failwith $'$"spiral_builder.process_typescript / fable library 00:01:01 v #1404 > > not found / lib_path: {!lib_path}"' 00:01:01 v #1405 > > 00:01:01 v #1406 > > link_lib () 00:01:01 v #1407 > > 00:01:01 v #1408 > > inl exit_code, dotnet_fable_result = 00:01:01 v #1409 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:01 v #1410 > > package_dir runtime = None } 00:01:01 v #1411 > > 00:01:01 v #1412 > > link_lib () 00:01:01 v #1413 > > 00:01:01 v #1414 > > if exit_code <>. 0 then 00:01:01 v #1415 > > trace Critical 00:01:01 v #1416 > > fun () => "spiral_builder.process_typescript" 00:01:01 v #1417 > > fun () => { exit_code dotnet_fable_result } 00:01:01 v #1418 > > { extension = Some extension; code = None; code_path = None; output = 00:01:01 v #1419 > > Some dotnet_fable_result } 00:01:01 v #1420 > > else 00:01:01 v #1421 > > inl deps = 00:01:01 v #1422 > > deps 00:01:01 v #1423 > > |> am'.vec_map fun dep => 00:01:01 v #1424 > > inl dep = dep |> sm'.from_std_string 00:01:01 v #1425 > > if dep |> sm'.contains "=" 00:01:01 v #1426 > > then dep 00:01:01 v #1427 > > else $'$"\\"{!dep}\\":\\"*\\""' 00:01:01 v #1428 > > |> am'.from_vec 00:01:01 v #1429 > > |> fun x => x : _ i32 _ 00:01:01 v #1430 > > |> seq.of_array' 00:01:01 v #1431 > > |> sm'.concat ",\n" 00:01:01 v #1432 > > 00:01:01 v #1433 > > inl package_json_content = 00:01:01 v #1434 > > $'$"{{"' 00:01:01 v #1435 > > +. $'$" \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","' 00:01:01 v #1436 > > +. $'$" \\\"dependencies\\\": {{"' 00:01:01 v #1437 > > +. deps 00:01:01 v #1438 > > +. $'$" }},"' 00:01:01 v #1439 > > +. $'$" \\\"devDependencies\\\": {{"' 00:01:01 v #1440 > > +. $'$" }},"' 00:01:01 v #1441 > > +. $'$"}}"' 00:01:01 v #1442 > > 00:01:01 v #1443 > > inl workspace_package_json_content = 00:01:01 v #1444 > > "" 00:01:01 v #1445 > > 00:01:01 v #1446 > > inl package_json_path = package_dir </> "package.json" 00:01:01 v #1447 > > 00:01:01 v #1448 > > inl workspace_dir = package_dir </> "../.." 00:01:01 v #1449 > > inl workspace_package_json_path = workspace_dir </> "package.json" 00:01:01 v #1450 > > 00:01:01 v #1451 > > package_json_content |> file_system.write_all_text_exists 00:01:01 v #1452 > > package_json_path 00:01:01 v #1453 > > 00:01:01 v #1454 > > workspace_package_json_content |> file_system.write_all_text_exists 00:01:01 v #1455 > > workspace_package_json_path 00:01:01 v #1456 > > 00:01:01 v #1457 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:01 v #1458 > > trace Debug 00:01:01 v #1459 > > fun () => "spiral_builder.process_typescript" 00:01:01 v #1460 > > fun () => { new_code_path } 00:01:01 v #1461 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:01 v #1462 > > 00:01:01 v #1463 > > inl main_code_header = 00:01:01 v #1464 > > "// spiral_builder.process_typescript" 00:01:01 v #1465 > > inl main_code = "// spiral_builder.process_typescript" 00:01:01 v #1466 > > 00:01:01 v #1467 > > inl cached = new_code |> sm'.contains main_code_header 00:01:01 v #1468 > > 00:01:01 v #1469 > > inl new_code = 00:01:01 v #1470 > > if cached 00:01:01 v #1471 > > then new_code 00:01:01 v #1472 > > else 00:01:01 v #1473 > > new_code 00:01:01 v #1474 > > |> sm'.replace 00:01:01 v #1475 > > $'$"\\\"./fable_modules/fable-library-ts.{!version}/"' 00:01:01 v #1476 > > 00:01:01 v #1477 > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{! 00:01:01 v #1478 > > version}/"' 00:01:01 v #1479 > > |> sm'.replace_regex 00:01:01 v #1480 > > "\\s\\sdefaultOf\\(\\);" 00:01:01 v #1481 > > " defaultOf::<()>();" 00:01:01 v #1482 > > 00:01:01 v #1483 > > if not cached then 00:01:01 v #1484 > > $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:01 v #1485 > > |> file_system.write_all_text_exists new_code_path 00:01:01 v #1486 > > 00:01:01 v #1487 > > inl command = $'$"bun run \\\"{!new_code_path}\\\""' 00:01:01 v #1488 > > inl environment_variables = 00:01:01 v #1489 > > match "~/.bun/bin" |> env.append_path with 00:01:01 v #1490 > > | Some path => [[ "PATH", path ]] 00:01:01 v #1491 > > | None => [[]] 00:01:01 v #1492 > > ++ [[ 00:01:01 v #1493 > > "TRACE_LEVEL", "Verbose" 00:01:01 v #1494 > > ]] 00:01:01 v #1495 > > |> listm'.box 00:01:01 v #1496 > > |> listm'.to_array' 00:01:01 v #1497 > > inl exit_code, run_result = 00:01:01 v #1498 > > runtime.execution_options fun x => { x with 00:01:01 v #1499 > > command 00:01:01 v #1500 > > environment_variables 00:01:01 v #1501 > > working_directory = workspace_root_external |> resultm.box |> 00:01:01 v #1502 > > resultm.ok' 00:01:01 v #1503 > > } 00:01:01 v #1504 > > |> runtime.execute_with_options 00:01:01 v #1505 > > 00:01:01 v #1506 > > inl external_command = 00:01:01 v #1507 > > inl vars = 00:01:01 v #1508 > > a environment_variables 00:01:01 v #1509 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:01 v #1510 > > |> fun x => x : _ i32 _ 00:01:01 v #1511 > > |> seq.of_array 00:01:01 v #1512 > > |> sm'.concat ";" 00:01:01 v #1513 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:01 v #1514 > > if exit_code = 0 then 00:01:01 v #1515 > > inl output = 00:01:01 v #1516 > > try 00:01:01 v #1517 > > fun () => 00:01:01 v #1518 > > run_result 00:01:01 v #1519 > > |> sm'.split "\n" 00:01:01 v #1520 > > |> fun x => a x : _ i32 _ 00:01:01 v #1521 > > |> seq.of_array 00:01:01 v #1522 > > |> sm'.concat "\n" 00:01:01 v #1523 > > fun ex => 00:01:01 v #1524 > > trace Critical 00:01:01 v #1525 > > fun () => "spiral_builder.process_typescript 00:01:01 v #1526 > > Exception" 00:01:01 v #1527 > > fun () => { ex new_code_path external_command 00:01:01 v #1528 > > run_result } 00:01:01 v #1529 > > None 00:01:01 v #1530 > > |> optionm'.box 00:01:01 v #1531 > > |> optionm'.unwrap 00:01:01 v #1532 > > 00:01:01 v #1533 > > { 00:01:01 v #1534 > > extension = Some extension 00:01:01 v #1535 > > code = Some new_code 00:01:01 v #1536 > > code_path = Some new_code_path 00:01:01 v #1537 > > output = Some output 00:01:01 v #1538 > > } 00:01:01 v #1539 > > else 00:01:01 v #1540 > > trace Critical 00:01:01 v #1541 > > fun () => "spiral_builder.process_typescript / error" 00:01:01 v #1542 > > fun () => { exit_code run_result new_code_path external_command 00:01:01 v #1543 > > } 00:01:01 v #1544 > > { extension = Some extension; code = None; code_path = None; output 00:01:01 v #1545 > > = None } 00:01:02 v #1546 > > 00:01:02 v #1547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1548 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1549 > > │ ## python │ 00:01:02 v #1550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1551 > > 00:01:02 v #1552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1553 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1554 > > │ ### process_python │ 00:01:02 v #1555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1556 > > 00:01:02 v #1557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1558 > > inl process_python { fs_path deps trace_level } = 00:01:02 v #1559 > > inl extension = "py" 00:01:02 v #1560 > > inl is_trace = trace_level = Verbose 00:01:02 v #1561 > > inl _trace (fn : () -> string) = 00:01:02 v #1562 > > if is_trace 00:01:02 v #1563 > > then trace Info (fun () => $'$"spiral_builder.process_python / {!fn 00:01:02 v #1564 > > ()}"') id 00:01:02 v #1565 > > else fn () |> console.write_line 00:01:02 v #1566 > > 00:01:02 v #1567 > > inl code = fs_path |> file_system.read_all_text 00:01:02 v #1568 > > 00:01:02 v #1569 > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text 00:01:02 v #1570 > > 00:01:02 v #1571 > > inl workspace_name = "spiral_builder" 00:01:02 v #1572 > > 00:01:02 v #1573 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:02 v #1574 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:02 v #1575 > > resultm.unwrap_or_else id 00:01:02 v #1576 > > 00:01:02 v #1577 > > inl package_dir = 00:01:02 v #1578 > > get_package_dir { workspace_root name = workspace_name; target = Some 00:01:02 v #1579 > > Python; hash = Some hash_hex } 00:01:02 v #1580 > > 00:01:02 v #1581 > > inl fsproj_path = 00:01:02 v #1582 > > persist_code_project { 00:01:02 v #1583 > > workspace_root 00:01:02 v #1584 > > package_dir 00:01:02 v #1585 > > packages = [[ "Fable.Core" ]] 00:01:02 v #1586 > > modules = [[]] 00:01:02 v #1587 > > name = workspace_name 00:01:02 v #1588 > > code 00:01:02 v #1589 > > } 00:01:02 v #1590 > > 00:01:02 v #1591 > > inl lib_path = workspace_root </> "lib/python/fable/fable_modules" 00:01:02 v #1592 > > 00:01:02 v #1593 > > inl lib_link_target_path = lib_path </> $'$"fable_library"' 00:01:02 v #1594 > > inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"' 00:01:02 v #1595 > > 00:01:02 v #1596 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:02 v #1597 > > 00:01:02 v #1598 > > inl exit_code, dotnet_fable_result = 00:01:02 v #1599 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:02 v #1600 > > package_dir runtime = None } 00:01:02 v #1601 > > 00:01:02 v #1602 > > if exit_code <>. 0 then 00:01:02 v #1603 > > trace Critical 00:01:02 v #1604 > > fun () => "spiral_builder.process_python" 00:01:02 v #1605 > > fun () => { exit_code dotnet_fable_result } 00:01:02 v #1606 > > { extension = Some extension; code = None; code_path = None; output = 00:01:02 v #1607 > > Some dotnet_fable_result } 00:01:02 v #1608 > > else 00:01:02 v #1609 > > inl deps = 00:01:02 v #1610 > > deps 00:01:02 v #1611 > > |> am'.vec_map fun dep => 00:01:02 v #1612 > > inl dep = dep |> sm'.from_std_string 00:01:02 v #1613 > > if dep |> sm'.contains "=" 00:01:02 v #1614 > > then dep 00:01:02 v #1615 > > else $'$"\\"{!dep}\\":\\"*\\""' 00:01:02 v #1616 > > |> am'.from_vec 00:01:02 v #1617 > > |> fun x => x : _ i32 _ 00:01:02 v #1618 > > |> seq.of_array' 00:01:02 v #1619 > > |> sm'.concat ",\n" 00:01:02 v #1620 > > 00:01:02 v #1621 > > inl package_json_content = 00:01:02 v #1622 > > $'$"{{"' 00:01:02 v #1623 > > +. $'$" \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","' 00:01:02 v #1624 > > +. $'$" \\\"dependencies\\\": {{"' 00:01:02 v #1625 > > +. deps 00:01:02 v #1626 > > +. $'$" }},"' 00:01:02 v #1627 > > +. $'$" \\\"devDependencies\\\": {{"' 00:01:02 v #1628 > > +. $'$" }},"' 00:01:02 v #1629 > > +. $'$"}}"' 00:01:02 v #1630 > > 00:01:02 v #1631 > > inl workspace_package_json_content = 00:01:02 v #1632 > > "" 00:01:02 v #1633 > > 00:01:02 v #1634 > > inl package_json_path = package_dir </> "package.json" 00:01:02 v #1635 > > 00:01:02 v #1636 > > inl workspace_dir = package_dir </> "../.." 00:01:02 v #1637 > > inl workspace_package_json_path = workspace_dir </> "package.json" 00:01:02 v #1638 > > 00:01:02 v #1639 > > package_json_content |> file_system.write_all_text_exists 00:01:02 v #1640 > > package_json_path 00:01:02 v #1641 > > 00:01:02 v #1642 > > workspace_package_json_content |> file_system.write_all_text_exists 00:01:02 v #1643 > > workspace_package_json_path 00:01:02 v #1644 > > 00:01:02 v #1645 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:02 v #1646 > > trace Debug 00:01:02 v #1647 > > fun () => "spiral_builder.process_python" 00:01:02 v #1648 > > fun () => { new_code_path } 00:01:02 v #1649 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:02 v #1650 > > 00:01:02 v #1651 > > inl main_code_header = 00:01:02 v #1652 > > "# spiral_builder.process_python" 00:01:02 v #1653 > > inl main_code = "# spiral_builder.process_python" 00:01:02 v #1654 > > 00:01:02 v #1655 > > inl cached = new_code |> sm'.contains main_code_header 00:01:02 v #1656 > > 00:01:02 v #1657 > > inl new_code = 00:01:02 v #1658 > > if cached 00:01:02 v #1659 > > then new_code 00:01:02 v #1660 > > else 00:01:02 v #1661 > > new_code 00:01:02 v #1662 > > |> sm'.replace 00:01:02 v #1663 > > ("),)" +. !\($'"\\\";\\\".into()"')) 00:01:02 v #1664 > > "));" 00:01:02 v #1665 > > |> sm'.replace_regex 00:01:02 v #1666 > > "\\s\\sdefaultOf\\(\\);" 00:01:02 v #1667 > > " defaultOf::<()>();" 00:01:02 v #1668 > > 00:01:02 v #1669 > > if not cached 00:01:02 v #1670 > > then 00:01:02 v #1671 > > $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:02 v #1672 > > |> file_system.write_all_text_exists new_code_path 00:01:02 v #1673 > > 00:01:02 v #1674 > > inl command = $'$"python \\\"{!new_code_path}\\\""' 00:01:02 v #1675 > > inl environment_variables = 00:01:02 v #1676 > > ;[[ 00:01:02 v #1677 > > "TRACE_LEVEL", "Verbose" 00:01:02 v #1678 > > ]] 00:01:02 v #1679 > > inl exit_code, run_result = 00:01:02 v #1680 > > runtime.execution_options fun x => { x with 00:01:02 v #1681 > > command 00:01:02 v #1682 > > environment_variables 00:01:02 v #1683 > > working_directory = workspace_root_external |> resultm.box |> 00:01:02 v #1684 > > resultm.ok' 00:01:02 v #1685 > > } 00:01:02 v #1686 > > |> runtime.execute_with_options 00:01:02 v #1687 > > 00:01:02 v #1688 > > inl external_command = 00:01:02 v #1689 > > inl vars = 00:01:02 v #1690 > > a environment_variables 00:01:02 v #1691 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:02 v #1692 > > |> fun x => x : _ i32 _ 00:01:02 v #1693 > > |> seq.of_array 00:01:02 v #1694 > > |> sm'.concat ";" 00:01:02 v #1695 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:02 v #1696 > > if exit_code = 0 then 00:01:02 v #1697 > > inl output = 00:01:02 v #1698 > > try 00:01:02 v #1699 > > fun () => 00:01:02 v #1700 > > run_result 00:01:02 v #1701 > > |> sm'.split "\n" 00:01:02 v #1702 > > |> fun x => a x : _ i32 _ 00:01:02 v #1703 > > |> seq.of_array 00:01:02 v #1704 > > |> sm'.concat "\n" 00:01:02 v #1705 > > fun ex => 00:01:02 v #1706 > > trace Critical 00:01:02 v #1707 > > fun () => "spiral_builder.process_python 00:01:02 v #1708 > > Exception" 00:01:02 v #1709 > > fun () => { ex new_code_path external_command 00:01:02 v #1710 > > run_result } 00:01:02 v #1711 > > None 00:01:02 v #1712 > > |> optionm'.box 00:01:02 v #1713 > > |> optionm'.unwrap 00:01:02 v #1714 > > 00:01:02 v #1715 > > { 00:01:02 v #1716 > > extension = Some extension 00:01:02 v #1717 > > code = Some new_code 00:01:02 v #1718 > > code_path = Some new_code_path 00:01:02 v #1719 > > output = Some output 00:01:02 v #1720 > > } 00:01:02 v #1721 > > else 00:01:02 v #1722 > > trace Critical 00:01:02 v #1723 > > fun () => "spiral_builder.process_python / error" 00:01:02 v #1724 > > fun () => { exit_code run_result new_code_path external_command 00:01:02 v #1725 > > } 00:01:02 v #1726 > > { extension = Some extension; code = None; code_path = None; output 00:01:02 v #1727 > > = None } 00:01:02 v #1728 > > 00:01:02 v #1729 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1730 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1731 > > │ ## cuda │ 00:01:02 v #1732 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1733 > > 00:01:02 v #1734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1736 > > │ ### process_cuda │ 00:01:02 v #1737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1738 > > 00:01:02 v #1739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1740 > > inl process_cuda { py_path env deps } = 00:01:02 v #1741 > > inl extension = "py" 00:01:02 v #1742 > > 00:01:02 v #1743 > > inl new_code_path = py_path 00:01:02 v #1744 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:02 v #1745 > > 00:01:02 v #1746 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:02 v #1747 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:02 v #1748 > > resultm.unwrap_or_else id 00:01:02 v #1749 > > 00:01:02 v #1750 > > inl package_dir = new_code_path |> file_system.directory_get_parent |> 00:01:02 v #1751 > > optionm'.default_value' "" 00:01:02 v #1752 > > 00:01:02 v #1753 > > inl manifest_path = 00:01:02 v #1754 > > match env with 00:01:02 v #1755 > > | Pip => package_dir </> "requirements.txt" 00:01:02 v #1756 > > | Poetry => package_dir </> "pyproject.toml" 00:01:02 v #1757 > > 00:01:02 v #1758 > > inl deps = 00:01:02 v #1759 > > deps 00:01:02 v #1760 > > |> am'.vec_map fun dep => 00:01:02 v #1761 > > inl dep = dep |> sm'.from_std_string 00:01:02 v #1762 > > if dep |> sm'.contains "=" 00:01:02 v #1763 > > then dep 00:01:02 v #1764 > > elif dep |> sm'.ends_with "]]" 00:01:02 v #1765 > > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> 00:01:02 v #1766 > > fun x => $'$"{!x}}}"' 00:01:02 v #1767 > > else $'$"{!dep}=\'*\'"' 00:01:02 v #1768 > > |> am'.from_vec 00:01:02 v #1769 > > |> fun x => x : _ i32 _ 00:01:02 v #1770 > > |> seq.of_array' 00:01:02 v #1771 > > |> sm'.concat "\n" 00:01:02 v #1772 > > 00:01:02 v #1773 > > inl exit_code, run_result = 00:01:02 v #1774 > > if deps = "" 00:01:02 v #1775 > > then 0, "" 00:01:02 v #1776 > > else 00:01:02 v #1777 > > inl manifest = 00:01:02 v #1778 > > match env with 00:01:02 v #1779 > > | Pip => 00:01:02 v #1780 > > deps 00:01:02 v #1781 > > | Poetry => 00:01:02 v #1782 > > $'$"[[tool.poetry]]"' 00:01:02 v #1783 > > +#. $'$"name = \\\"test\\\""' 00:01:02 v #1784 > > +#. $'$"version = \\\"0.0.1\\\""' 00:01:02 v #1785 > > +#. $'$"description = \\\"\\\""' 00:01:02 v #1786 > > +#. $'$"authors = [[]]"' 00:01:02 v #1787 > > +#. $'$""' 00:01:02 v #1788 > > +#. $'$"[[tool.poetry.dependencies]]"' 00:01:02 v #1789 > > +#. $'$"python=\\\"~3.12\\\""' 00:01:02 v #1790 > > +#. $'$"{!deps}"' 00:01:02 v #1791 > > +#. $'$""' 00:01:02 v #1792 > > +#. $'$"[[build-system]]"' 00:01:02 v #1793 > > +#. $'$"requires = [[\\\"poetry-core\\\"]]"' 00:01:02 v #1794 > > +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""' 00:01:02 v #1795 > > 00:01:02 v #1796 > > manifest |> file_system.write_all_text_exists manifest_path 00:01:02 v #1797 > > 00:01:02 v #1798 > > runtime.execution_options fun x => { x with 00:01:02 v #1799 > > command = 00:01:02 v #1800 > > match env with 00:01:02 v #1801 > > | Pip => $'$"pip install -r requirements.txt"' 00:01:02 v #1802 > > | Poetry => $'$"poetry install"' 00:01:02 v #1803 > > working_directory = package_dir |> optionm'.some' 00:01:02 v #1804 > > } 00:01:02 v #1805 > > |> runtime.execute_with_options 00:01:02 v #1806 > > 00:01:02 v #1807 > > if exit_code <>. 0 then 00:01:02 v #1808 > > trace Critical 00:01:02 v #1809 > > fun () => "spiral_builder.process_cuda / env install error" 00:01:02 v #1810 > > fun () => { env exit_code run_result new_code_path } 00:01:02 v #1811 > > { extension = Some extension; code = None; code_path = None; output = 00:01:02 v #1812 > > None } 00:01:02 v #1813 > > else 00:01:02 v #1814 > > inl command = 00:01:02 v #1815 > > match env with 00:01:02 v #1816 > > | Pip => $'$"python \\\"{!new_code_path}\\\""' 00:01:02 v #1817 > > | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""' 00:01:02 v #1818 > > inl environment_variables = 00:01:02 v #1819 > > ;[[ 00:01:02 v #1820 > > "TRACE_LEVEL", "Verbose" 00:01:02 v #1821 > > ]] 00:01:02 v #1822 > > inl exit_code, run_result = 00:01:02 v #1823 > > runtime.execution_options fun x => { x with 00:01:02 v #1824 > > command 00:01:02 v #1825 > > environment_variables 00:01:02 v #1826 > > working_directory = package_dir |> optionm'.some' 00:01:02 v #1827 > > } 00:01:02 v #1828 > > |> runtime.execute_with_options 00:01:02 v #1829 > > 00:01:02 v #1830 > > inl external_command = 00:01:02 v #1831 > > inl vars = 00:01:02 v #1832 > > a environment_variables 00:01:02 v #1833 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:02 v #1834 > > |> fun x => x : _ i32 _ 00:01:02 v #1835 > > |> seq.of_array 00:01:02 v #1836 > > |> sm'.concat ";" 00:01:02 v #1837 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:02 v #1838 > > if exit_code = 0 00:01:02 v #1839 > > || (run_result |> sm'.contains 00:01:02 v #1840 > > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver") 00:01:02 v #1841 > > then 00:01:02 v #1842 > > inl output = 00:01:02 v #1843 > > try 00:01:02 v #1844 > > fun () => 00:01:02 v #1845 > > run_result 00:01:02 v #1846 > > |> sm'.split "\n" 00:01:02 v #1847 > > |> fun x => a x : _ i32 _ 00:01:02 v #1848 > > |> seq.of_array 00:01:02 v #1849 > > |> sm'.concat "\n" 00:01:02 v #1850 > > fun ex => 00:01:02 v #1851 > > trace Critical 00:01:02 v #1852 > > fun () => "spiral_builder.process_cuda / Exception" 00:01:02 v #1853 > > fun () => { ex run_result new_code_path 00:01:02 v #1854 > > external_command } 00:01:02 v #1855 > > None 00:01:02 v #1856 > > |> optionm'.box 00:01:02 v #1857 > > |> optionm'.unwrap 00:01:02 v #1858 > > 00:01:02 v #1859 > > { 00:01:02 v #1860 > > extension = Some extension 00:01:02 v #1861 > > code = Some new_code 00:01:02 v #1862 > > code_path = Some new_code_path 00:01:02 v #1863 > > output = Some output 00:01:02 v #1864 > > } 00:01:02 v #1865 > > else 00:01:02 v #1866 > > trace Critical 00:01:02 v #1867 > > fun () => "spiral_builder.process_cuda / error" 00:01:02 v #1868 > > fun () => { exit_code run_result new_code_path external_command 00:01:02 v #1869 > > } 00:01:02 v #1870 > > { extension = Some extension; code = None; code_path = None; output 00:01:02 v #1871 > > = None } 00:01:03 v #1872 > > 00:01:03 v #1873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #1874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #1875 > > │ ## fsharp │ 00:01:03 v #1876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1877 > > 00:01:03 v #1878 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #1879 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #1880 > > │ ### process_fsharp │ 00:01:03 v #1881 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1882 > > 00:01:03 v #1883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:03 v #1884 > > inl process_fsharp { spi_path } = 00:01:03 v #1885 > > inl extension = "fsx" 00:01:03 v #1886 > > 00:01:03 v #1887 > > inl new_code_path = spi_path 00:01:03 v #1888 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:03 v #1889 > > 00:01:03 v #1890 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:03 v #1891 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:03 v #1892 > > resultm.unwrap_or_else id 00:01:03 v #1893 > > 00:01:03 v #1894 > > inl supervisor_path = workspace_root </> 00:01:03 v #1895 > > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())" 00:01:03 v #1896 > > inl code_dir = new_code_path |> file_system.directory_get_parent |> 00:01:03 v #1897 > > optionm'.default_value' "" 00:01:03 v #1898 > > inl file_name = new_code_path |> file_system.get_file_name_without_extension 00:01:03 v #1899 > > inl output_path = code_dir </> $'$"{!file_name}.{!extension}"' 00:01:03 v #1900 > > inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\" 00:01:03 v #1901 > > \\\"{!output_path}\\\""' 00:01:03 v #1902 > > inl environment_variables = 00:01:03 v #1903 > > ;[[ 00:01:03 v #1904 > > "TRACE_LEVEL", "Verbose" 00:01:03 v #1905 > > ]] 00:01:03 v #1906 > > inl exit_code, run_result = 00:01:03 v #1907 > > runtime.execution_options fun x => { x with 00:01:03 v #1908 > > command 00:01:03 v #1909 > > environment_variables 00:01:03 v #1910 > > working_directory = workspace_root_external |> resultm.box |> 00:01:03 v #1911 > > resultm.ok' 00:01:03 v #1912 > > } 00:01:03 v #1913 > > |> runtime.execute_with_options 00:01:03 v #1914 > > 00:01:03 v #1915 > > inl external_command = 00:01:03 v #1916 > > inl vars = 00:01:03 v #1917 > > a environment_variables 00:01:03 v #1918 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:03 v #1919 > > |> fun x => x : _ i32 _ 00:01:03 v #1920 > > |> seq.of_array 00:01:03 v #1921 > > |> sm'.concat ";" 00:01:03 v #1922 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:03 v #1923 > > if exit_code = 0 then 00:01:03 v #1924 > > inl output = 00:01:03 v #1925 > > try 00:01:03 v #1926 > > fun () => 00:01:03 v #1927 > > run_result 00:01:03 v #1928 > > |> sm'.split "\n" 00:01:03 v #1929 > > |> fun x => a x : _ i32 _ 00:01:03 v #1930 > > |> seq.of_array 00:01:03 v #1931 > > |> sm'.concat "\n" 00:01:03 v #1932 > > fun ex => 00:01:03 v #1933 > > trace Critical 00:01:03 v #1934 > > fun () => "spiral_builder.process_fsharp / Exception" 00:01:03 v #1935 > > fun () => { ex run_result new_code_path external_command 00:01:03 v #1936 > > } 00:01:03 v #1937 > > None 00:01:03 v #1938 > > |> optionm'.box 00:01:03 v #1939 > > |> optionm'.unwrap 00:01:03 v #1940 > > 00:01:03 v #1941 > > { 00:01:03 v #1942 > > extension = Some extension 00:01:03 v #1943 > > code = Some new_code 00:01:03 v #1944 > > code_path = Some new_code_path 00:01:03 v #1945 > > output = Some output 00:01:03 v #1946 > > } 00:01:03 v #1947 > > else 00:01:03 v #1948 > > trace Critical 00:01:03 v #1949 > > fun () => "spiral_builder.process_fsharp / error" 00:01:03 v #1950 > > fun () => { exit_code run_result new_code_path external_command } 00:01:03 v #1951 > > { extension = Some extension; code = None; code_path = None; output = 00:01:03 v #1952 > > None } 00:01:03 v #1953 > > 00:01:03 v #1954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #1955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #1956 > > │ ## run │ 00:01:03 v #1957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1958 > > 00:01:03 v #1959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:03 v #1960 > > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin 00:01:03 v #1961 > > (resultm.result' string string) = 00:01:03 v #1962 > > fun () => 00:01:03 v #1963 > > match matches |> runtime.matches_subcommand |> optionm'.unbox with 00:01:03 v #1964 > > | Some (subcommand, arg_matches) 00:01:03 v #1965 > > when (subcommand |> sm'.from_std_string) = (get_args () .cuda |> 00:01:03 v #1966 > > fst) => 00:01:03 v #1967 > > 00:01:03 v #1968 > > inl py_path = 00:01:03 v #1969 > > arg_matches 00:01:03 v #1970 > > |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path 00:01:03 v #1971 > > |> fst) 00:01:03 v #1972 > > |> optionm'.unbox 00:01:03 v #1973 > > |> optionm.value 00:01:03 v #1974 > > |> sm'.from_std_string 00:01:03 v #1975 > > 00:01:03 v #1976 > > inl env = 00:01:03 v #1977 > > arg_matches 00:01:03 v #1978 > > |> runtime.matches_get_one ((get_args () .cuda |> snd).env |> 00:01:03 v #1979 > > fst) 00:01:03 v #1980 > > |> optionm'.unbox 00:01:03 v #1981 > > |> optionm.map ( 00:01:03 v #1982 > > sm'.from_std_string 00:01:03 v #1983 > > >> reflection.union_try_pick 00:01:03 v #1984 > > ) 00:01:03 v #1985 > > |> optionm'.flatten 00:01:03 v #1986 > > |> optionm'.default_value Pip 00:01:03 v #1987 > > 00:01:03 v #1988 > > inl deps : am'.vec sm'.std_string = 00:01:03 v #1989 > > arg_matches 00:01:03 v #1990 > > |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> 00:01:03 v #1991 > > fst) 00:01:03 v #1992 > > |> optionm'.unbox 00:01:03 v #1993 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:03 v #1994 > > 00:01:03 v #1995 > > inl command_result = 00:01:03 v #1996 > > process_cuda { py_path env deps } 00:01:03 v #1997 > > |> fun { extension code output } => 00:01:03 v #1998 > > ;[[ 00:01:03 v #1999 > > "extension", extension |> optionm'.default_value "" 00:01:03 v #2000 > > "code", code |> optionm'.default_value "" 00:01:03 v #2001 > > "output", output |> optionm'.default_value "" 00:01:03 v #2002 > > ]] 00:01:03 v #2003 > > 00:01:03 v #2004 > > ;[[ 00:01:03 v #2005 > > "command_result", 00:01:03 v #2006 > > command_result 00:01:03 v #2007 > > |> am'.to_vec 00:01:03 v #2008 > > |> am'.vec_map' fun k, v => 00:01:03 v #2009 > > new_pair (sm'.to_std_string k) (sm'.to_std_string v) 00:01:03 v #2010 > > |> mapm.b_tree_map_from_vec_pairs 00:01:03 v #2011 > > |> sm'.serialize 00:01:03 v #2012 > > |> resultm.unwrap' 00:01:03 v #2013 > > |> sm'.from_std_string 00:01:03 v #2014 > > ]] 00:01:03 v #2015 > > 00:01:03 v #2016 > > | Some (subcommand, arg_matches) 00:01:03 v #2017 > > when (subcommand |> sm'.from_std_string) = (get_args () .fable 00:01:03 v #2018 > > |> fst) => 00:01:03 v #2019 > > 00:01:03 v #2020 > > inl fs_path = 00:01:03 v #2021 > > arg_matches 00:01:03 v #2022 > > |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path 00:01:03 v #2023 > > |> fst) 00:01:03 v #2024 > > |> optionm'.unbox 00:01:03 v #2025 > > |> optionm.value 00:01:03 v #2026 > > |> sm'.from_std_string 00:01:03 v #2027 > > 00:01:03 v #2028 > > inl command = 00:01:03 v #2029 > > arg_matches 00:01:03 v #2030 > > |> runtime.matches_get_one ((get_args () .fable |> snd).command 00:01:03 v #2031 > > |> fst) 00:01:03 v #2032 > > |> optionm'.unbox 00:01:03 v #2033 > > |> optionm.map sm'.from_std_string 00:01:03 v #2034 > > 00:01:03 v #2035 > > inl command_result = 00:01:03 v #2036 > > match command with 00:01:03 v #2037 > > | Some command => 00:01:03 v #2038 > > get_command () 00:01:03 v #2039 > > |> runtime.command_get_matches_from ( 00:01:03 v #2040 > > $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |> 00:01:03 v #2041 > > runtime.split_args |> resultm.get 00:01:03 v #2042 > > ) 00:01:03 v #2043 > > |> run trace_level 00:01:03 v #2044 > > |> async.await 00:01:03 v #2045 > > |> resultm.unwrap' 00:01:03 v #2046 > > | None => "{}" 00:01:03 v #2047 > > 00:01:03 v #2048 > > ;[[ 00:01:03 v #2049 > > "command_result", 00:01:03 v #2050 > > command_result 00:01:03 v #2051 > > ]] 00:01:03 v #2052 > > 00:01:03 v #2053 > > | Some (subcommand, arg_matches) 00:01:03 v #2054 > > when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst) 00:01:03 v #2055 > > => 00:01:03 v #2056 > > 00:01:03 v #2057 > > inl path = 00:01:03 v #2058 > > arg_matches 00:01:03 v #2059 > > |> runtime.matches_get_one ((get_args () .dib |> snd).path |> 00:01:03 v #2060 > > fst) 00:01:03 v #2061 > > |> optionm'.map'' ( 00:01:03 v #2062 > > sm'.from_std_string 00:01:03 v #2063 > > >> file_system.absolute_path 00:01:03 v #2064 > > ) 00:01:03 v #2065 > > |> optionm'.unwrap 00:01:03 v #2066 > > 00:01:03 v #2067 > > inl retries = 00:01:03 v #2068 > > arg_matches 00:01:03 v #2069 > > |> runtime.matches_get_one ((get_args () .dib |> snd).retries |> 00:01:03 v #2070 > > fst) 00:01:03 v #2071 > > |> optionm'.default_value' 1u8 00:01:03 v #2072 > > 00:01:03 v #2073 > > inl working_directory = 00:01:03 v #2074 > > arg_matches 00:01:03 v #2075 > > |> runtime.matches_get_one ((get_args () .dib |> 00:01:03 v #2076 > > snd).working_directory |> fst) 00:01:03 v #2077 > > |> optionm'.unbox 00:01:03 v #2078 > > 00:01:03 v #2079 > > process_dib { path retries working_directory } 00:01:03 v #2080 > > 00:01:03 v #2081 > > | matches => 00:01:03 v #2082 > > match matches with 00:01:03 v #2083 > > | Some (subcommand, arg_matches) 00:01:03 v #2084 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:03 v #2085 > > .rust |> fst) => 00:01:03 v #2086 > > 00:01:03 v #2087 > > inl fs_path = 00:01:03 v #2088 > > arg_matches 00:01:03 v #2089 > > |> runtime.matches_get_one ((get_args () .rust |> 00:01:03 v #2090 > > snd).fs_path |> fst) 00:01:03 v #2091 > > |> optionm'.unbox 00:01:03 v #2092 > > |> optionm.value 00:01:03 v #2093 > > |> sm'.from_std_string 00:01:03 v #2094 > > 00:01:03 v #2095 > > inl deps : am'.vec sm'.std_string = 00:01:03 v #2096 > > arg_matches 00:01:03 v #2097 > > |> runtime.matches_get_many ((get_args () .rust |> snd).deps 00:01:03 v #2098 > > |> fst) 00:01:03 v #2099 > > |> optionm'.unbox 00:01:03 v #2100 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:03 v #2101 > > 00:01:03 v #2102 > > inl cleanup = 00:01:03 v #2103 > > arg_matches 00:01:03 v #2104 > > |> runtime.matches_get_flag ((get_args () .rust |> 00:01:03 v #2105 > > snd).cleanup |> fst) 00:01:03 v #2106 > > 00:01:03 v #2107 > > inl wasm = 00:01:03 v #2108 > > arg_matches 00:01:03 v #2109 > > |> runtime.matches_get_one ((get_args () .rust |> snd).wasm 00:01:03 v #2110 > > |> fst) 00:01:03 v #2111 > > |> optionm'.unbox 00:01:03 v #2112 > > |> optionm.map sm'.from_std_string 00:01:03 v #2113 > > 00:01:03 v #2114 > > inl contract = 00:01:03 v #2115 > > arg_matches 00:01:03 v #2116 > > |> runtime.matches_get_one ((get_args () .rust |> 00:01:03 v #2117 > > snd).contract |> fst) 00:01:03 v #2118 > > |> optionm'.unbox 00:01:03 v #2119 > > |> optionm.map sm'.from_std_string 00:01:03 v #2120 > > 00:01:03 v #2121 > > inl runtime = 00:01:03 v #2122 > > match wasm, contract with 00:01:03 v #2123 > > | Some wasm, _ => Wasm wasm |> Some 00:01:03 v #2124 > > | _, Some contract => Contract contract |> Some 00:01:03 v #2125 > > | _ => None 00:01:03 v #2126 > > 00:01:03 v #2127 > > process_rust { fs_path deps trace_level runtime cleanup } 00:01:03 v #2128 > > 00:01:03 v #2129 > > | Some (subcommand, arg_matches) 00:01:03 v #2130 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:03 v #2131 > > .typescript |> fst) => 00:01:03 v #2132 > > 00:01:03 v #2133 > > inl fs_path = 00:01:03 v #2134 > > arg_matches 00:01:03 v #2135 > > |> runtime.matches_get_one ((get_args () .typescript |> 00:01:03 v #2136 > > snd).fs_path |> fst) 00:01:03 v #2137 > > |> optionm'.unbox 00:01:03 v #2138 > > |> optionm.value 00:01:03 v #2139 > > |> sm'.from_std_string 00:01:03 v #2140 > > 00:01:03 v #2141 > > inl deps : am'.vec sm'.std_string = 00:01:03 v #2142 > > arg_matches 00:01:03 v #2143 > > |> runtime.matches_get_many ((get_args () .typescript |> 00:01:03 v #2144 > > snd).deps |> fst) 00:01:03 v #2145 > > |> optionm'.unbox 00:01:03 v #2146 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:03 v #2147 > > 00:01:03 v #2148 > > process_typescript { fs_path deps trace_level } 00:01:03 v #2149 > > 00:01:03 v #2150 > > | Some (subcommand, arg_matches) 00:01:03 v #2151 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:03 v #2152 > > .python |> fst) => 00:01:03 v #2153 > > inl fs_path = 00:01:03 v #2154 > > arg_matches 00:01:03 v #2155 > > |> runtime.matches_get_one ((get_args () .python |> 00:01:03 v #2156 > > snd).fs_path |> fst) 00:01:03 v #2157 > > |> optionm'.unbox 00:01:03 v #2158 > > |> optionm.value 00:01:03 v #2159 > > |> sm'.from_std_string 00:01:03 v #2160 > > 00:01:03 v #2161 > > inl deps : am'.vec sm'.std_string = 00:01:03 v #2162 > > arg_matches 00:01:03 v #2163 > > |> runtime.matches_get_many ((get_args () .python |> 00:01:03 v #2164 > > snd).deps |> fst) 00:01:03 v #2165 > > |> optionm'.unbox 00:01:03 v #2166 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:03 v #2167 > > 00:01:03 v #2168 > > process_python { fs_path deps trace_level } 00:01:03 v #2169 > > 00:01:03 v #2170 > > | Some (subcommand, arg_matches) => 00:01:03 v #2171 > > trace Debug 00:01:03 v #2172 > > fun () => "spiral_builder.run / invalid subcommand" 00:01:03 v #2173 > > fun () => { subcommand arg_matches } 00:01:03 v #2174 > > 00:01:03 v #2175 > > { extension = None; code = None; code_path = None; output = None 00:01:03 v #2176 > > } 00:01:03 v #2177 > > | _ => 00:01:03 v #2178 > > { extension = None; code = None; code_path = None; output = None 00:01:03 v #2179 > > } 00:01:03 v #2180 > > |> fun { extension code code_path output } => 00:01:03 v #2181 > > ;[[ 00:01:03 v #2182 > > "extension", extension |> optionm'.default_value "" 00:01:03 v #2183 > > "code", code |> optionm'.default_value "" 00:01:03 v #2184 > > "code_path", code_path |> optionm'.default_value "" 00:01:03 v #2185 > > "output", output |> optionm'.default_value "" 00:01:03 v #2186 > > ]] 00:01:03 v #2187 > > |> am'.to_vec 00:01:03 v #2188 > > |> am'.vec_map' fun k, v => 00:01:03 v #2189 > > new_pair (sm'.to_std_string k) (sm'.to_std_string v) 00:01:03 v #2190 > > |> mapm.b_tree_map_from_vec_pairs 00:01:03 v #2191 > > |> sm'.serialize 00:01:03 v #2192 > > |> resultm.map_error' (sm'.format' >> sm'.from_std_string) 00:01:03 v #2193 > > |> resultm.map' sm'.from_std_string 00:01:03 v #2194 > > |> async.new_future_move 00:01:04 v #2195 > > 00:01:04 v #2196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:04 v #2197 > > //// test 00:01:04 v #2198 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:01:04 v #2199 > > rayon regex serde_json sha2 00:01:04 v #2200 > > 00:01:04 v #2201 > > inl file_name = "main.fs" 00:01:04 v #2202 > > inl code = "let method0 () =\n 3 - 6 |> System.Console.WriteLine\nmethod0 00:01:04 v #2203 > > ()\n" 00:01:04 v #2204 > > 00:01:04 v #2205 > > inl temp_dir, disposable = 00:01:04 v #2206 > > (file_name, code) 00:01:04 v #2207 > > |> sm'.format_debug 00:01:04 v #2208 > > |> crypto.hash_text 00:01:04 v #2209 > > |> file_system.create_temp_dir' 00:01:04 v #2210 > > inl fs_path = temp_dir </> file_name 00:01:04 v #2211 > > 00:01:04 v #2212 > > code |> file_system.write_all_text fs_path 00:01:04 v #2213 > > 00:01:04 v #2214 > > get_command () 00:01:04 v #2215 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:01:04 v #2216 > > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get) 00:01:04 v #2217 > > |> run Verbose 00:01:04 v #2218 > > |> async.block_on_futures 00:01:04 v #2219 > > |> resultm.unwrap' 00:01:04 v #2220 > > |> sm'.deserialize 00:01:04 v #2221 > > |> resultm.unwrap' 00:01:04 v #2222 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:01:04 v #2223 > > |> optionm'.unwrap 00:01:04 v #2224 > > |> sm'.from_std_string 00:01:04 v #2225 > > |> sm'.deserialize 00:01:04 v #2226 > > |> resultm.unwrap' 00:01:04 v #2227 > > |> fun result => 00:01:04 v #2228 > > result 00:01:04 v #2229 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:01:04 v #2230 > > |> optionm'.unwrap 00:01:04 v #2231 > > |> sm'.from_std_string 00:01:04 v #2232 > > |> _assert_eq "rs" 00:01:04 v #2233 > > result 00:01:04 v #2234 > > |> mapm.get ("output" |> sm'.to_std_string) 00:01:04 v #2235 > > |> optionm'.unwrap 00:01:04 v #2236 > > |> sm'.from_std_string 00:01:04 v #2237 > > |> _assert_eq "-3" 00:01:04 v #2238 > > 00:01:04 v #2239 > > disposable |> use |> ignore 00:02:00 v #2240 > > 00:02:00 v #2241 > > ╭─[ 56.39s - return value ]────────────────────────────────────────────────────╮ 00:02:00 v #2242 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:02:00 v #2243 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_448adb05 │ 00:02:00 v #2244 > > │ 95b0e6691fc9d01d414294e018c9f465ed5f5db357ca18063e0c4d62\84b99b0b-d6d4-d4b8- │ 00:02:00 v #2245 > > │ 7f79-3c480ce421da } │ 00:02:00 v #2246 > > │ 00:00:00 v #2 file_system.create_dir / { dir = │ 00:02:00 v #2247 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Rust\34ab │ 00:02:00 v #2248 > > │ 53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026 } │ 00:02:00 v #2249 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet; │ 00:02:00 v #2250 > > │ arguments = ["fable", │ 00:02:00 v #2251 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Rust/34a │ 00:02:00 v #2252 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026/spiral_builder │ 00:02:00 v #2253 > > │ .fsproj", "--optimize", "--lang", "rs", "--extension", ".rs", "--outDir", │ 00:02:00 v #2254 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\R │ 00:02:00 v #2255 > > │ ust\\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026", │ 00:02:00 v #2256 > > │ "--define", "_WINDOWS"]; options = { command = dotnet fable │ 00:02:00 v #2257 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Rust/34a │ 00:02:00 v #2258 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026/spiral_builder │ 00:02:00 v #2259 > > │ .fsproj" --optimize --lang rs --extension .rs --outDir │ 00:02:00 v #2260 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Rust\34a │ 00:02:00 v #2261 > > │ b53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026" --define │ 00:02:00 v #2262 > > │ _WINDOWS; cancellation_token = None; environment_variables = Array(MutCell([ │ 00:02:00 v #2263 > > │ ])); on_line = None; stdin = None; trace = true; working_directory = None } │ 00:02:00 v #2264 > > │ } │ 00:02:00 v #2265 > > │ 00:00:00 v #4 > Fable │ 00:02:00 v #2266 > > │ ...der\packages\Rust\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d03 │ 00:02:00 v #2267 > > │ 32fae0026\spiral_builder.rs; cleanup = │ 00:02:00 v #2268 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │ 00:02:00 v #2269 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │ 00:02:00 v #2270 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │ 00:02:00 v #2271 > > │ 41a97d0332fae0026.d", true, │ 00:02:00 v #2272 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │ 00:02:00 v #2273 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │ 00:02:00 v #2274 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │ 00:02:00 v #2275 > > │ 41a97d0332fae0026.exe", true, │ 00:02:00 v #2276 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │ 00:02:00 v #2277 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │ 00:02:00 v #2278 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │ 00:02:00 v #2279 > > │ 41a97d0332fae0026.pdb", true, │ 00:02:00 v #2280 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │ 00:02:00 v #2281 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │ 00:02:00 v #2282 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │ 00:02:00 v #2283 > > │ 41a97d0332fae0026.wasm", false, │ 00:02:00 v #2284 > > │ UH4_1("c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Ru │ 00:02:00 v #2285 > > │ st\34ab53ebc795bc28e69c93f16f6227b083afc493df0b85441a97d0332fae0026\../../.. │ 00:02:00 v #2286 > > │ \target/debug/spiral_builder_34ab53ebc795bc28e69c93f16f6227b083afc493df0b854 │ 00:02:00 v #2287 > > │ 41a97d0332fae0026", false, UH4_0))))) } │ 00:02:00 v #2288 > > │ __assert_eq / actual: "rs" / expected: "rs" │ 00:02:00 v #2289 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:02:00 v #2290 > > │ │ 00:02:00 v #2291 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #2292 > > 00:02:00 v #2293 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:00 v #2294 > > //// test 00:02:00 v #2295 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:02:00 v #2296 > > rayon regex serde_json sha2 00:02:00 v #2297 > > 00:02:00 v #2298 > > inl file_name = "main.fs" 00:02:00 v #2299 > > inl code = "3 - 6 |> System.Console.WriteLine\n" 00:02:00 v #2300 > > 00:02:00 v #2301 > > inl temp_dir, disposable = 00:02:00 v #2302 > > (file_name, code) 00:02:00 v #2303 > > |> sm'.format_debug 00:02:00 v #2304 > > |> crypto.hash_text 00:02:00 v #2305 > > |> file_system.create_temp_dir' 00:02:00 v #2306 > > inl fs_path = temp_dir </> file_name 00:02:00 v #2307 > > 00:02:00 v #2308 > > code |> file_system.write_all_text fs_path 00:02:00 v #2309 > > 00:02:00 v #2310 > > get_command () 00:02:00 v #2311 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:02:00 v #2312 > > \\\"typescript\\\""' |> runtime.split_args |> resultm.get) 00:02:00 v #2313 > > |> run Verbose 00:02:00 v #2314 > > |> async.block_on_futures 00:02:00 v #2315 > > |> resultm.unwrap' 00:02:00 v #2316 > > |> sm'.deserialize 00:02:00 v #2317 > > |> resultm.unwrap' 00:02:00 v #2318 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:02:00 v #2319 > > |> optionm'.unwrap 00:02:00 v #2320 > > |> sm'.from_std_string 00:02:00 v #2321 > > |> sm'.deserialize 00:02:00 v #2322 > > |> resultm.unwrap' 00:02:00 v #2323 > > |> fun result => 00:02:00 v #2324 > > result 00:02:00 v #2325 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:02:00 v #2326 > > |> optionm'.unwrap 00:02:00 v #2327 > > |> sm'.from_std_string 00:02:00 v #2328 > > |> _assert_eq "ts" 00:02:00 v #2329 > > result 00:02:00 v #2330 > > |> mapm.get ("output" |> sm'.to_std_string) 00:02:00 v #2331 > > |> optionm'.unwrap 00:02:00 v #2332 > > |> sm'.from_std_string 00:02:00 v #2333 > > |> _assert_eq "-3" 00:02:00 v #2334 > > 00:02:00 v #2335 > > disposable |> use |> ignore 00:02:51 v #2336 > > 00:02:51 v #2337 > > ╭─[ 50.68s - return value ]────────────────────────────────────────────────────╮ 00:02:51 v #2338 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:02:51 v #2339 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_1630cf94 │ 00:02:51 v #2340 > > │ 68bfdb3a6586d26b4ec871afc4223b47ab6371e4154adc003baebf46\c6422374-71e4-07d4- │ 00:02:51 v #2341 > > │ 0ba4-c3084b24fbba } │ 00:02:51 v #2342 > > │ 00:00:00 v #2 file_system.create_dir / { dir = │ 00:02:51 v #2343 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\TypeScrip │ 00:02:51 v #2344 > > │ t\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8 } │ 00:02:51 v #2345 > > │ 00:00:00 d #3 spiral_builder.process_typescript / { version = │ 00:02:51 v #2346 > > │ US46_0("c:\home\git\polyglot\lib/typescript/fable/fable_modules\fable-librar │ 00:02:51 v #2347 > > │ y-ts.5.0.0-alpha.2", "5.0.0-alpha.2") } │ 00:02:51 v #2348 > > │ 00:00:00 d #4 runtime.execute_with_options / { file_name = dotnet; │ 00:02:51 v #2349 > > │ arguments = ["fable", │ 00:02:51 v #2350 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/TypeScri │ 00:02:51 v #2351 > > │ pt/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral_b │ 00:02:51 v #2352 > > │ uilder.fsproj", "--optimize", "--lang", "ts", "--extension", ".ts", │ 00:02:51 v #2353 > > │ "--outDir", │ 00:02:51 v #2354 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\T │ 00:02:51 v #2355 > > │ ypeScript\\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8" │ 00:02:51 v #2356 > > │ , "--define", "_WINDOWS"]; options = { command = dotnet fable │ 00:02:51 v #2357 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/TypeScri │ 00:02:51 v #2358 > > │ pt/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral_b │ 00:02:51 v #2359 > > │ uilder.fsproj" --optimize --lang ts --extension .ts --outDir │ 00:02:51 v #2360 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\TypeScri │ 00:02:51 v #2361 > > │ pt\702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb4...t\.;C:\Users\i574n\scoop\ap │ 00:02:51 v #2362 > > │ ps\dotnet-sdk\current\.;C:\Users\i574n\scoop\apps\perl\current\perl\site\bin │ 00:02:51 v #2363 > > │ ;C:\Users\i574n\scoop\apps\perl\current\perl\bin;C:\Users\i574n\scoop\apps\r │ 00:02:51 v #2364 > > │ ustup\current\.cargo\bin;C:\Users\i574n\scoop\apps\latex\current\texmfs\inst │ 00:02:51 v #2365 > > │ all\miktex\bin\x64;C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current;C:\U │ 00:02:51 v #2366 > > │ sers\i574n\scoop\apps\dotnet-sdk\current;C:\Users\i574n\scoop\apps\gsudo\cur │ 00:02:51 v #2367 > > │ rent;C:\Users\i574n\scoop\apps\python\current;C:\Users\i574n\scoop\apps\nirc │ 00:02:51 v #2368 > > │ md\current;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n │ 00:02:51 v #2369 > > │ /scoop/buckets/mold/home/windows/path;C:\Users\i574n/scoop/persist/rustup/.c │ 00:02:51 v #2370 > > │ argo/bin;C:\Users\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\Users\i574n/ │ 00:02:51 v #2371 > > │ scoop/apps/cygwin/current/root/bin;C:\Users\i574n\AppData\Local\Programs\Mic │ 00:02:51 v #2372 > > │ rosoft VS │ 00:02:51 v #2373 > > │ Code\bin;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n\. │ 00:02:51 v #2374 > > │ bun\bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n\scoop\shims;C:\Users\i57 │ 00:02:51 v #2375 > > │ 4n\.fly\bin;C:\Program │ 00:02:51 v #2376 > > │ Files\Wasmtime\bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n/.cargo/bin;C: │ 00:02:51 v #2377 > > │ \Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\U │ 00:02:51 v #2378 > > │ sers\i574n/.cargo/bin;C:\Users\i574n/.bun/bin"), ("TRACE_LEVEL", │ 00:02:51 v #2379 > > │ "Verbose")])); on_line = None; stdin = None; trace = true; working_directory │ 00:02:51 v #2380 > > │ = None } } │ 00:02:51 v #2381 > > │ 00:00:00 v #19 > -3 │ 00:02:51 v #2382 > > │ 00:00:00 v #20 runtime.execute_with_options / result / { exit_code = │ 00:02:51 v #2383 > > │ 0; std_trace_length = 2 } │ 00:02:51 v #2384 > > │ __assert_eq / actual: "ts" / expected: "ts" │ 00:02:51 v #2385 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:02:51 v #2386 > > │ │ 00:02:51 v #2387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:51 v #2388 > > 00:02:51 v #2389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:51 v #2390 > > //// test 00:02:51 v #2391 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:02:51 v #2392 > > rayon regex serde_json sha2 00:02:51 v #2393 > > 00:02:51 v #2394 > > inl file_name = "main.fs" 00:02:51 v #2395 > > inl code = "3 - 6 |> System.Console.WriteLine\n" 00:02:51 v #2396 > > 00:02:51 v #2397 > > inl temp_dir, disposable = 00:02:51 v #2398 > > (file_name, code) 00:02:51 v #2399 > > |> sm'.format_debug 00:02:51 v #2400 > > |> crypto.hash_text 00:02:51 v #2401 > > |> file_system.create_temp_dir' 00:02:51 v #2402 > > inl fs_path = temp_dir </> file_name 00:02:51 v #2403 > > 00:02:51 v #2404 > > code |> file_system.write_all_text fs_path 00:02:51 v #2405 > > 00:02:51 v #2406 > > get_command () 00:02:51 v #2407 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:02:51 v #2408 > > \\\"python\\\""' |> runtime.split_args |> resultm.get) 00:02:51 v #2409 > > |> run Verbose 00:02:51 v #2410 > > |> async.block_on_futures 00:02:51 v #2411 > > |> resultm.unwrap' 00:02:51 v #2412 > > |> sm'.deserialize 00:02:51 v #2413 > > |> resultm.unwrap' 00:02:51 v #2414 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:02:51 v #2415 > > |> optionm'.unwrap 00:02:51 v #2416 > > |> sm'.from_std_string 00:02:51 v #2417 > > |> sm'.deserialize 00:02:51 v #2418 > > |> resultm.unwrap' 00:02:51 v #2419 > > |> fun result => 00:02:51 v #2420 > > result 00:02:51 v #2421 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:02:51 v #2422 > > |> optionm'.unwrap 00:02:51 v #2423 > > |> sm'.from_std_string 00:02:51 v #2424 > > |> _assert_eq "py" 00:02:51 v #2425 > > result 00:02:51 v #2426 > > |> mapm.get ("output" |> sm'.to_std_string) 00:02:51 v #2427 > > |> optionm'.unwrap 00:02:51 v #2428 > > |> sm'.from_std_string 00:02:51 v #2429 > > |> _assert_eq "-3" 00:02:51 v #2430 > > 00:02:51 v #2431 > > disposable |> use |> ignore 00:03:43 v #2432 > > 00:03:43 v #2433 > > ╭─[ 52.49s - return value ]────────────────────────────────────────────────────╮ 00:03:43 v #2434 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:03:43 v #2435 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_a62dea81 │ 00:03:43 v #2436 > > │ 4a7dac08dab4601000ee61b55af3dc1734ab424cc59fae39dc5d8f9a\c6422374-71e4-07d4- │ 00:03:43 v #2437 > > │ 0ba4-c3084b24fbba } │ 00:03:43 v #2438 > > │ 00:00:00 v #2 file_system.create_dir / { dir = │ 00:03:43 v #2439 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\cb │ 00:03:43 v #2440 > > │ 8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce } │ 00:03:43 v #2441 > > │ 00:00:00 d #3 runtime.execute_with_options / { file_name = dotnet; │ 00:03:43 v #2442 > > │ arguments = ["fable", │ 00:03:43 v #2443 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Python/c │ 00:03:43 v #2444 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce/spiral_build │ 00:03:43 v #2445 > > │ er.fsproj", "--optimize", "--lang", "py", "--extension", ".py", "--outDir", │ 00:03:43 v #2446 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\P │ 00:03:43 v #2447 > > │ ython\\cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce", │ 00:03:43 v #2448 > > │ "--define", "_WINDOWS"]; options = { command = dotnet fable │ 00:03:43 v #2449 > > │ "c:/home/git/polyglot/target/spiral_builder/spiral_builder/packages/Python/c │ 00:03:43 v #2450 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce/spiral_build │ 00:03:43 v #2451 > > │ er.fsproj" --optimize --lang py --extension .py --outDir │ 00:03:43 v #2452 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\c │ 00:03:43 v #2453 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce" --define │ 00:03:43 v #2454 > > │ _WINDOWS; cancellation_token = None; environment_variables = Array(MutCell([ │ 00:03:43 v #2455 > > │ ])); on_line = None; stdin = None; trace = true; working_directory = None } │ 00:03:43 v #2456 > > │ } │ 00:03:43 v #2457 > > │ 00:00:00 v #...#10 > Retrieving project options from cache, in case of │ 00:03:43 v #2458 > > │ issues run `dotnet fable clean` or try `--noCache` option. │ 00:03:43 v #2459 > > │ 00:00:00 v #11 > Project and references (1 source files) parsed in │ 00:03:43 v #2460 > > │ 162ms │ 00:03:43 v #2461 > > │ 00:00:00 v #12 > │ 00:03:43 v #2462 > > │ 00:00:00 v #13 > Skipped compilation because all generated files are │ 00:03:43 v #2463 > > │ up-to-date! │ 00:03:43 v #2464 > > │ 00:00:00 v #14 runtime.execute_with_options / result / { exit_code = │ 00:03:43 v #2465 > > │ 0; std_trace_length = 539 } │ 00:03:43 v #2466 > > │ 00:00:00 d #15 spiral_builder.process_python / { new_code_path = │ 00:03:43 v #2467 > > │ c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\cb │ 00:03:43 v #2468 > > │ 8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\spiral_builde │ 00:03:43 v #2469 > > │ r.py } │ 00:03:43 v #2470 > > │ 00:00:00 d #16 runtime.execute_with_options / { file_name = python; │ 00:03:43 v #2471 > > │ arguments = [ │ 00:03:43 v #2472 > > │ "c:\\home\\git\\polyglot\\target/spiral_builder\\spiral_builder\\packages\\P │ 00:03:43 v #2473 > > │ ython\\cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\\spi │ 00:03:43 v #2474 > > │ ral_builder.py"]; options = { command = python │ 00:03:43 v #2475 > > │ "c:\home\git\polyglot\target/spiral_builder\spiral_builder\packages\Python\c │ 00:03:43 v #2476 > > │ b8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\spiral_build │ 00:03:43 v #2477 > > │ er.py"; cancellation_token = None; environment_variables = Array(MutCell([ │ 00:03:43 v #2478 > > │ ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin = None; trace = true; │ 00:03:43 v #2479 > > │ working_directory = None } } │ 00:03:43 v #2480 > > │ 00:00:00 v #17 > -3 │ 00:03:43 v #2481 > > │ 00:00:00 v #18 runtime.execute_with_options / result / { exit_code = │ 00:03:43 v #2482 > > │ 0; std_trace_length = 2 } │ 00:03:43 v #2483 > > │ __assert_eq / actual: "py" / expected: "py" │ 00:03:43 v #2484 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:03:43 v #2485 > > │ │ 00:03:43 v #2486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:43 v #2487 > > 00:03:43 v #2488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #2489 > > //// test 00:03:43 v #2490 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:03:43 v #2491 > > rayon regex serde_json sha2 00:03:43 v #2492 > > 00:03:43 v #2493 > > inl file_name = "test.dib" 00:03:43 v #2494 > > inl code = 00:03:43 v #2495 > > 00:03:43 v #2496 > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\ 00:03:43 v #2497 > > n#!fsharp\n\n3 - 6\n" 00:03:43 v #2498 > > 00:03:43 v #2499 > > inl temp_dir, disposable = 00:03:43 v #2500 > > (file_name, code) 00:03:43 v #2501 > > |> sm'.format_debug 00:03:43 v #2502 > > |> crypto.hash_text 00:03:43 v #2503 > > |> file_system.create_temp_dir' 00:03:43 v #2504 > > inl path = temp_dir </> file_name |> file_system.normalize_path 00:03:43 v #2505 > > 00:03:43 v #2506 > > code 00:03:43 v #2507 > > |> file_system.write_all_text path 00:03:43 v #2508 > > 00:03:43 v #2509 > > get_command () 00:03:43 v #2510 > > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |> 00:03:43 v #2511 > > runtime.split_args |> resultm.get) 00:03:43 v #2512 > > |> run Verbose 00:03:43 v #2513 > > |> async.block_on_futures 00:03:43 v #2514 > > |> resultm.unwrap' 00:03:43 v #2515 > > |> __assert sm'.contains Silent "<pre>-3 " 00:03:43 v #2516 > > 00:03:43 v #2517 > > $'$"{!path}.html"' 00:03:43 v #2518 > > |> file_system.read_all_text 00:03:43 v #2519 > > |> __assert sm'.contains Silent "\"cell-id=1\"" 00:03:43 v #2520 > > 00:03:43 v #2521 > > disposable |> use |> ignore 00:04:43 v #2522 > > 00:04:43 v #2523 > > ╭─[ 59.92s - return value ]────────────────────────────────────────────────────╮ 00:04:43 v #2524 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:04:43 v #2525 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_ea6383f4 │ 00:04:43 v #2526 > > │ 9082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084\af524e22-8e9a-5d18- │ 00:04:43 v #2527 > > │ 99ed-bd86e1b74623 } │ 00:04:43 v #2528 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; │ 00:04:43 v #2529 > > │ arguments = ["repl", "--exit-after-run", "--run", │ 00:04:43 v #2530 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2531 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2532 > > │ -99ed-bd86e1b74623/test.dib", "--output-path", │ 00:04:43 v #2533 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2534 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2535 > > │ -99ed-bd86e1b74623/test.dib.ipynb"]; options = { command = dotnet repl │ 00:04:43 v #2536 > > │ --exit-after-run --run │ 00:04:43 v #2537 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2538 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2539 > > │ -99ed-bd86e1b74623/test.dib" --output-path │ 00:04:43 v #2540 > > │ "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2541 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2542 > > │ -99ed-bd86e1b74623/test.dib.ipynb"; cancellation_token = None; │ 00:04:43 v #2543 > > │ environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), │ 00:04:43 v #2544 > > │ ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; │ 00:04:43 v #2545 > > │ working_directory = None } } │ 00:04:43 v #2546 > > │ > │ 00:04:43 v #2547 > > │ > ── fsharp │ 00:04:43 v #2548 > > │ ────────────────────────────────────────────────────────────────────── │ 00:04:43 v #2549 > > │ > 3 - 6 │ 00:04:43 v #2550 > > │ > │ 00:04:43 v #2551 > > │ > ╭─[ 4.07s - return va....dib.html │ 00:04:43 v #2552 > > │ 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = │ 00:04:43 v #2553 > > │ 0; std_trace_length = 1126 } │ 00:04:43 v #2554 > > │ 00:00:08 d #12 spiral_builder.run / dib / jupyter nbconvert / { │ 00:04:43 v #2555 > > │ exit_code = 0; jupyter_result_length = 1126 } │ 00:04:43 v #2556 > > │ 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; │ 00:04:43 v #2557 > > │ arguments = ["-c", "$counter = 1; $path = │ 00:04:43 v #2558 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2559 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2560 > > │ -99ed-bd86e1b74623/test.dib.html'; (Get-Content $path -Raw) -replace │ 00:04:43 v #2561 > > │ '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | │ 00:04:43 v #2562 > > │ Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = │ 00:04:43 v #2563 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_ea6383f │ 00:04:43 v #2564 > > │ 49082f790ab1e4d7fee45c38be150700b7dcbf451973e5c4fb6d78084/af524e22-8e9a-5d18 │ 00:04:43 v #2565 > > │ -99ed-bd86e1b74623/test.dib.html'; (Get-Content $path -Raw) -replace │ 00:04:43 v #2566 > > │ '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | │ 00:04:43 v #2567 > > │ Set-Content $path"; cancellation_token = None; environment_variables = │ 00:04:43 v #2568 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true; │ 00:04:43 v #2569 > > │ working_directory = None } } │ 00:04:43 v #2570 > > │ 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = │ 00:04:43 v #2571 > > │ 0; std_trace_length = 0 } │ 00:04:43 v #2572 > > │ 00:00:08 d #15 spiral_builder.run / dib / html cell ids / { exit_code │ 00:04:43 v #2573 > > │ = 0; pwsh_replace_html_result_length = 0 } │ 00:04:43 v #2574 > > │ 00:00:08 d #16 spiral_builder.run / dib / { exit_code = 0; │ 00:04:43 v #2575 > > │ result_length = 4108 } │ 00:04:43 v #2576 > > │ │ 00:04:43 v #2577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:43 v #2578 > > 00:04:43 v #2579 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:43 v #2580 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:43 v #2581 > > │ ## tests │ 00:04:43 v #2582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:43 v #2583 > > 00:04:43 v #2584 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:43 v #2585 > > inl tests () = 00:04:43 v #2586 > > testing.run_tests { 00:04:43 v #2587 > > verify_app = get_command >> runtime.command_debug_assert 00:04:43 v #2588 > > } 00:04:44 v #2589 > > 00:04:44 v #2590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:44 v #2591 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:44 v #2592 > > │ ## main │ 00:04:44 v #2593 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:44 v #2594 > > 00:04:44 v #2595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:44 v #2596 > > ///! _ 00:04:44 v #2597 > > 00:04:44 v #2598 > > inl main (args : array_base string) = 00:04:44 v #2599 > > inl trace_state = get_trace_state_or_init None 00:04:44 v #2600 > > 00:04:44 v #2601 > > trace Debug 00:04:44 v #2602 > > fun () => "spiral_builder.main" 00:04:44 v #2603 > > fun () => { args } 00:04:44 v #2604 > > 00:04:44 v #2605 > > inl command = get_command () 00:04:44 v #2606 > > inl arg_matches = command |> runtime.command_get_matches 00:04:44 v #2607 > > 00:04:44 v #2608 > > inl trace_state_level = trace_state.level 00:04:44 v #2609 > > 00:04:44 v #2610 > > inl result = 00:04:44 v #2611 > > arg_matches 00:04:44 v #2612 > > |> run *trace_state_level 00:04:44 v #2613 > > |> async.block_on_futures 00:04:44 v #2614 > > |> resultm.unwrap' 00:04:44 v #2615 > > 00:04:44 v #2616 > > if *trace_state_level = Info 00:04:44 v #2617 > > then result |> console.write_line 00:04:44 v #2618 > > 00:04:44 v #2619 > > 0i32 00:04:44 v #2620 > > 00:04:44 v #2621 > > inl main () = 00:04:44 v #2622 > > $'let tests () = !tests ()' : () 00:04:44 v #2623 > > $'let main args = !main args' : () 00:04:58 v #2624 > 00:04:57 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 113183 } 00:04:58 v #2625 > 00:04:57 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:59 v #2626 > 00:04:58 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb to html 00:04:59 v #2627 > 00:04:58 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:59 v #2628 > 00:04:58 v #7 ! validate(nb) 00:05:00 v #2629 > 00:04:59 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:00 v #2630 > 00:04:59 v #9 ! return _pygments_highlight( 00:05:02 v #2631 > 00:05:01 v #10 ! [NbConvertApp] Writing 600041 bytes to c:\home\git\polyglot\apps\spiral\builder\spiral_builder.dib.html 00:05:02 v #2632 > 00:05:01 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 888 } 00:05:02 v #2633 > 00:05:01 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 888 } 00:05:02 v #2634 > 00:05:01 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:02 v #2635 > 00:05:01 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:02 v #2636 > 00:05:01 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:02 v #2637 > 00:05:01 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 114130 } 00:05:02 d #2638 runtime.execute_with_options_async / { exit_code = 0; output_length = 122065 } 00:05:02 d #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path spiral_builder.dib 00:00:00 d #1 writeDibCode / output: Spi / path: spiral_builder.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral_builder.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_builder\nopen file_system_operators\nopen rust.rust_operators\n...ain args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #22 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #23 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #24 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #25 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #26 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #27 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #28 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #29 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #30 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #31 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #32 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #33 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #34 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #35 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #36 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #37 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #38 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #39 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #40 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #41 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #42 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #43 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #44 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #45 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #46 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #47 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #48 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #49 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #50 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #51 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #52 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #53 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #54 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #55 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #56 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #57 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #58 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #59 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:15 d #60 Supervisor.buildFile / AsyncSeq.scan / path: spiral_builder.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Box<$0>")>] #endif type Box<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit...x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" let _run_target_args'_v83 = v92 #endif #else let v93 : string = match v82 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" let _run_target_args'_v83 = v93 #endif let v94 : string = _run_target_args'_v83 let v97 : US0 = v21.l0 let v98 : bool = match v97 with | US0_2 -> (* Info *) true | _ -> false if v98 then let v99 : unit = () let v100 : (unit -> unit) = closure10(v94) let v101 : unit = (fun () -> v100 (); v99) () () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure1() let main args = v1 args () 00:00:15 d #61 Supervisor.buildFile / takeWhileInclusive / path: spiral_builder.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Box<$0>")>] #endif type Box<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit...x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" let _run_target_args'_v83 = v92 #endif #else let v93 : string = match v82 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" let _run_target_args'_v83 = v93 #endif let v94 : string = _run_target_args'_v83 let v97 : US0 = v21.l0 let v98 : bool = match v97 with | US0_2 -> (* Info *) true | _ -> false if v98 then let v99 : unit = () let v100 : (unit -> unit) = closure10(v94) let v101 : unit = (fun () -> v100 (); v99) () () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure1() let main args = v1 args () 00:00:15 d #62 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash: / code.Length: 1406995 targetDir: C:\home\git\polyglot\target\Builder\spiral_builder Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @entropitor Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral_builder\spiral_builder.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 205ms Started Fable compilation... Fable compilation finished in 16265ms .\lib\spiral\common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\sm.fsx(521,0): (521,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\date_time.fsx(2392,0): (2392,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\runtime.fsx(6912,0): (6912,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\file_system.fsx(16450,0): (16450,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder) Finished `release` profile [optimized] target(s) in 21.86s Running unittests spiral_builder.rs (C:\home\git\polyglot\workspace\target\release\deps\spiral_builder-2408ea34a3d0d37c.exe) running 1 test test module_7e2cd9e0::Spiral_builder::verify_app ... ok successes: successes: module_7e2cd9e0::Spiral_builder::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling spiral_builder v0.0.1 (C:\home\git\polyglot\apps\spiral\builder) error: failed to remove file `C:\home\git\polyglot\workspace\target\release\spiral_builder.exe` Caused by: Access is denied. (os error 5) # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\apps\spiral\builder / $OnError: Continue / $exitcode: 101 / $EnvVars: { "PATH": "C:\\Users\\i574n\\scoop\\apps\\pwsh\\current;C:\\Program Files\\NVIDIA\\CUDNN\\v9.1\\bin;C:\\ProgramData\\scoop\\shims;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\dotnet\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files\\Perforce;C:\\Program Files\\Wasmtime\\bin;C:\\Program Files\\Perforce\\;C:\\Program Files\\Microsoft SQL Server\\150\\Tools\\Binn\\;C:\\Program Files (x86)\\Windows Kits\\10\\Windows Performance Toolkit\\;C:\\Users\\i574n\\scoop\\apps\\vscode-insiders\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\elixir\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\openssl\\current\\bin;C:\\Users\\i574n\\scoop\\apps\\vulkan\\current\\Bin;C:\\Users\\i574n\\scoop\\apps\\vulkan\\current\\Tools;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\Scripts;C:\\Users\\i574n\\scoop\\apps\\python312\\current\\.;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current\\.;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\site\\bin;C:\\Users\\i574n\\scoop\\apps\\perl\\current\\perl\\bin;C:\\Users\\i574n\\scoop\\apps\\rustup\\current\\.cargo\\bin;C:\\Users\\i574n\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk-preview\\current;C:\\Users\\i574n\\scoop\\apps\\dotnet-sdk\\current;C:\\Users\\i574n\\scoop\\apps\\gsudo\\current;C:\\Users\\i574n\\scoop\\apps\\python\\current;C:\\Users\\i574n\\scoop\\apps\\nircmd\\current;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n/scoop/buckets/mold/home/windows/path;C:\\Users\\i574n/scoop/persist/rustup/.cargo/bin;C:\\Users\\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\\Users\\i574n/scoop/apps/cygwin/current/root/bin;C:\\Users\\i574n\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\i574n\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\i574n\\.bun\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n\\scoop\\shims;C:\\Users\\i574n\\.fly\\bin;C:\\Program Files\\Wasmtime\\bin;C:\\Users\\i574n\\.dotnet\\tools;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin;C:\\Users\\i574n/.cargo/bin;C:\\Users\\i574n/.bun/bin" } / $Error: '' / $ScriptBlock: 'cargo build --release'
In [ ]:
{ pwsh ../apps/spiral/wasm/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path spiral_wasm.dib"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path spiral_wasm.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_wasm.dib"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib" --output-path "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # spiral_wasm │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 v #9 > > 00:00:05 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #11 > > open rust.rust_operators 00:00:05 v #12 > > open rust 00:00:05 v #13 > > open sm'_operators 00:00:06 v #14 > > 00:00:06 v #15 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 v #16 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 v #17 > > │ ## spiral_wasm │ 00:00:06 v #18 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #19 > > 00:00:06 v #20 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 v #21 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 v #22 > > │ ### get_args │ 00:00:06 v #23 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #24 > > 00:00:06 v #25 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 v #26 > > inl get_args () = 00:00:06 v #27 > > { 00:00:06 v #28 > > exception = "exception", 'e' 00:00:06 v #29 > > trace_level = "trace_level", 't' 00:00:06 v #30 > > wasm = "wasm", 'w' 00:00:06 v #31 > > } 00:00:07 v #32 > > 00:00:07 v #33 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #34 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #35 > > │ ### get_command │ 00:00:07 v #36 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #37 > > 00:00:07 v #38 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #39 > > let get_command () = 00:00:07 v #40 > > ##"command" 00:00:07 v #41 > > |> runtime.new_command 00:00:07 v #42 > > |> runtime.command_args_override_self true 00:00:07 v #43 > > |> runtime.command_init_arg (get_args () .exception) ( 00:00:07 v #44 > > runtime.arg_num_args_range ( 00:00:07 v #45 > > runtime.new_value_range 00:00:07 v #46 > > true 00:00:07 v #47 > > (am'.End eval) 00:00:07 v #48 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:07 v #49 > > ) 00:00:07 v #50 > > >> runtime.arg_require_equals true 00:00:07 v #51 > > >> runtime.arg_default_missing_value "" 00:00:07 v #52 > > ) 00:00:07 v #53 > > |> runtime.command_init_arg (get_args () .trace_level) ( 00:00:07 v #54 > > real runtime.arg_union `trace_level ignore 00:00:07 v #55 > > ) 00:00:07 v #56 > > |> runtime.command_init_arg (get_args () .wasm) ( 00:00:07 v #57 > > runtime.arg_required true 00:00:07 v #58 > > ) 00:00:07 v #59 > > 00:00:07 v #60 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #61 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #62 > > │ ### run │ 00:00:07 v #63 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #64 > > 00:00:07 v #65 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #66 > > let rec run 00:00:07 v #67 > > (matches : runtime.arg_matches) 00:00:07 v #68 > > : async.future_pin ( 00:00:07 v #69 > > resultm.result' 00:00:07 v #70 > > u8 00:00:07 v #71 > > resultm.anyhow_error 00:00:07 v #72 > > ) 00:00:07 v #73 > > = 00:00:07 v #74 > > fun () => 00:00:07 v #75 > > inl wasm_path = 00:00:07 v #76 > > matches 00:00:07 v #77 > > |> runtime.matches_get_one (get_args () .wasm |> fst) 00:00:07 v #78 > > |> optionm'.unbox 00:00:07 v #79 > > |> optionm.value 00:00:07 v #80 > > |> sm'.from_std_string 00:00:07 v #81 > > 00:00:07 v #82 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path } 00:00:07 v #83 > > 00:00:07 v #84 > > inl wasm = wasm_path |> file_system.read |> resultm.try' 00:00:07 v #85 > > 00:00:07 v #86 > > let fn (retry : u8) = 00:00:07 v #87 > > fun () => 00:00:07 v #88 > > inl worker = near_workspaces.sandbox_worker () |> resultm.try' 00:00:07 v #89 > > inl contract = worker |> near_workspaces.dev_deploy wasm |> 00:00:07 v #90 > > async.await |> resultm.try' 00:00:07 v #91 > > 00:00:07 v #92 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:07 v #93 > > worker contract } 00:00:07 v #94 > > 00:00:07 v #95 > > inl result = 00:00:07 v #96 > > contract 00:00:07 v #97 > > |> near_workspaces.call "state_main" 00:00:07 v #98 > > |> near_workspaces.gas (near_workspaces.from_tgas 300) 00:00:07 v #99 > > |> near_workspaces.transact 00:00:07 v #100 > > |> async.await 00:00:07 v #101 > > |> resultm.try' 00:00:07 v #102 > > 00:00:07 v #103 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:07 v #104 > > result } 00:00:07 v #105 > > 00:00:07 v #106 > > result 00:00:07 v #107 > > |> near_workspaces.logs 00:00:07 v #108 > > |> am'.vec_map sm'.ref_to_std_string 00:00:07 v #109 > > |> am'.vec_for_each console.write_line 00:00:07 v #110 > > 00:00:07 v #111 > > trace_raw Info (fun () => " ") 00:00:07 v #112 > > result |> near_workspaces.print_usd retry 00:00:07 v #113 > > 00:00:07 v #114 > > inl result2 = result |> near_workspaces.into_result 00:00:07 v #115 > > 00:00:07 v #116 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 00:00:07 v #117 > > } 00:00:07 v #118 > > 00:00:07 v #119 > > inl receipt_failures = result |> 00:00:07 v #120 > > near_workspaces.receipt_failures 00:00:07 v #121 > > inl receipt_failures_len = receipt_failures |> am'.vec_len |> 00:00:07 v #122 > > i32 00:00:07 v #123 > > 00:00:07 v #124 > > trace Verbose 00:00:07 v #125 > > fun () => "spiral_wasm.run" 00:00:07 v #126 > > fun () => { receipt_failures_len receipt_failures } 00:00:07 v #127 > > 00:00:07 v #128 > > inl receipt_outcomes = result |> 00:00:07 v #129 > > near_workspaces.receipt_outcomes 00:00:07 v #130 > > inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> 00:00:07 v #131 > > i32 00:00:07 v #132 > > 00:00:07 v #133 > > trace Verbose 00:00:07 v #134 > > fun () => "spiral_wasm.run" 00:00:07 v #135 > > fun () => { receipt_outcomes_len receipt_outcomes } 00:00:07 v #136 > > 00:00:07 v #137 > > inl json = result |> near_workspaces.json 00:00:07 v #138 > > 00:00:07 v #139 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { json } 00:00:07 v #140 > > 00:00:07 v #141 > > inl borsh = result |> near_workspaces.borsh 00:00:07 v #142 > > 00:00:07 v #143 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh } 00:00:07 v #144 > > 00:00:07 v #145 > > inl error = { receipt_outcomes_len retry receipt_failures } |> 00:00:07 v #146 > > sm'.format 00:00:07 v #147 > > if receipt_failures_len > 0 00:00:07 v #148 > > then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box 00:00:07 v #149 > > elif receipt_outcomes_len > 1 00:00:07 v #150 > > then (Ok None : _ _ resultm.anyhow_error) |> resultm.box 00:00:07 v #151 > > else error |> resultm.anyhow_error |> resultm.err 00:00:07 v #152 > > |> async.new_future_move 00:00:07 v #153 > > 00:00:07 v #154 > > let rec loop (retry : u8) = 00:00:07 v #155 > > inl max = 15 00:00:07 v #156 > > inl init (error : _ string) = 00:00:07 v #157 > > fun () => 00:00:07 v #158 > > { retry error } 00:00:07 v #159 > > |> async.new_future_move 00:00:07 v #160 > > fun () => 00:00:07 v #161 > > inl result = 00:00:07 v #162 > > fn retry 00:00:07 v #163 > > |> async.await 00:00:07 v #164 > > |> resultm.map_error' sm'.format' 00:00:07 v #165 > > |> resultm.unbox 00:00:07 v #166 > > match result with 00:00:07 v #167 > > | Ok (None) => 00:00:07 v #168 > > init None 00:00:07 v #169 > > |> async.await 00:00:07 v #170 > > |> Ok 00:00:07 v #171 > > | Ok (Some error) => 00:00:07 v #172 > > trace Critical (fun () => "spiral_wasm.run / Ok (Some 00:00:07 v #173 > > error)") fun () => { retry error } 00:00:07 v #174 > > init (Some error) 00:00:07 v #175 > > |> async.await 00:00:07 v #176 > > |> Error 00:00:07 v #177 > > | Error error when retry >= max => 00:00:07 v #178 > > trace Warning (fun () => "spiral_wasm.run / Error error") 00:00:07 v #179 > > fun () => { retry error } 00:00:07 v #180 > > trace_raw Warning (fun () => "\n") 00:00:07 v #181 > > init None 00:00:07 v #182 > > |> async.await 00:00:07 v #183 > > |> Ok 00:00:07 v #184 > > | Error error => 00:00:07 v #185 > > trace Warning (fun () => "spiral_wasm.run / Error error") 00:00:07 v #186 > > fun () => { retry error } 00:00:07 v #187 > > trace_raw Warning (fun () => "\n") 00:00:07 v #188 > > loop (retry + 1) |> async.await 00:00:07 v #189 > > |> async.new_future_move 00:00:07 v #190 > > inl retries = loop 1 |> async.await 00:00:07 v #191 > > 00:00:07 v #192 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retries } 00:00:07 v #193 > > 00:00:07 v #194 > > match retries with 00:00:07 v #195 > > | Ok { retry } => Ok retry |> resultm.box 00:00:07 v #196 > > | Error { retry error } => { retries error } |> sm'.format |> 00:00:07 v #197 > > resultm.anyhow_error |> resultm.err 00:00:07 v #198 > > 00:00:07 v #199 > > |> async.new_future_move 00:00:08 v #200 > > 00:00:08 v #201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #202 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #203 > > │ ### main │ 00:00:08 v #204 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #205 > > 00:00:08 v #206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #207 > > ///! _ 00:00:08 v #208 > > 00:00:08 v #209 > > inl main (args : array_base string) = 00:00:08 v #210 > > inl command = get_command () 00:00:08 v #211 > > inl arg_matches = command |> runtime.command_get_matches 00:00:08 v #212 > > 00:00:08 v #213 > > inl trace_level = 00:00:08 v #214 > > arg_matches 00:00:08 v #215 > > |> runtime.matches_get_one (get_args () .trace_level |> fst) 00:00:08 v #216 > > |> optionm'.unbox 00:00:08 v #217 > > |> optionm.map ( 00:00:08 v #218 > > sm'.from_std_string 00:00:08 v #219 > > >> reflection.union_try_pick 00:00:08 v #220 > > ) 00:00:08 v #221 > > |> optionm'.flatten 00:00:08 v #222 > > |> optionm'.default_value Verbose 00:00:08 v #223 > > 00:00:08 v #224 > > inl trace_state = get_trace_state_or_init (Some trace_level) 00:00:08 v #225 > > 00:00:08 v #226 > > trace Verbose 00:00:08 v #227 > > fun () => "spiral_wasm.main" 00:00:08 v #228 > > fun () => { args } 00:00:08 v #229 > > 00:00:08 v #230 > > inl exception = 00:00:08 v #231 > > arg_matches 00:00:08 v #232 > > |> runtime.matches_get_one (get_args () .exception |> fst) 00:00:08 v #233 > > |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >> 00:00:08 v #234 > > sm'.trim_end [[ '\\' ]]) 00:00:08 v #235 > > |> optionm'.unbox 00:00:08 v #236 > > 00:00:08 v #237 > > inl result = 00:00:08 v #238 > > arg_matches 00:00:08 v #239 > > |> run 00:00:08 v #240 > > |> async.block_on_tokio 00:00:08 v #241 > > |> resultm.map_error' sm'.format' 00:00:08 v #242 > > 00:00:08 v #243 > > match result |> resultm.unbox, exception with 00:00:08 v #244 > > | Ok retries, Some exception => 00:00:08 v #245 > > ($'$"spiral_wasm.main / retries: {!retries} / exception: 00:00:08 v #246 > > \'{!exception}\'"' : string) 00:00:08 v #247 > > |> resultm.err |> resultm.unwrap' 00:00:08 v #248 > > | Error _error, Some ("") => 00:00:08 v #249 > > () 00:00:08 v #250 > > | Error error, Some exception when error |> sm'.from_std_string |> 00:00:08 v #251 > > sm'.contains exception => 00:00:08 v #252 > > () 00:00:08 v #253 > > | Error error, Some exception => 00:00:08 v #254 > > ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"' 00:00:08 v #255 > > : string) 00:00:08 v #256 > > |> resultm.err |> resultm.unwrap' 00:00:08 v #257 > > | Ok _retries, _ => 00:00:08 v #258 > > () 00:00:08 v #259 > > | Error _error, _ => 00:00:08 v #260 > > result |> resultm.unwrap' |> ignore 00:00:08 v #261 > > 00:00:08 v #262 > > 0i32 00:00:08 v #263 > > 00:00:08 v #264 > > inl main () = 00:00:08 v #265 > > $'let main args = !main args' : () 00:00:09 v #266 > 00:00:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9687 } 00:00:09 v #267 > 00:00:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:10 v #268 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb to html 00:00:10 v #269 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:10 v #270 > 00:00:09 v #7 ! validate(nb) 00:00:11 v #271 > 00:00:10 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:11 v #272 > 00:00:10 v #9 ! return _pygments_highlight( 00:00:11 v #273 > 00:00:10 v #10 ! [NbConvertApp] Writing 306846 bytes to c:\home\git\polyglot\apps\spiral\wasm\spiral_wasm.dib.html 00:00:11 v #274 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 876 } 00:00:11 v #275 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 876 } 00:00:11 v #276 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:12 v #277 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:12 v #278 > 00:00:11 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:12 v #279 > 00:00:11 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10622 } 00:00:12 d #280 runtime.execute_with_options_async / { exit_code = 0; output_length = 13787 } 00:00:12 d #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path spiral_wasm.dib 00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...s = !main args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>] #endif type clap_builder_ValueRange = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [... #endif #if FABLE_COMPILER_TYPESCRIPT match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #else match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif // run_target_args' is_unit () | _ -> () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () 00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>] #endif type clap_builder_ValueRange = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [... #endif #if FABLE_COMPILER_TYPESCRIPT match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #else match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif // run_target_args' is_unit () | _ -> () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () 00:00:02 d #10 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 227980 targetDir: C:\home\git\polyglot\target\Builder\spiral_wasm Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @rbauduin Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 175ms Started Fable compilation... Fable compilation finished in 8992ms .\lib\spiral\async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\sm.fsx(521,0): (521,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\date_time.fsx(2392,0): (2392,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\runtime.fsx(6912,0): (6912,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\file_system.fsx(16450,0): (16450,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Directory: C:\home\git\polyglot\target\Builder\spiral_wasm\target Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2024-12-15 3:53 PM rs Compiling fable_library_rust v0.1.0 (/mnt/c/home/git/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling spiral_wasm v0.0.1 (/mnt/c/home/git/polyglot/apps/spiral/wasm) Finished `release` profile [optimized] target(s) in 2m 06s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path math.dib --retries 1"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 1; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "1"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/math/math.dib", "--output-path", "c:/home/git/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/math/math.dib" --output-path "c:/home/git/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # math │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 v #9 > > 00:00:05 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #11 > > open testing 00:00:05 v #12 > > open rust.rust_operators 00:00:05 v #13 > > open rust 00:00:07 v #14 > > 00:00:07 v #15 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #16 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #17 > > │ ## complex │ 00:00:07 v #18 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #19 > > 00:00:07 v #20 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #21 > > nominal complex t = 00:00:07 v #22 > > `( 00:00:07 v #23 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:07 v #24 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype 00:00:07 v #25 > > num_complex_Complex<'T> = class end" 00:00:07 v #26 > > $'' : $'num_complex_Complex<`t>' 00:00:07 v #27 > > ) 00:00:07 v #28 > > 00:00:07 v #29 > > inl complex forall t. ((re : t), (im : t)) : complex t = 00:00:07 v #30 > > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') 00:00:07 v #31 > > 00:00:07 v #32 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #33 > > //// test 00:00:07 v #34 > > ///! rust -d num-complex 00:00:07 v #35 > > 00:00:07 v #36 > > complex (0f64, 0f64) 00:00:07 v #37 > > |> sm'.format' 00:00:07 v #38 > > |> sm'.from_std_string 00:00:07 v #39 > > |> _assert_eq "0+0i" 00:00:12 v #40 > > 00:00:12 v #41 > > ╭─[ 5.39s - return value ]─────────────────────────────────────────────────────╮ 00:00:12 v #42 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i" │ 00:00:12 v #43 > > │ │ 00:00:12 v #44 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #45 > > 00:00:12 v #46 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #47 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #48 > > │ ## re │ 00:00:12 v #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #50 > > 00:00:12 v #51 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #52 > > inl re forall t. (c : complex t) : t = 00:00:12 v #53 > > !\\(c, $'"$0.re"') 00:00:13 v #54 > > 00:00:13 v #55 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #56 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 v #57 > > │ ## im │ 00:00:13 v #58 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 v #59 > > 00:00:13 v #60 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #61 > > inl im forall t. (c : complex t) : t = 00:00:13 v #62 > > !\\(c, $'"$0.im"') 00:00:13 v #63 > > 00:00:13 v #64 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #65 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 v #66 > > │ ## complex_unbox │ 00:00:13 v #67 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 v #68 > > 00:00:13 v #69 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #70 > > inl complex_unbox forall t. (c : complex t) = 00:00:13 v #71 > > re c, im c 00:00:14 v #72 > > 00:00:14 v #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #75 > > │ ## (~.^) │ 00:00:14 v #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #77 > > 00:00:14 v #78 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #79 > > inl (~.^) c = complex c 00:00:14 v #80 > > 00:00:14 v #81 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #82 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #83 > > │ ## complex_eq │ 00:00:14 v #84 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #85 > > 00:00:14 v #86 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #87 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool = 00:00:14 v #88 > > !\\((a, b), $'"$0 == $1"') 00:00:15 v #89 > > 00:00:15 v #90 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #91 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 v #92 > > │ ## (.=) │ 00:00:15 v #93 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #94 > > 00:00:15 v #95 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #96 > > inl (.=) a b = complex_eq a b 00:00:15 v #97 > > 00:00:15 v #98 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #99 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 v #100 > > │ ## equable complex │ 00:00:15 v #101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #102 > > 00:00:15 v #103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #104 > > instance equable complex t = complex_eq 00:00:16 v #105 > > 00:00:16 v #106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #107 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 v #108 > > │ ## complex_add │ 00:00:16 v #109 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 v #110 > > 00:00:16 v #111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #112 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t = 00:00:16 v #113 > > !\\((a, b), $'"$0 + $1"') 00:00:16 v #114 > > 00:00:16 v #115 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #116 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 v #117 > > │ ## (.+) │ 00:00:16 v #118 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 v #119 > > 00:00:16 v #120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #121 > > inl (.+) a b = complex_add a b 00:00:17 v #122 > > 00:00:17 v #123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #125 > > │ ## complex_sub │ 00:00:17 v #126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #127 > > 00:00:17 v #128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 v #129 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t = 00:00:17 v #130 > > !\\((a, b), $'"$0 - $1"') 00:00:17 v #131 > > 00:00:17 v #132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #134 > > │ ## (.-) │ 00:00:17 v #135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #136 > > 00:00:17 v #137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 v #138 > > inl (.-) a b = complex_sub a b 00:00:18 v #139 > > 00:00:18 v #140 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #141 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #142 > > │ ## complex_mult │ 00:00:18 v #143 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #144 > > 00:00:18 v #145 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #146 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t = 00:00:18 v #147 > > !\\((a, b), $'"$0 * $1"') 00:00:18 v #148 > > 00:00:18 v #149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #150 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #151 > > │ ## (.*) │ 00:00:18 v #152 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #153 > > 00:00:18 v #154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #155 > > inl (.*) a b = complex_mult a b 00:00:18 v #156 > > 00:00:18 v #157 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #158 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #159 > > │ ## complex_div │ 00:00:18 v #160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #161 > > 00:00:18 v #162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #163 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t = 00:00:18 v #164 > > !\\((a, b), $'"$0 / $1"') 00:00:19 v #165 > > 00:00:19 v #166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #167 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #168 > > │ ## (./) │ 00:00:19 v #169 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #170 > > 00:00:19 v #171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:19 v #172 > > inl (./) a b = complex_div a b 00:00:19 v #173 > > 00:00:19 v #174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #175 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #176 > > │ ## powc │ 00:00:19 v #177 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #178 > > 00:00:19 v #179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:19 v #180 > > inl powc forall t. (s : complex t) (c : complex t) : complex t = 00:00:19 v #181 > > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') 00:00:20 v #182 > > 00:00:20 v #183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #184 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #185 > > │ ## (.**) │ 00:00:20 v #186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #187 > > 00:00:20 v #188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:20 v #189 > > inl (.**) a b = powc b a 00:00:20 v #190 > > 00:00:20 v #191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #192 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #193 > > │ ## complex_sin │ 00:00:20 v #194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #195 > > 00:00:20 v #196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:20 v #197 > > inl complex_sin forall t. (c : complex t) : complex t = 00:00:20 v #198 > > !\\(c, $'"$0.sin()"') 00:00:21 v #199 > > 00:00:21 v #200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:21 v #202 > > │ ## conj │ 00:00:21 v #203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #204 > > 00:00:21 v #205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:21 v #206 > > inl conj forall t. (c : complex t) : complex t = 00:00:21 v #207 > > !\\(c, $'"$0.conj()"') 00:00:21 v #208 > > 00:00:21 v #209 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #210 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:21 v #211 > > │ ## zeta │ 00:00:21 v #212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #213 > > 00:00:21 v #214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:21 v #215 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex 00:00:21 v #216 > > f64 = 00:00:21 v #217 > > inl rec zeta count gamma s = 00:00:21 v #218 > > if log then 00:00:21 v #219 > > !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\", 00:00:21 v #220 > > $0, $1)"') 00:00:21 v #221 > > if re s > 1 then 00:00:21 v #222 > > (.^(0, 0), (am.init 10000i32 id : a i32 _)) 00:00:21 v #223 > > ||> am.fold fun acc n => 00:00:21 v #224 > > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) 00:00:21 v #225 > > else 00:00:21 v #226 > > inl gamma_term = gamma (.^(1, 0) .- s) 00:00:21 v #227 > > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin 00:00:21 v #228 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:00:21 v #229 > > inl mirror_term = 00:00:21 v #230 > > if re one_minus_s <= 1 00:00:21 v #231 > > then .^(0, 0) 00:00:21 v #232 > > else 00:00:21 v #233 > > if count <= 3 00:00:21 v #234 > > then zeta (count + 1) gamma one_minus_s 00:00:21 v #235 > > else one_minus_s 00:00:21 v #236 > > inl reflection_formula = 00:00:21 v #237 > > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .* 00:00:21 v #238 > > mirror_term 00:00:21 v #239 > > reflection_formula 00:00:21 v #240 > > join zeta 0i32 gamma s 00:00:22 v #241 > > 00:00:22 v #242 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #243 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #244 > > │ ## bound │ 00:00:22 v #245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #246 > > 00:00:22 v #247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #248 > > nominal bound t = 00:00:22 v #249 > > `( 00:00:22 v #250 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:22 v #251 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class 00:00:22 v #252 > > end" 00:00:22 v #253 > > $'' : $'pyo3_Bound<`t>' 00:00:22 v #254 > > ) 00:00:22 v #255 > > 00:00:22 v #256 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #257 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #258 > > │ ## python │ 00:00:22 v #259 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #260 > > 00:00:22 v #261 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #262 > > nominal python = 00:00:22 v #263 > > `( 00:00:22 v #264 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:22 v #265 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end" 00:00:22 v #266 > > $'' : $'pyo3_Python' 00:00:22 v #267 > > ) 00:00:22 v #268 > > 00:00:22 v #269 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #270 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #271 > > │ ## pymodule │ 00:00:22 v #272 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #273 > > 00:00:22 v #274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #275 > > nominal pymodule = 00:00:22 v #276 > > `( 00:00:22 v #277 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:22 v #278 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule 00:00:22 v #279 > > = class end" 00:00:22 v #280 > > $'' : $'pyo3_types_PyModule' 00:00:22 v #281 > > ) 00:00:23 v #282 > > 00:00:23 v #283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #284 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:23 v #285 > > │ ## pyany │ 00:00:23 v #286 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:23 v #287 > > 00:00:23 v #288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #289 > > nominal pyany = 00:00:23 v #290 > > `( 00:00:23 v #291 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:23 v #292 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end" 00:00:23 v #293 > > $'' : $'pyo3_PyAny' 00:00:23 v #294 > > ) 00:00:23 v #295 > > 00:00:23 v #296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:23 v #298 > > │ ## pyerr │ 00:00:23 v #299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:23 v #300 > > 00:00:23 v #301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #302 > > nominal pyerr = 00:00:23 v #303 > > `( 00:00:23 v #304 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:23 v #305 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end" 00:00:23 v #306 > > $'' : $'pyo3_PyErr' 00:00:23 v #307 > > ) 00:00:24 v #308 > > 00:00:24 v #309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:24 v #311 > > │ ## eval │ 00:00:24 v #312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:24 v #313 > > 00:00:24 v #314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #315 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ = 00:00:24 v #316 > > inl py = join py 00:00:24 v #317 > > inl code = code |> sm'.to_std_string |> sm'.new_c_string 00:00:24 v #318 > > inl empty = "" |> sm'.to_std_string |> sm'.new_c_string 00:00:24 v #319 > > !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, &!empty, &!empty)"') 00:00:24 v #320 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:24 v #321 > > 00:00:24 v #322 > > inl use_pyanymethods () = 00:00:24 v #323 > > global "Fable.Core.RustInterop.emitRustExpr () \");\nuse 00:00:24 v #324 > > pyo3::prelude::PyAnyMethods;\n//\"" 00:00:24 v #325 > > 00:00:24 v #326 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ = 00:00:24 v #327 > > inl attr = join attr 00:00:24 v #328 > > inl attr = attr |> sm'.as_str 00:00:24 v #329 > > inl module = join module 00:00:24 v #330 > > use_pyanymethods () 00:00:24 v #331 > > !\\(attr, $'"!module.getattr($0)"') 00:00:24 v #332 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:24 v #333 > > 00:00:24 v #334 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ = 00:00:24 v #335 > > inl args = join args 00:00:24 v #336 > > inl module = join module 00:00:24 v #337 > > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1), 00:00:24 v #338 > > None)"') 00:00:24 v #339 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:24 v #340 > > 00:00:24 v #341 > > inl extract forall t. (result : bound pyany) : _ t _ = 00:00:24 v #342 > > inl result = join result 00:00:24 v #343 > > use_pyanymethods () 00:00:24 v #344 > > !\($'"!result.extract()"') 00:00:24 v #345 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:24 v #346 > > 00:00:24 v #347 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string = 00:00:24 v #348 > > inl code = 00:00:24 v #349 > > code 00:00:24 v #350 > > |> module_from_code py 00:00:24 v #351 > > |> resultm.unwrap' 00:00:24 v #352 > > inl fn = 00:00:24 v #353 > > code 00:00:24 v #354 > > |> getattr "fn" 00:00:24 v #355 > > |> resultm.unwrap' 00:00:24 v #356 > > 00:00:24 v #357 > > fn 00:00:24 v #358 > > |> call args 00:00:24 v #359 > > |> resultm.try' 00:00:24 v #360 > > |> extract 00:00:24 v #361 > > |> resultm.try' 00:00:24 v #362 > > |> complex 00:00:24 v #363 > > |> Ok 00:00:24 v #364 > > |> resultm.box 00:00:24 v #365 > > 00:00:24 v #366 > > inl call1_ log py s code = 00:00:24 v #367 > > inl code = join (a code : _ i32 _) |> sm'.concat_array "\n" 00:00:24 v #368 > > 00:00:24 v #369 > > inl s = new_pair (re s) (im s) 00:00:24 v #370 > > inl args = new_pair log s 00:00:24 v #371 > > 00:00:24 v #372 > > eval py code args 00:00:24 v #373 > > 00:00:24 v #374 > > inl call1_ log name py s line = 00:00:24 v #375 > > inl s = join s 00:00:24 v #376 > > join 00:00:24 v #377 > > ;[[ 00:00:24 v #378 > > $'$"import sys"' 00:00:24 v #379 > > $'$"import traceback"' 00:00:24 v #380 > > $'$"import re"' 00:00:24 v #381 > > $'$"count = 0"' 00:00:24 v #382 > > $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"' 00:00:24 v #383 > > $'$"def trace_calls(frame, event, arg):"' 00:00:24 v #384 > > $'$" global count"' 00:00:24 v #385 > > $'$" count += 1"' 00:00:24 v #386 > > $'$" if count < 200:"' 00:00:24 v #387 > > $'$" try:"' 00:00:24 v #388 > > $'$" args = {{ k: v for k, v in frame.f_locals.items() if 00:00:24 v #389 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not 00:00:24 v #390 > > callable(v) }}"' 00:00:24 v #391 > > $'$" args_str = \', \'.join([[ 00:00:24 v #392 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k, 00:00:24 v #393 > > v in args.items() ]])"' 00:00:24 v #394 > > $'$" print(f\\\"{{event}}({!name}) / f_code.co_name: 00:00:24 v #395 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}} 00:00:24 v #396 > > / f_code.co_filename: 00:00:24 v #397 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno: 00:00:24 v #398 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }} 00:00:24 v #399 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else 00:00:24 v #400 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: 00:00:24 v #401 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"' 00:00:24 v #402 > > $'$" except ValueError as e:"' 00:00:24 v #403 > > $'$" print(f\'{!name} / e: {{e}}\', flush=True)"' 00:00:24 v #404 > > $'$" return trace_calls"' 00:00:24 v #405 > > $'$"import mpmath"' 00:00:24 v #406 > > $'$"def fn(log, s):"' 00:00:24 v #407 > > $'$" global count"' 00:00:24 v #408 > > $'$" if log:"' 00:00:24 v #409 > > $'$" print(f\'{!name} / s: {{s}} / count: {{count}}\', 00:00:24 v #410 > > flush=True)"' 00:00:24 v #411 > > $'$" s = complex(*s)"' 00:00:24 v #412 > > $'$" try:"' 00:00:24 v #413 > > $'$" if log: sys.settrace(trace_calls)"' 00:00:24 v #414 > > line 00:00:24 v #415 > > $'$" if log:"' 00:00:24 v #416 > > $'$" sys.settrace(None)"' 00:00:24 v #417 > > $'$" print(f\'{!name} / result: {{s}} / count: 00:00:24 v #418 > > {{count}}\', flush=True)"' 00:00:24 v #419 > > $'$" except ValueError as e:"' 00:00:24 v #420 > > $'$" if s.real == 1:"' 00:00:24 v #421 > > $'$" s = complex(float(\'inf\'), 0)"' 00:00:24 v #422 > > $'$" return (s.real, s.imag)"' 00:00:24 v #423 > > ]] 00:00:24 v #424 > > |> call1_ log py s 00:00:24 v #425 > > 00:00:24 v #426 > > inl gamma_ log py s = 00:00:24 v #427 > > call1_ log "gamma_" py s $'$" s = mpmath.gamma(s)"' 00:00:24 v #428 > > 00:00:24 v #429 > > inl zeta_ log py s = 00:00:24 v #430 > > call1_ log "zeta_" py s $'$" s = mpmath.zeta(s)"' 00:00:24 v #431 > > 00:00:24 v #432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:24 v #434 > > │ ## run_test │ 00:00:24 v #435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:24 v #436 > > 00:00:24 v #437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #438 > > inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex 00:00:24 v #439 > > f64) -> ()) = 00:00:24 v #440 > > inl fn_ (py : python) : resultm.result' () pyerr = 00:00:24 v #441 > > inl nan () = 00:00:24 v #442 > > !\($'"f64::NAN"') 00:00:24 v #443 > > inl gamma__ = fun (s : complex f64) => 00:00:24 v #444 > > inl result = gamma_ log py s 00:00:24 v #445 > > if log then 00:00:24 v #446 > > inl s = join s 00:00:24 v #447 > > !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s, 00:00:24 v #448 > > !result)"') 00:00:24 v #449 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:24 v #450 > > .^(nan (), nan ()) 00:00:24 v #451 > > inl zeta__ = fun (s : complex f64) => 00:00:24 v #452 > > inl result = zeta_ log py s 00:00:24 v #453 > > 00:00:24 v #454 > > inl z = zeta true gamma__ s 00:00:24 v #455 > > 00:00:24 v #456 > > if log then 00:00:24 v #457 > > inl s = join s 00:00:24 v #458 > > !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z: 00:00:24 v #459 > > {:?}\\\", !s, !result, !z)"') 00:00:24 v #460 > > 00:00:24 v #461 > > // re result - re x |> abs 00:00:24 v #462 > > // |> _assert_lt 0.001 00:00:24 v #463 > > 00:00:24 v #464 > > // im result - im x |> abs 00:00:24 v #465 > > // |> _assert_lt 0.001 00:00:24 v #466 > > 00:00:24 v #467 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:24 v #468 > > .^(nan (), nan ()) 00:00:24 v #469 > > join fn (zeta__, gamma__) 00:00:24 v #470 > > 00:00:24 v #471 > > Ok () 00:00:24 v #472 > > |> resultm.box 00:00:24 v #473 > > 00:00:24 v #474 > > join 00:00:24 v #475 > > !\($'"pyo3::prepare_freethreaded_python()"') : () 00:00:24 v #476 > > 00:00:24 v #477 > > !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> 00:00:24 v #478 > > { //"') 00:00:24 v #479 > > 00:00:24 v #480 > > let x' = fn_ (!\($'"py"') : python) 00:00:24 v #481 > > inl x' = join x' 00:00:24 v #482 > > 00:00:24 v #483 > > inl closure_fix = 2u8, 1u8 00:00:24 v #484 > > x' |> rust.fix_closure closure_fix 00:00:24 v #485 > > 00:00:24 v #486 > > (!\($'"__run_test"') : _ () pyerr) 00:00:24 v #487 > > |> resultm.unwrap' 00:00:25 v #488 > > 00:00:25 v #489 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #490 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:25 v #491 > > │ ## test_zeta_at_known_values_ │ 00:00:25 v #492 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:25 v #493 > > 00:00:25 v #494 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #495 > > inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma => 00:00:25 v #496 > > ;[[ 00:00:25 v #497 > > .^(2, 0), pi ** 2 / 6 00:00:25 v #498 > > .^(-1, 0), -1 / 12 00:00:25 v #499 > > ]] 00:00:25 v #500 > > |> fun x => a x : _ i32 _ 00:00:25 v #501 > > |> am.iter fun s, e => 00:00:25 v #502 > > inl result = zeta s 00:00:25 v #503 > > 00:00:25 v #504 > > result |> im |> _assert_eq 0 00:00:25 v #505 > > re result - e |> abs |> _assert_lt 0.0001 00:00:25 v #506 > > 00:00:25 v #507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #508 > > //// test 00:00:25 v #509 > > ///! rust -d num-complex pyo3 00:00:25 v #510 > > 00:00:25 v #511 > > test_zeta_at_known_values_ true 00:00:36 v #512 > > 00:00:36 v #513 > > ╭─[ 11.01s - return value ]────────────────────────────────────────────────────╮ 00:00:36 v #514 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:00:36 v #515 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 v #516 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:36 v #517 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 v #518 > > │ / arg: None │ 00:00:36 v #519 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 v #520 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:36 v #521 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 v #522 > > │ / arg: None │ 00:00:36 v #523 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 v #524 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:36 v #525 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 v #526 > > │ / arg: None │ 00:00:36 v #527 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 v #528 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:36 v #529 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 v #530 > > │ / arg: None │ 00:00:36 v #531 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 v #532 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:36 v #533 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 v #534 > > │ / arg: None │ 00:00:36 v #535 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:36 v #536 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:36 v #537 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:36 v #538 > > │ / arg: None │ 00:00:36 v #539 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:36 v #540 > > │ / f_linen...me: make_mpc / f_locals: / f_lineno: 603 / f_code.co_filename: │ 00:00:36 v #541 > > │ \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 v #542 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:36 v #543 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 604 / │ 00:00:36 v #544 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 v #545 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:36 v #546 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:36 v #547 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 v #548 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:36 v #549 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:36 v #550 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 v #551 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: mpc(real='1.0', │ 00:00:36 v #552 > > │ imag='0.0') │ 00:00:36 v #553 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='2.0', │ 00:00:36 v #554 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:36 v #555 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:00:36 v #556 > > │ f_back.f_code.co_filename: / arg: mpc(real='1.0', imag='0.0') │ 00:00:36 v #557 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140 │ 00:00:36 v #558 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: Ok(Complex { re: 1.0, │ 00:00:36 v #559 > > │ im: 0.0 }) │ 00:00:36 v #560 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 } │ 00:00:36 v #561 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: Ok(Complex { re: │ 00:00:36 v #562 > > │ -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:00:36 v #563 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:36 v #564 > > │ __assert_lt / actual: 0.0 / expected: 0.0001 │ 00:00:36 v #565 > > │ │ 00:00:36 v #566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 v #567 > > 00:00:36 v #568 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 v #569 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 v #570 > > │ ## test_zeta_at_2_minus2 │ 00:00:36 v #571 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 v #572 > > 00:00:36 v #573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 v #574 > > inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma => 00:00:36 v #575 > > inl s = .^(2, -2) 00:00:36 v #576 > > inl result = zeta s 00:00:36 v #577 > > 00:00:36 v #578 > > (re result - 0.8673) |> abs |> _assert_lt 0.001 00:00:36 v #579 > > (im result - 0.2750) |> abs |> _assert_lt 0.001 00:00:37 v #580 > > 00:00:37 v #581 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:37 v #582 > > //// test 00:00:37 v #583 > > ///! rust -d num-complex pyo3 00:00:37 v #584 > > 00:00:37 v #585 > > test_zeta_at_2_minus2 true 00:00:40 v #586 > > 00:00:40 v #587 > > ╭─[ 3.32s - return value ]─────────────────────────────────────────────────────╮ 00:00:40 v #588 > > │ zeta_ / s: (2.0, -2.0) / count: 0 │ 00:00:40 v #589 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:40 v #590 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:40 v #591 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:40 v #592 > > │ / arg: None │ 00:00:40 v #593 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:40 v #594 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:40 v #595 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:40 v #596 > > │ / arg: None │ 00:00:40 v #597 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:40 v #598 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:40 v #599 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:40 v #600 > > │ / arg: None │ 00:00:40 v #601 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:40 v #602 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:40 v #603 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:40 v #604 > > │ / arg: None │ 00:00:40 v #605 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:40 v #606 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:40 v #607 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:40 v #608 > > │ / arg: None │ 00:00:40 v #609 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │ 00:00:40 v #610 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:40 v #611 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:40 v #612 > > │ / arg: None │ 00:00:40 v #613 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │ 00:00:40 v #614 > > │ / f_line.../ arg: None │ 00:00:40 v #615 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 91 │ 00:00:40 v #616 > > │ / f_code.co_filename: \mpmath\libmp\libintmath.py / f_back.f_lineno: 778 / │ 00:00:40 v #617 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None │ 00:00:40 v #618 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 93 │ 00:00:40 v #619 > > │ / f_code.co_filename: \mpmath\libmp\libintmath.py / f_back.f_lineno: 778 / │ 00:00:40 v #620 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None │ 00:00:40 v #621 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:40 v #622 > > │ f_lineno: 94 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:00:40 v #623 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:00:40 v #624 > > │ arg: None │ 00:00:40 v #625 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:40 v #626 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:00:40 v #627 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:00:40 v #628 > > │ arg: None │ 00:00:40 v #629 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:40 v #630 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:00:40 v #631 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:00:40 v #632 > > │ arg: 2 │ 00:00:40 v #633 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / count: 1812 │ 00:00:40 v #634 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 } │ 00:00:40 v #635 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: Ok(Complex { re: │ 00:00:40 v #636 > > │ 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { re: NaN, im: │ 00:00:40 v #637 > > │ NaN } │ 00:00:40 v #638 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001 │ 00:00:40 v #639 > > │ __assert_lt / actual: 0.00012723880785764363 / expected: 0.001 │ 00:00:40 v #640 > > │ │ 00:00:40 v #641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:40 v #642 > > 00:00:40 v #643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:40 v #644 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:40 v #645 > > │ ## test_trivial_zero_at_negative_even___ │ 00:00:40 v #646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:40 v #647 > > 00:00:40 v #648 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:40 v #649 > > inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma => 00:00:40 v #650 > > (join listm'.init_series -2f64 -40 -2) 00:00:40 v #651 > > |> listm.iter fun n => 00:00:40 v #652 > > inl s = .^(n, 0) 00:00:40 v #653 > > inl result = zeta s 00:00:40 v #654 > > 00:00:40 v #655 > > result |> re |> _assert_eq 0 00:00:40 v #656 > > result |> im |> _assert_eq 0 00:00:40 v #657 > > 00:00:40 v #658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:40 v #659 > > //// test 00:00:40 v #660 > > ///! rust -d num-complex pyo3 00:00:40 v #661 > > 00:00:40 v #662 > > test_trivial_zero_at_negative_even___ true 00:00:45 v #663 > > 00:00:45 v #664 > > ╭─[ 4.23s - return value ]─────────────────────────────────────────────────────╮ 00:00:45 v #665 > > │ zeta_ / s: (-2.0, 0.0) / count: 0 │ 00:00:45 v #666 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:45 v #667 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:45 v #668 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:45 v #669 > > │ / arg: None │ 00:00:45 v #670 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:45 v #671 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:45 v #672 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:45 v #673 > > │ / arg: None │ 00:00:45 v #674 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:45 v #675 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:45 v #676 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:45 v #677 > > │ / arg: None │ 00:00:45 v #678 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:45 v #679 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:45 v #680 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:45 v #681 > > │ / arg: None │ 00:00:45 v #682 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:45 v #683 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:45 v #684 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:45 v #685 > > │ / arg: None │ 00:00:45 v #686 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={}, │ 00:00:45 v #687 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:45 v #688 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:45 v #689 > > │ / arg: None │ 00:00:45 v #690 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={}, │ 00:00:45 v #691 > > │ name='zeta' /...lename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:45 v #692 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:45 v #693 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 604 / │ 00:00:45 v #694 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:45 v #695 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:45 v #696 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:45 v #697 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:45 v #698 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:45 v #699 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:45 v #700 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:45 v #701 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: │ 00:00:45 v #702 > > │ mpc(real='8.1591528324789768e+47', imag='0.0') │ 00:00:45 v #703 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='41.0', │ 00:00:45 v #704 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:45 v #705 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:00:45 v #706 > > │ f_back.f_code.co_filename: / arg: mpc(real='8.1591528324789768e+47', │ 00:00:45 v #707 > > │ imag='0.0') │ 00:00:45 v #708 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149 │ 00:00:45 v #709 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: Ok(Complex { re: │ 00:00:45 v #710 > > │ 8.159152832478977e47, im: 0.0 }) │ 00:00:45 v #711 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 } │ 00:00:45 v #712 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: Ok(Complex { re: 0.0, │ 00:00:45 v #713 > > │ im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:00:45 v #714 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:45 v #715 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:45 v #716 > > │ │ 00:00:45 v #717 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 v #718 > > 00:00:45 v #719 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 v #720 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 v #721 > > │ ## test_non_trivial_zero___ │ 00:00:45 v #722 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 v #723 > > 00:00:45 v #724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 v #725 > > inl test_non_trivial_zero___ log = run_test log fun zeta, gamma => 00:00:45 v #726 > > ;[[ 00:00:45 v #727 > > .^(0.5, 14.134725) 00:00:45 v #728 > > .^(0.5, 21.022040) 00:00:45 v #729 > > .^(0.5, 25.010857) 00:00:45 v #730 > > .^(0.5, 30.424876) 00:00:45 v #731 > > .^(0.5, 32.935062) 00:00:45 v #732 > > .^(0.5, 37.586178) 00:00:45 v #733 > > ]] 00:00:45 v #734 > > |> fun x => a x : _ i32 _ 00:00:45 v #735 > > |> am.iter fun x => 00:00:45 v #736 > > inl result = zeta x 00:00:45 v #737 > > result |> re |> abs |> _assert_lt 0.0001 00:00:45 v #738 > > result |> im |> abs |> _assert_lt 0.0001 00:00:45 v #739 > > 00:00:45 v #740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 v #741 > > //// test 00:00:45 v #742 > > ///! rust -d num-complex pyo3 00:00:45 v #743 > > 00:00:45 v #744 > > test_non_trivial_zero___ true 00:00:49 v #745 > > 00:00:49 v #746 > > ╭─[ 3.66s - return value ]─────────────────────────────────────────────────────╮ 00:00:49 v #747 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 │ 00:00:49 v #748 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:00:49 v #749 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:49 v #750 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:49 v #751 > > │ / arg: None │ 00:00:49 v #752 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:00:49 v #753 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:49 v #754 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:49 v #755 > > │ / arg: None │ 00:00:49 v #756 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:00:49 v #757 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:00:49 v #758 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:00:49 v #759 > > │ f_back.f_code.co_filename: / arg: None │ 00:00:49 v #760 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:00:49 v #761 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:00:49 v #762 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:00:49 v #763 > > │ f_back.f_code.co_filename: / arg: None │ 00:00:49 v #764 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:00:49 v #765 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:00:49 v #766 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:00:49 v #767 > > │ f_back.f_code.co_filename: / arg: None │ 00:00:49 v #768 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={}, │ 00:00:49 v #769 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:49 v #770 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:49 v #771 > > │ / arg: None │ 00:00:49 v #772 > > │ line(zeta_) / f_code... arg: None │ 00:00:49 v #773 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: │ 00:00:49 v #774 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, │ 00:00:49 v #775 > > │ _m=3416353708500640443578529333, tre=855591523614410863719, │ 00:00:49 v #776 > > │ tim=64316830603724894628746, ure=-1710577520534459139249, │ 00:00:49 v #777 > > │ uim=45518868236127668552, sre=1013002518538853602038572, │ 00:00:49 v #778 > > │ sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename: │ 00:00:49 v #779 > > │ \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / │ 00:00:49 v #780 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:00:49 v #781 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: │ 00:00:49 v #782 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, │ 00:00:49 v #783 > > │ _m=3416353708500640443578529333, tre=-1816151534455075068, │ 00:00:49 v #784 > > │ tim=-45486653225747820096, ure=-1710577520534459139249, │ 00:00:49 v #785 > > │ uim=45518868236127668552, sre=1013002518538853602038572, │ 00:00:49 v #786 > > │ sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename: │ 00:00:49 v #787 > > │ \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / │ 00:00:49 v #788 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:00:49 v #789 > > │ gamma_ / result: (-1.32798420042152e-26 + 5.5751975252688e-26j) / count: 309 │ 00:00:49 v #790 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: Ok(Complex { re: │ 00:00:49 v #791 > > │ -1.3279842004215153e-26, im: 5.575197525268802e-26 }) │ 00:00:49 v #792 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: Ok(Complex { re: │ 00:00:49 v #793 > > │ -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: Complex { re: -0.0, │ 00:00:49 v #794 > > │ im: 0.0 } │ 00:00:49 v #795 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001 │ 00:00:49 v #796 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001 │ 00:00:49 v #797 > > │ │ 00:00:49 v #798 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:49 v #799 > > 00:00:49 v #800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:49 v #801 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:49 v #802 > > │ ## test_real_part_greater_than_one___ │ 00:00:49 v #803 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:49 v #804 > > 00:00:49 v #805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #806 > > inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma => 00:00:49 v #807 > > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] 00:00:49 v #808 > > (a points : _ i32 _) 00:00:49 v #809 > > |> am.iter fun point => 00:00:49 v #810 > > inl s = .^(point, 0) 00:00:49 v #811 > > inl result = zeta s 00:00:49 v #812 > > result |> re |> _assert_gt 0 00:00:49 v #813 > > result |> im |> _assert_eq 0 00:00:49 v #814 > > 00:00:49 v #815 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #816 > > //// test 00:00:49 v #817 > > ///! rust -d num-complex pyo3 00:00:49 v #818 > > 00:00:49 v #819 > > test_real_part_greater_than_one___ true 00:00:53 v #820 > > 00:00:53 v #821 > > ╭─[ 3.73s - return value ]─────────────────────────────────────────────────────╮ 00:00:53 v #822 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:00:53 v #823 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:53 v #824 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:53 v #825 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 v #826 > > │ / arg: None │ 00:00:53 v #827 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:53 v #828 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:53 v #829 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 v #830 > > │ / arg: None │ 00:00:53 v #831 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:53 v #832 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:53 v #833 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 v #834 > > │ / arg: None │ 00:00:53 v #835 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:53 v #836 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:53 v #837 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 v #838 > > │ / arg: None │ 00:00:53 v #839 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:53 v #840 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:53 v #841 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 v #842 > > │ / arg: None │ 00:00:53 v #843 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:53 v #844 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:53 v #845 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:53 v #846 > > │ / arg: None │ 00:00:53 v #847 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:53 v #848 > > │ / f_linen...f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: │ 00:00:53 v #849 > > │ 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:53 v #850 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:53 v #851 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 v #852 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:00:53 v #853 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:53 v #854 > > │ f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 v #855 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: │ 00:00:53 v #856 > > │ mpc(real='1.0000000000000009', imag='0.0') │ 00:00:53 v #857 > > │ return(zeta_) / f_code.co_name: f / f_locals: x=mpc(real='50.0', │ 00:00:53 v #858 > > │ imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:53 v #859 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / │ 00:00:53 v #860 > > │ f_back.f_code.co_filename: \mpmath\functions\zeta.py / arg: │ 00:00:53 v #861 > > │ mpc(real='1.0000000000000009', imag='0.0') │ 00:00:53 v #862 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), a=1, │ 00:00:53 v #863 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:00:53 v #864 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:00:53 v #865 > > │ f_back.f_code.co_filename: / arg: mpc(real='1.0000000000000009', │ 00:00:53 v #866 > > │ imag='0.0') │ 00:00:53 v #867 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181 │ 00:00:53 v #868 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 } │ 00:00:53 v #869 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: Ok(Complex { re: │ 00:00:53 v #870 > > │ 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:00:53 v #871 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0 │ 00:00:53 v #872 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:53 v #873 > > │ │ 00:00:53 v #874 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:53 v #875 > > 00:00:53 v #876 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:53 v #877 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:53 v #878 > > │ ## test_zeta_at_1___ │ 00:00:53 v #879 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:53 v #880 > > 00:00:53 v #881 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:53 v #882 > > inl test_zeta_at_1___ log = run_test log fun zeta, gamma => 00:00:53 v #883 > > inl s = .^(1, 0) 00:00:53 v #884 > > inl result = zeta s 00:00:53 v #885 > > result |> re |> _assert_eq limit.max 00:00:53 v #886 > > result |> im |> _assert_eq 0 00:00:53 v #887 > > 00:00:53 v #888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:53 v #889 > > //// test 00:00:53 v #890 > > ///! rust -d num-complex pyo3 00:00:53 v #891 > > 00:00:53 v #892 > > test_zeta_at_1___ true 00:00:56 v #893 > > 00:00:56 v #894 > > ╭─[ 3.30s - return value ]─────────────────────────────────────────────────────╮ 00:00:56 v #895 > > │ zeta_ / s: (1.0, 0.0) / count: 0 │ 00:00:56 v #896 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:00:56 v #897 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:56 v #898 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:56 v #899 > > │ / arg: None │ 00:00:56 v #900 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:00:56 v #901 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:56 v #902 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:56 v #903 > > │ / arg: None │ 00:00:56 v #904 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:00:56 v #905 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:56 v #906 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:56 v #907 > > │ / arg: None │ 00:00:56 v #908 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:00:56 v #909 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:56 v #910 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:56 v #911 > > │ / arg: None │ 00:00:56 v #912 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:00:56 v #913 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:56 v #914 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:56 v #915 > > │ / arg: None │ 00:00:56 v #916 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │ 00:00:56 v #917 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:00:56 v #918 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:00:56 v #919 > > │ / arg: None │ 00:00:56 v #920 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │ 00:00:56 v #921 > > │ / f_linen...back object at 0x<?>>) │ 00:00:56 v #922 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='0.0', │ 00:00:56 v #923 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:56 v #924 > > │ / f_code.co_filename: \mpmath\ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:00:56 v #925 > > │ f_back.f_code.co_filename: / arg: None │ 00:00:56 v #926 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / │ 00:00:56 v #927 > > │ f_lineno: 25 / f_code.co_filename: / f_back.f_lineno: / │ 00:00:56 v #928 > > │ f_back.f_code.co_filename: / arg: (<class 'ValueError'>, ValueError('gamma │ 00:00:56 v #929 > > │ function pole'), <traceback object at 0x<?>>) │ 00:00:56 v #930 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 29 │ 00:00:56 v #931 > > │ / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: / │ 00:00:56 v #932 > > │ arg: None │ 00:00:56 v #933 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j, │ 00:00:56 v #934 > > │ e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename: / │ 00:00:56 v #935 > > │ f_back.f_lineno: / f_back.f_code.co_filename: / arg: None │ 00:00:56 v #936 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 32 │ 00:00:56 v #937 > > │ / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: / │ 00:00:56 v #938 > > │ arg: None │ 00:00:56 v #939 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: │ 00:00:56 v #940 > > │ 32 / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: │ 00:00:56 v #941 > > │ / arg: (0.0, 0.0) │ 00:00:56 v #942 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: Ok(Complex { re: 0.0, │ 00:00:56 v #943 > > │ im: 0.0 }) │ 00:00:56 v #944 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex { re: inf, im: │ 00:00:56 v #945 > > │ 0.0 }) / z: Complex { re: 0.0, im: 0.0 } │ 00:00:56 v #946 > > │ __assert_eq / actual: inf / expected: inf │ 00:00:56 v #947 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:56 v #948 > > │ │ 00:00:56 v #949 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:56 v #950 > > 00:00:56 v #951 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:56 v #952 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:56 v #953 > > │ ## test_symmetry_across_real_axis___ │ 00:00:56 v #954 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:56 v #955 > > 00:00:56 v #956 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:56 v #957 > > inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma => 00:00:56 v #958 > > inl s = .^(2, 10) 00:00:56 v #959 > > inl result_positive_im = zeta s 00:00:56 v #960 > > inl result_negative_im = zeta .^(re s, -(im s)) 00:00:56 v #961 > > inl conj = result_negative_im |> conj 00:00:56 v #962 > > result_positive_im |> re |> _assert_eq (conj |> re) 00:00:56 v #963 > > result_positive_im |> im |> _assert_eq (conj |> im) 00:00:57 v #964 > > 00:00:57 v #965 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:57 v #966 > > //// test 00:00:57 v #967 > > ///! rust -d num-complex pyo3 00:00:57 v #968 > > 00:00:57 v #969 > > test_symmetry_across_real_axis___ true 00:01:00 v #970 > > 00:01:00 v #971 > > ╭─[ 3.44s - return value ]─────────────────────────────────────────────────────╮ 00:01:00 v #972 > > │ zeta_ / s: (2.0, 10.0) / count: 0 │ 00:01:00 v #973 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:00 v #974 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:00 v #975 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:00 v #976 > > │ / arg: None │ 00:01:00 v #977 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:00 v #978 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:00 v #979 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:00 v #980 > > │ / arg: None │ 00:01:00 v #981 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:00 v #982 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:00 v #983 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:00 v #984 > > │ / arg: None │ 00:01:00 v #985 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:00 v #986 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:00 v #987 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:00 v #988 > > │ / arg: None │ 00:01:00 v #989 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:00 v #990 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:00 v #991 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:00 v #992 > > │ / arg: None │ 00:01:00 v #993 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={}, │ 00:01:00 v #994 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:00 v #995 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:00 v #996 > > │ / arg: None │ 00:01:00 v #997 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={}, │ 00:01:00 v #998 > > │ name='zeta' /.../ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: │ 00:01:00 v #999 > > │ None │ 00:01:00 v #1000 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:00 v #1001 > > │ f_lineno: 94 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:01:00 v #1002 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:01:00 v #1003 > > │ arg: None │ 00:01:00 v #1004 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:00 v #1005 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:01:00 v #1006 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:01:00 v #1007 > > │ arg: None │ 00:01:00 v #1008 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:00 v #1009 > > │ f_lineno: 95 / f_code.co_filename: \mpmath\libmp\libintmath.py / │ 00:01:00 v #1010 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:01:00 v #1011 > > │ arg: 5 │ 00:01:00 v #1012 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, 1), t=(0, 25, │ 00:01:00 v #1013 > > │ 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, tsign=0, │ 00:01:00 v #1014 > > │ tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 / │ 00:01:00 v #1015 > > │ f_code.co_filename: \mpmath\libmp\libmpf.py / f_back.f_lineno: 1401 / │ 00:01:00 v #1016 > > │ f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: None │ 00:01:00 v #1017 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / count: 1174 │ 00:01:00 v #1018 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 } │ 00:01:00 v #1019 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: Ok(Complex { re: │ 00:01:00 v #1020 > > │ 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { re: NaN, im: │ 00:01:00 v #1021 > > │ NaN } │ 00:01:00 v #1022 > > │ __assert_eq / actual: 1.1979825006741847 / expected: 1.1979825006741847 │ 00:01:00 v #1023 > > │ __assert_eq / actual: -0.07917049172052575 / expected: -0.07917049172052575 │ 00:01:00 v #1024 > > │ │ 00:01:00 v #1025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #1026 > > 00:01:00 v #1027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:00 v #1028 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:00 v #1029 > > │ ## test_behavior_near_origin___ │ 00:01:00 v #1030 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #1031 > > 00:01:00 v #1032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:00 v #1033 > > inl test_behavior_near_origin___ log = run_test log fun zeta, gamma => 00:01:00 v #1034 > > inl s = .^(0.01, 0.01) 00:01:00 v #1035 > > inl result = zeta s 00:01:00 v #1036 > > result |> re |> _assert_lt limit.max 00:01:00 v #1037 > > result |> im |> _assert_lt limit.max 00:01:01 v #1038 > > 00:01:01 v #1039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:01 v #1040 > > //// test 00:01:01 v #1041 > > ///! rust -d num-complex pyo3 00:01:01 v #1042 > > 00:01:01 v #1043 > > test_behavior_near_origin___ true 00:01:04 v #1044 > > 00:01:04 v #1045 > > ╭─[ 3.32s - return value ]─────────────────────────────────────────────────────╮ 00:01:04 v #1046 > > │ zeta_ / s: (0.01, 0.01) / count: 0 │ 00:01:04 v #1047 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:04 v #1048 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:04 v #1049 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:04 v #1050 > > │ / arg: None │ 00:01:04 v #1051 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:04 v #1052 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:04 v #1053 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:04 v #1054 > > │ / arg: None │ 00:01:04 v #1055 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:04 v #1056 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:01:04 v #1057 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:04 v #1058 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:04 v #1059 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:04 v #1060 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:01:04 v #1061 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:04 v #1062 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:04 v #1063 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:04 v #1064 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:04 v #1065 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:04 v #1066 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:04 v #1067 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), kwargs={}, │ 00:01:04 v #1068 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:04 v #1069 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:04 v #1070 > > │ / arg: None │ 00:01:04 v #1071 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py / f_back.f_lineno: │ 00:01:04 v #1072 > > │ 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:01:04 v #1073 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, │ 00:01:04 v #1074 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, │ 00:01:04 v #1075 > > │ rnd='n', type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, │ 00:01:04 v #1076 > > │ -59, 53), asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, │ 00:01:04 v #1077 > > │ bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, │ 00:01:04 v #1078 > > │ an=0, bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, │ 00:01:04 v #1079 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, │ 00:01:04 v #1080 > > │ balance_prec=0, n_for_stirling=14, need_reduction=True, │ 00:01:04 v #1081 > > │ afix=132131814190692672995328, bfix=-94447329657392906240, r=0, zprered=((0, │ 00:01:04 v #1082 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), d=14, │ 00:01:04 v #1083 > > │ rre=56942610883563778729574216337150, one=9444732965739290427392, │ 00:01:04 v #1084 > > │ rim=-1820461636508155576115177658065, k=12 / f_lineno: 2043 / │ 00:01:04 v #1085 > > │ f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 1007 / │ 00:01:04 v #1086 > > │ f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: None │ 00:01:04 v #1087 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / count: 383 │ 00:01:04 v #1088 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: Ok(Complex { re: │ 00:01:04 v #1089 > > │ 1.005770302029023, im: 0.005971782405410201 }) │ 00:01:04 v #1090 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: Ok(Complex { re: │ 00:01:04 v #1091 > > │ -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { re: 0.0, im: │ 00:01:04 v #1092 > > │ 0.0 } │ 00:01:04 v #1093 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf │ 00:01:04 v #1094 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf │ 00:01:04 v #1095 > > │ │ 00:01:04 v #1096 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:04 v #1097 > > 00:01:04 v #1098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:04 v #1099 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:04 v #1100 > > │ ## test_imaginary_axis │ 00:01:04 v #1101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:04 v #1102 > > 00:01:04 v #1103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:04 v #1104 > > inl test_imaginary_axis log = run_test log fun zeta, gamma => 00:01:04 v #1105 > > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) 00:01:04 v #1106 > > |> listm.iter fun s => 00:01:04 v #1107 > > inl s = .^(0, s) 00:01:04 v #1108 > > inl result = zeta s 00:01:04 v #1109 > > result |> re |> _assert_ne 0 00:01:04 v #1110 > > result |> im |> _assert_ne 0 00:01:05 v #1111 > > 00:01:05 v #1112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:05 v #1113 > > //// test 00:01:05 v #1114 > > ///! rust -d num-complex pyo3 00:01:05 v #1115 > > 00:01:05 v #1116 > > test_imaginary_axis true 00:01:09 v #1117 > > 00:01:09 v #1118 > > ╭─[ 3.84s - return value ]─────────────────────────────────────────────────────╮ 00:01:09 v #1119 > > │ zeta_ / s: (0.0, 10.0) / count: 0 │ 00:01:09 v #1120 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:09 v #1121 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:09 v #1122 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:09 v #1123 > > │ / arg: None │ 00:01:09 v #1124 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:09 v #1125 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:09 v #1126 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:09 v #1127 > > │ / arg: None │ 00:01:09 v #1128 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:09 v #1129 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:09 v #1130 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:09 v #1131 > > │ / arg: None │ 00:01:09 v #1132 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:09 v #1133 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:09 v #1134 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:09 v #1135 > > │ / arg: None │ 00:01:09 v #1136 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:09 v #1137 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:09 v #1138 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:09 v #1139 > > │ / arg: None │ 00:01:09 v #1140 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' / │ 00:01:09 v #1141 > > │ f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:09 v #1142 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:09 v #1143 > > │ / arg: None │ 00:01:09 v #1144 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' / │ 00:01:09 v #1145 > > │ f_lineno: 990 / f_code.co_f...g: None │ 00:01:09 v #1146 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83 │ 00:01:09 v #1147 > > │ / f_lineno: 511 / f_code.co_filename: \mpmath\libmp\libmpf.py / │ 00:01:09 v #1148 > > │ f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:09 v #1149 > > │ \mpmath\libmp\gammazeta.py / arg: None │ 00:01:09 v #1150 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:09 v #1151 > > │ sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename: │ 00:01:09 v #1152 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:09 v #1153 > > │ \mpmath\libmp\gammazeta.py / arg: None │ 00:01:09 v #1154 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:09 v #1155 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / f_code.co_filename: │ 00:01:09 v #1156 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:09 v #1157 > > │ \mpmath\libmp\gammazeta.py / arg: None │ 00:01:09 v #1158 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:09 v #1159 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / f_code.co_filename: │ 00:01:09 v #1160 > > │ \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:09 v #1161 > > │ \mpmath\libmp\gammazeta.py / arg: None │ 00:01:09 v #1162 > > │ gamma_ / result: (-1.51425318049776e-67 + 2.79082155561748e-69j) / count: │ 00:01:09 v #1163 > > │ 289 │ 00:01:09 v #1164 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: Ok(Complex { re: │ 00:01:09 v #1165 > > │ -1.514253180497756e-67, im: 2.7908215556174775e-69 }) │ 00:01:09 v #1166 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: Ok(Complex { re: │ 00:01:09 v #1167 > > │ 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: 0.0, im: 0.0 │ 00:01:09 v #1168 > > │ } │ 00:01:09 v #1169 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0 │ 00:01:09 v #1170 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0 │ 00:01:09 v #1171 > > │ │ 00:01:09 v #1172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:09 v #1173 > > 00:01:09 v #1174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:09 v #1175 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:09 v #1176 > > │ ## test_critical_strip │ 00:01:09 v #1177 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:09 v #1178 > > 00:01:09 v #1179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:09 v #1180 > > inl test_critical_strip log = run_test log fun zeta, gamma => 00:01:09 v #1181 > > (join [[ 00:01:09 v #1182 > > .^(0.5, 14.134725) 00:01:09 v #1183 > > .^(0.75, 20.5) 00:01:09 v #1184 > > .^(1.25, 30.1) 00:01:09 v #1185 > > .^(0.25, 40.0) 00:01:09 v #1186 > > .^(1.0, 50.0) 00:01:09 v #1187 > > ]]) 00:01:09 v #1188 > > |> listm.iter fun s => 00:01:09 v #1189 > > inl result = zeta s 00:01:09 v #1190 > > result |> re |> _assert_ne 0 00:01:09 v #1191 > > result |> im |> _assert_ne 0 00:01:09 v #1192 > > 00:01:09 v #1193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:09 v #1194 > > //// test 00:01:09 v #1195 > > ///! rust -d num-complex pyo3 00:01:09 v #1196 > > 00:01:09 v #1197 > > test_critical_strip true 00:01:12 v #1198 > > 00:01:12 v #1199 > > ╭─[ 3.50s - return value ]─────────────────────────────────────────────────────╮ 00:01:12 v #1200 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 │ 00:01:12 v #1201 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:12 v #1202 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:12 v #1203 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:12 v #1204 > > │ / arg: None │ 00:01:12 v #1205 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:12 v #1206 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:12 v #1207 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:12 v #1208 > > │ / arg: None │ 00:01:12 v #1209 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:12 v #1210 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:01:12 v #1211 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:12 v #1212 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:12 v #1213 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:12 v #1214 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:01:12 v #1215 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:12 v #1216 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:12 v #1217 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:12 v #1218 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:12 v #1219 > > │ f_code.co_filename: \mpmath\functions\zeta.py / f_back.f_lineno: 25 / │ 00:01:12 v #1220 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:12 v #1221 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={}, │ 00:01:12 v #1222 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:12 v #1223 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:12 v #1224 > > │ / arg: None │ 00:01:12 v #1225 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995 / f_lineno: 1648 │ 00:01:12 v #1226 > > │ / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / │ 00:01:12 v #1227 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:01:12 v #1228 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0, │ 00:01:12 v #1229 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000, │ 00:01:12 v #1230 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0, │ 00:01:12 v #1231 > > │ sre=4443714077719696485012210, sim=241793223535862290161314995 / f_lineno: │ 00:01:12 v #1232 > > │ 1649 / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: │ 00:01:12 v #1233 > > │ 2050 / f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:01:12 v #1234 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0, │ 00:01:12 v #1235 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000, │ 00:01:12 v #1236 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0, │ 00:01:12 v #1237 > > │ sre=4443714077719696485012210, sim=241793223535862290161314997 / f_lineno: │ 00:01:12 v #1238 > > │ 1650 / f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: │ 00:01:12 v #1239 > > │ 2050 / f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:01:12 v #1240 > > │ gamma_ / result: (2.63173210619768e-35 - 8.16464935465334e-36j) / count: 262 │ 00:01:12 v #1241 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: Ok(Complex { re: │ 00:01:12 v #1242 > > │ 2.6317321061976804e-35, im: -8.164649354653339e-36 }) │ 00:01:12 v #1243 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: Ok(Complex { re: │ 00:01:12 v #1244 > > │ 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { re: 0.0, im: │ 00:01:12 v #1245 > > │ 0.0 } │ 00:01:12 v #1246 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0 │ 00:01:12 v #1247 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0 │ 00:01:12 v #1248 > > │ │ 00:01:12 v #1249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:12 v #1250 > > 00:01:12 v #1251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:12 v #1252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:12 v #1253 > > │ ## test_reflection_formula_for_specific_value │ 00:01:12 v #1254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:12 v #1255 > > 00:01:12 v #1256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:12 v #1257 > > inl test_reflection_formula_for_specific_value log = run_test log fun zeta, 00:01:12 v #1258 > > gamma => 00:01:12 v #1259 > > (join [[ 00:01:12 v #1260 > > .^(3, 4) 00:01:12 v #1261 > > .^(2.5, -3.5) 00:01:12 v #1262 > > .^(1.5, 2.5) 00:01:12 v #1263 > > .^(0.5, 14.134725) 00:01:12 v #1264 > > ]]) 00:01:12 v #1265 > > |> listm.iter fun s => 00:01:12 v #1266 > > inl lhs = zeta s 00:01:12 v #1267 > > inl reflection_coefficient = 00:01:12 v #1268 > > (.^(2, 0) .** s) 00:01:12 v #1269 > > .* (.^(pi, 0) .** (s .- .^(1, 0))) 00:01:12 v #1270 > > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) 00:01:12 v #1271 > > .* gamma (.^(1, 0) .- s) 00:01:12 v #1272 > > 00:01:12 v #1273 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:01:12 v #1274 > > inl rhs = reflection_coefficient .* zeta one_minus_s 00:01:12 v #1275 > > 00:01:12 v #1276 > > re lhs - re rhs |> abs |> _assert_lt 0.0001 00:01:12 v #1277 > > im lhs - im rhs |> abs |> _assert_lt 0.0001 00:01:13 v #1278 > > 00:01:13 v #1279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:13 v #1280 > > //// test 00:01:13 v #1281 > > ///! rust -d num-complex pyo3 00:01:13 v #1282 > > 00:01:13 v #1283 > > test_reflection_formula_for_specific_value true 00:01:17 v #1284 > > 00:01:17 v #1285 > > ╭─[ 3.90s - return value ]─────────────────────────────────────────────────────╮ 00:01:17 v #1286 > > │ zeta_ / s: (3.0, 4.0) / count: 0 │ 00:01:17 v #1287 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:01:17 v #1288 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:17 v #1289 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:17 v #1290 > > │ / arg: None │ 00:01:17 v #1291 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:01:17 v #1292 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:17 v #1293 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:17 v #1294 > > │ / arg: None │ 00:01:17 v #1295 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:01:17 v #1296 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:17 v #1297 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:17 v #1298 > > │ / arg: None │ 00:01:17 v #1299 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:01:17 v #1300 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:17 v #1301 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:17 v #1302 > > │ / arg: None │ 00:01:17 v #1303 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:01:17 v #1304 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:17 v #1305 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:17 v #1306 > > │ / arg: None │ 00:01:17 v #1307 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │ 00:01:17 v #1308 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:17 v #1309 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:17 v #1310 > > │ / arg: None │ 00:01:17 v #1311 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │ 00:01:17 v #1312 > > │ / f_linen...045 / f_code.co_filename: \mpmath\libmp\gammazeta.py / │ 00:01:17 v #1313 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py │ 00:01:17 v #1314 > > │ / arg: None │ 00:01:17 v #1315 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 1, -1, 1), (0, │ 00:01:17 v #1316 > > │ 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, -1, 1), │ 00:01:17 v #1317 > > │ b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, bsign=0, │ 00:01:17 v #1318 > > │ bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, an=0, │ 00:01:17 v #1319 > > │ bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), (0, │ 00:01:17 v #1320 > > │ 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15, │ 00:01:17 v #1321 > > │ need_reduction=True, afix=2115620184325601055735808, │ 00:01:17 v #1322 > > │ bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0, │ 00:01:17 v #1323 > > │ 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845, │ 00:01:17 v #1324 > > │ one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / │ 00:01:17 v #1325 > > │ f_lineno: 2043 / f_code.co_filename: \mpmath\libmp\gammazeta.py / │ 00:01:17 v #1326 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py │ 00:01:17 v #1327 > > │ / arg: None │ 00:01:17 v #1328 > > │ gamma_ / result: (-1.4455538437607e-10 - 5.52278876877407e-10j) / count: 318 │ 00:01:17 v #1329 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: Ok(Complex { re: │ 00:01:17 v #1330 > > │ -1.4455538437606964e-10, im: -5.522788768774066e-10 }) │ 00:01:17 v #1331 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: Ok(Complex { re: │ 00:01:17 v #1332 > > │ 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: Complex { re: 0.0, │ 00:01:17 v #1333 > > │ im: 0.0 } │ 00:01:17 v #1334 > > │ __assert_lt / actual: 4.499862532288471e-22 / expected: 0.0001 │ 00:01:17 v #1335 > > │ __assert_lt / actual: 1.4558378780933287e-22 / expected: 0.0001 │ 00:01:17 v #1336 > > │ │ 00:01:17 v #1337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:17 v #1338 > > 00:01:17 v #1339 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:17 v #1340 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:17 v #1341 > > │ ## test_euler_product_formula │ 00:01:17 v #1342 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:17 v #1343 > > 00:01:17 v #1344 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:17 v #1345 > > inl test_euler_product_formula log = run_test log fun zeta, gamma => 00:01:17 v #1346 > > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] 00:01:17 v #1347 > > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 00:01:17 v #1348 > > 53; 59; 61; 67; 71 ]] 00:01:17 v #1349 > > s_values 00:01:17 v #1350 > > |> listm.iter fun s_re => 00:01:17 v #1351 > > inl s = .^(s_re, 0) 00:01:17 v #1352 > > inl product = 00:01:17 v #1353 > > (1, primes) 00:01:17 v #1354 > > ||> listm.fold fun acc x => 00:01:17 v #1355 > > acc * 1 / (1 - x ** -s_re) 00:01:17 v #1356 > > 00:01:17 v #1357 > > inl result = zeta s 00:01:17 v #1358 > > re result - product |> abs |> _assert_lt 0.01 00:01:17 v #1359 > > result |> im |> _assert_lt 0.01 00:01:17 v #1360 > > 00:01:17 v #1361 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:17 v #1362 > > //// test 00:01:17 v #1363 > > ///! rust -d num-complex pyo3 00:01:17 v #1364 > > 00:01:17 v #1365 > > test_euler_product_formula true 00:01:21 v #1366 > > 00:01:21 v #1367 > > ╭─[ 3.57s - return value ]─────────────────────────────────────────────────────╮ 00:01:21 v #1368 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:01:21 v #1369 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:21 v #1370 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:21 v #1371 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:21 v #1372 > > │ / arg: None │ 00:01:21 v #1373 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:21 v #1374 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:21 v #1375 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:21 v #1376 > > │ / arg: None │ 00:01:21 v #1377 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:21 v #1378 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:21 v #1379 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:21 v #1380 > > │ / arg: None │ 00:01:21 v #1381 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:21 v #1382 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:21 v #1383 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:21 v #1384 > > │ / arg: None │ 00:01:21 v #1385 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:21 v #1386 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:21 v #1387 > > │ \mpmath\functions\zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:21 v #1388 > > │ / arg: None │ 00:01:21 v #1389 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:01:21 v #1390 > > │ / f_lineno: 989 / f_code.co_filename: \mpmath\ctx_mp_python.py / │ 00:01:21 v #1391 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py │ 00:01:21 v #1392 > > │ / arg: None │ 00:01:21 v #1393 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:01:21 v #1394 > > │ / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename: │ 00:01:21 v #1395 > > │ \mpmath\libmp\gammazeta.py / arg: None │ 00:01:21 v #1396 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, prec=53, │ 00:01:21 v #1397 > > │ rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067, │ 00:01:21 v #1398 > > │ 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659, │ 00:01:21 v #1399 > > │ 5764846406968067, 78615943485956867, 851604426176701187, │ 00:01:21 v #1400 > > │ 7470527451121689347, 53898915046387983107, 323897845985013506819, │ 00:01:21 v #1401 > > │ 1638178356374090130179, 7034281785235908174595, 25833609859980306522883, │ 00:01:21 v #1402 > > │ 81661917475887913739011, 223448095548034217779971, 532029677981012660429571, │ 00:01:21 v #1403 > > │ 1108048631855905753375491, 2029946562680066824315651, │ 00:01:21 v #1404 > > │ 3292927237466655352791811, 4769455369342763680768771, │ 00:01:21 v #1405 > > │ 6235511670496346417767171, 7463408621503347142796035, │ 00:01:21 v #1406 > > │ 8322751284048216428487427, 8818779962777819524211459, │ 00:01:21 v #1407 > > │ 9050689474911140452082435, 9136270117622166323831555, │ 00:01:21 v #1408 > > │ 9160252037839493347779331, 9165045885455648617505539, │ 00:01:21 v #1409 > > │ 9165654628010081032708867, 9165691521498228451812099], │ 00:01:21 v #1410 > > │ t=-84153986440240940095109733900764881301998910956, k=26 / f_lineno: 954 / │ 00:01:21 v #1411 > > │ f_code.co_filename: \mpmath\libmp\gammazeta.py / f_back.f_lineno: 985 / │ 00:01:21 v #1412 > > │ f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / arg: None │ 00:01:21 v #1413 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228 │ 00:01:21 v #1414 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 } │ 00:01:21 v #1415 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex { re: │ 00:01:21 v #1416 > > │ 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:01:21 v #1417 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01 │ 00:01:21 v #1418 > > │ __assert_lt / actual: 0.0 / expected: 0.01 │ 00:01:21 v #1419 > > │ │ 00:01:21 v #1420 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1421 > > 00:01:21 v #1422 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 v #1423 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 v #1424 > > │ ## graph │ 00:01:21 v #1425 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1426 > > 00:01:21 v #1427 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:01:21 v #1428 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 v #1429 > > │ <div class="mermaidMarkdownContainer" style="background-color:white"> │ 00:01:21 v #1430 > > │ <link rel="stylesheet" │ 00:01:21 v #1431 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │ 00:01:21 v #1432 > > │ css"> │ 00:01:21 v #1433 > > │ <div id="5977b37edba24337a2d169897e96ad01"></div> │ 00:01:21 v #1434 > > │ <script type="module"> │ 00:01:21 v #1435 > > │ │ 00:01:21 v #1436 > > │ import mermaid from │ 00:01:21 v #1437 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; │ 00:01:21 v #1438 > > │ let renderTarget = │ 00:01:21 v #1439 > > │ document.getElementById('5977b37edba24337a2d169897e96ad01'); │ 00:01:21 v #1440 > > │ try { │ 00:01:21 v #1441 > > │ const {svg, bindFunctions} = await │ 00:01:21 v #1442 > > │ mermaid.mermaidAPI.render( │ 00:01:21 v #1443 > > │ 'mermaid_5977b37edba24337a2d169897e96ad01', │ 00:01:21 v #1444 > > │ `graph TD │ 00:01:21 v #1445 > > │ zeta("zeta()") --> convert │ 00:01:21 v #1446 > > │ zeta --> f["f()"] │ 00:01:21 v #1447 > > │ f --> mpc_f["mpc_zeta()"] │ 00:01:21 v #1448 > > │ f --> mpf_f["mpf_zeta()"] │ 00:01:21 v #1449 > > │ convert --> from_float │ 00:01:21 v #1450 > > │ from_float --> from_man_exp │ 00:01:21 v #1451 > > │ from_man_exp --> python_bitcount │ 00:01:21 v #1452 > > │ python_bitcount --> _normalize │ 00:01:21 v #1453 > > │ _normalize --> make_mpc │ 00:01:21 v #1454 > > │ make_mpc --> mpc_zeta["mpc_zeta()"] │ 00:01:21 v #1455 > > │ mpc_zeta --> mpf_zeta["mpf_zeta()"] │ 00:01:21 v #1456 > > │ mpf_zeta --> to_int │ 00:01:21 v #1457 > > │ to_int --> mpf_zeta_int["mpf_zeta_int()"] │ 00:01:21 v #1458 > > │ mpf_zeta_int --> borwein_coefficients │ 00:01:21 v #1459 > > │ borwein_coefficients --> from_man_exp_2("from_man_exp()") │ 00:01:21 v #1460 > > │ from_man_exp_2 --> python_bitcount_2("python_bitcount()") │ 00:01:21 v #1461 > > │ python_bitcount_2 --> _normalize_2("_normalize()") │ 00:01:21 v #1462 > > │ _normalize_2 --> make_mpc_2("make_mpc()") │ 00:01:21 v #1463 > > │ make_mpc_2 --> stop_trace │ 00:01:21 v #1464 > > │ mpf_zeta_int --> mpf_bernoulli │ 00:01:21 v #1465 > > │ mpf_bernoulli --> bernoulli_size │ 00:01:21 v #1466 > > │ bernoulli_size --> mpf_rdiv_int │ 00:01:21 v #1467 > > │ mpf_rdiv_int --> python_bitcount_3("python_bitcount()") │ 00:01:21 v #1468 > > │ python_bitcount_3 --> _normalize1 │ 00:01:21 v #1469 > > │ _normalize1 --> from_man_exp_3("from_man_exp()") │ 00:01:21 v #1470 > > │ from_man_exp_3 --> _normalize_3("_normalize()") │ 00:01:21 v #1471 > > │ _normalize_3 --> mpf_sub │ 00:01:21 v #1472 > > │ mpf_sub --> mpf_add │ 00:01:21 v #1473 > > │ mpf_add --> mpf_neg │ 00:01:21 v #1474 > > │ mpf_neg --> _normalize1_2("_normalize1()") │ 00:01:21 v #1475 > > │ _normalize1_2 --> from_int │ 00:01:21 v #1476 > > │ from_int --> mpf_div │ 00:01:21 v #1477 > > │ mpf_div --> python_bitcount_4("python_bitcount()") │ 00:01:21 v #1478 > > │ python_bitcount_4 --> _normalize1_3("_normalize1()") │ 00:01:21 v #1479 > > │ _normalize1_3 --> make_mpc_3("make_mpc()") │ 00:01:21 v #1480 > > │ make_mpc_3 --> final_stop["stop_trace()"]`); │ 00:01:21 v #1481 > > │ renderTarget.innerHTML = svg; │ 00:01:21 v #1482 > > │ bindFunctions?.(renderTarget); │ 00:01:21 v #1483 > > │ } │ 00:01:21 v #1484 > > │ catch (error) { │ 00:01:21 v #1485 > > │ console.log(error); │ 00:01:21 v #1486 > > │ } │ 00:01:21 v #1487 > > │ </script> │ 00:01:21 v #1488 > > │ </div> │ 00:01:21 v #1489 > > │ │ 00:01:21 v #1490 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1491 > > 00:01:21 v #1492 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:01:21 v #1493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 v #1494 > > │ <div class="mermaidMarkdownContainer" style="background-color:white"> │ 00:01:21 v #1495 > > │ <link rel="stylesheet" │ 00:01:21 v #1496 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │ 00:01:21 v #1497 > > │ css"> │ 00:01:21 v #1498 > > │ <div id="79ae7ef959ae4d60a3cae719c00d1383"></div> │ 00:01:21 v #1499 > > │ <script type="module"> │ 00:01:21 v #1500 > > │ │ 00:01:21 v #1501 > > │ import mermaid from │ 00:01:21 v #1502 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; │ 00:01:21 v #1503 > > │ let renderTarget = │ 00:01:21 v #1504 > > │ document.getElementById('79ae7ef959ae4d60a3cae719c00d1383'); │ 00:01:21 v #1505 > > │ try { │ 00:01:21 v #1506 > > │ const {svg, bindFunctions} = await │ 00:01:21 v #1507 > > │ mermaid.mermaidAPI.render( │ 00:01:21 v #1508 > > │ 'mermaid_79ae7ef959ae4d60a3cae719c00d1383', │ 00:01:21 v #1509 > > │ `graph TD │ 00:01:21 v #1510 > > │ zeta_rust("zeta() - Rust") --> num_traits("num-traits") │ 00:01:21 v #1511 > > │ zeta_rust --> num_bigint("num-bigint") │ 00:01:21 v #1512 > > │ zeta_rust --> rust_decimal("rust_decimal for precision") │ 00:01:21 v #1513 > > │ zeta_rust --> error_handling("Rust Error Handling") │ 00:01:21 v #1514 > > │ │ 00:01:21 v #1515 > > │ num_traits --> num_traits_usage("Use for common traits") │ 00:01:21 v #1516 > > │ num_bigint --> bigint_operations("Arbitrary-precision arithmetic │ 00:01:21 v #1517 > > │ operations") │ 00:01:21 v #1518 > > │ rust_decimal --> decimal_operations("High-precision decimal operations") │ 00:01:21 v #1519 > > │ error_handling --> result_type("Use Result<T, E> for error handling") │ 00:01:21 v #1520 > > │ │ 00:01:21 v #1521 > > │ bigint_operations --> convert_rust("convert() - Rust") │ 00:01:21 v #1522 > > │ bigint_operations --> normalize_rust("_normalize() - Rust") │ 00:01:21 v #1523 > > │ │ 00:01:21 v #1524 > > │ convert_rust --> from_float_rust("from_float() - Rust") │ 00:01:21 v #1525 > > │ from_float_rust --> from_man_exp_rust("from_man_exp() - Rust") │ 00:01:21 v #1526 > > │ from_man_exp_rust --> bitcount_rust("bitcount() - Rust") │ 00:01:21 v #1527 > > │ bitcount_rust --> normalize_rust │ 00:01:21 v #1528 > > │ normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust") │ 00:01:21 v #1529 > > │ mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust") │ 00:01:21 v #1530 > > │ mpf_zeta_rust --> to_int_rust("to_int() - Rust") │ 00:01:21 v #1531 > > │ to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - Rust") │ 00:01:21 v #1532 > > │ │ 00:01:21 v #1533 > > │ mpf_zeta_int_rust --> borwein_coefficients_rust("borwein_coefficients() │ 00:01:21 v #1534 > > │ - Rust") │ 00:01:21 v #1535 > > │ borwein_coefficients_rust --> from_man_exp_rust_2("from_man_exp() - │ 00:01:21 v #1536 > > │ Rust") │ 00:01:21 v #1537 > > │ from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - Rust") │ 00:01:21 v #1538 > > │ bitcount_rust_2 --> normalize_rust_2("_normalize() - Rust") │ 00:01:21 v #1539 > > │ normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust") │ 00:01:21 v #1540 > > │ │ 00:01:21 v #1541 > > │ mpf_zeta_int_rust --> mpf_bernoulli_rust("mpf_bernoulli() - Rust") │ 00:01:21 v #1542 > > │ mpf_bernoulli_rust --> bernoulli_size_rust("bernoulli_size() - Rust") │ 00:01:21 v #1543 > > │ bernoulli_size_rust --> mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") │ 00:01:21 v #1544 > > │ mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - Rust") │ 00:01:21 v #1545 > > │ bitcount_rust_3 --> normalize1_rust("_normalize1() - Rust") │ 00:01:21 v #1546 > > │ normalize1_rust --> from_man_exp_rust_3("from_man_exp() - Rust") │ 00:01:21 v #1547 > > │ from_man_exp_rust_3 --> normalize_rust_3("_normalize() - Rust") │ 00:01:21 v #1548 > > │ normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust") │ 00:01:21 v #1549 > > │ mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust") │ 00:01:21 v #1550 > > │ mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust") │ 00:01:21 v #1551 > > │ mpf_neg_rust --> normalize1_rust_2("_normalize1() - Rust") │ 00:01:21 v #1552 > > │ normalize1_rust_2 --> from_int_rust("from_int() - Rust") │ 00:01:21 v #1553 > > │ from_int_rust --> mpf_div_rust("mpf_div() - Rust") │ 00:01:21 v #1554 > > │ mpf_div_rust --> bitcount_rust_4("bitcount() - Rust") │ 00:01:21 v #1555 > > │ bitcount_rust_4 --> normalize1_rust_3("_normalize1() - Rust") │ 00:01:21 v #1556 > > │ │ 00:01:21 v #1557 > > │ style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px │ 00:01:21 v #1558 > > │ style num_traits fill:#bbf,stroke:#333,stroke-width:2px │ 00:01:21 v #1559 > > │ style num_bigint fill:#bbf,stroke:#333,stroke-width:2px │ 00:01:21 v #1560 > > │ style rust_decimal fill:#bbf,stroke:#333,stroke-width:2px │ 00:01:21 v #1561 > > │ style error_handling fill:#bbf,stroke:#333,stroke-width:2px │ 00:01:21 v #1562 > > │ style bigint_operations fill:#bfb,stroke:#333,stroke-width:2px │ 00:01:21 v #1563 > > │ style decimal_operations fill:#bfb,stroke:#333,stroke-width:2px │ 00:01:21 v #1564 > > │ style result_type fill:#bfb,stroke:#333,stroke-width:2px`); │ 00:01:21 v #1565 > > │ renderTarget.innerHTML = svg; │ 00:01:21 v #1566 > > │ bindFunctions?.(renderTarget); │ 00:01:21 v #1567 > > │ } │ 00:01:21 v #1568 > > │ catch (error) { │ 00:01:21 v #1569 > > │ console.log(error); │ 00:01:21 v #1570 > > │ } │ 00:01:21 v #1571 > > │ </script> │ 00:01:21 v #1572 > > │ </div> │ 00:01:21 v #1573 > > │ │ 00:01:21 v #1574 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1575 > > 00:01:21 v #1576 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 v #1577 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 v #1578 > > │ ## tests │ 00:01:21 v #1579 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1580 > > 00:01:21 v #1581 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 v #1582 > > inl tests () = 00:01:21 v #1583 > > testing.run_tests_log { 00:01:21 v #1584 > > test_zeta_at_known_values_ 00:01:21 v #1585 > > test_zeta_at_2_minus2 00:01:21 v #1586 > > test_trivial_zero_at_negative_even___ 00:01:21 v #1587 > > test_non_trivial_zero___ 00:01:21 v #1588 > > test_real_part_greater_than_one___ 00:01:21 v #1589 > > test_zeta_at_1___ 00:01:21 v #1590 > > test_symmetry_across_real_axis___ 00:01:21 v #1591 > > test_behavior_near_origin___ 00:01:21 v #1592 > > test_imaginary_axis 00:01:21 v #1593 > > test_critical_strip 00:01:21 v #1594 > > test_reflection_formula_for_specific_value 00:01:21 v #1595 > > test_euler_product_formula 00:01:21 v #1596 > > } 00:01:21 v #1597 > > 00:01:21 v #1598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 v #1599 > > ///! _ 00:01:21 v #1600 > > 00:01:21 v #1601 > > inl main (_args : array_base string) = 00:01:21 v #1602 > > inl value = 1i32 00:01:21 v #1603 > > console.write_line ($'$"value: {!value}"' : string) 00:01:21 v #1604 > > 0i32 00:01:21 v #1605 > > 00:01:21 v #1606 > > inl main () = 00:01:21 v #1607 > > $'let tests () = !tests ()' : () 00:01:21 v #1608 > > $'let main args = !main args' : () 00:01:22 v #1609 > 00:01:22 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 98381 } 00:01:22 v #1610 > 00:01:22 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:24 v #1611 > 00:01:23 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/math/math.dib.ipynb to html 00:01:24 v #1612 > 00:01:23 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:24 v #1613 > 00:01:23 v #7 ! validate(nb) 00:01:24 v #1614 > 00:01:24 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:24 v #1615 > 00:01:24 v #9 ! return _pygments_highlight( 00:01:26 v #1616 > 00:01:25 v #10 ! [NbConvertApp] Writing 7171637 bytes to c:\home\git\polyglot\lib\math\math.dib.html 00:01:26 v #1617 > 00:01:25 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 847 } 00:01:26 v #1618 > 00:01:25 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 847 } 00:01:26 v #1619 > 00:01:25 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:27 v #1620 > 00:01:26 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:27 v #1621 > 00:01:26 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:27 v #1622 > 00:01:26 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 99287 } 00:01:27 d #1623 runtime.execute_with_options_async / { exit_code = 0; output_length = 105030 } 00:01:27 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 1 00:00:00 d #1 writeDibCode / output: Spi / path: math.dib 00:00:00 d #2 parseDibCode / output: Spi / file: math.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...027let main args = !main args\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/math/math.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/math/math.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] #endif type num_complex_Complex<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>] #endif type std_ffi_CString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] #endif type pyo3_PyErr = class end #...rop.emitRustExpr () v56 let v57 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v57 let v58 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v58 let v59 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v59 let v60 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v60 let v61 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v61 () and closure3 () (v0 : (string [])) : int32 = let v1 : string = $"value: {1}" let v2 : unit = () let v3 : (unit -> unit) = closure2(v1) let v4 : unit = (fun () -> v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure3() let main args = v1 args () 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] #endif type num_complex_Complex<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>] #endif type std_ffi_CString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] #endif type pyo3_PyErr = class end #...rop.emitRustExpr () v56 let v57 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v57 let v58 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v58 let v59 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v59 let v60 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v60 let v61 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v61 () and closure3 () (v0 : (string [])) : int32 = let v1 : string = $"value: {1}" let v2 : unit = () let v3 : (unit -> unit) = closure2(v1) let v4 : unit = (fun () -> v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure3() let main args = v1 args () 00:00:01 d #10 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash: / code.Length: 213882 00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\math\math.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\math" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:02 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored C:\home\git\polyglot\target\Builder\math\math.fsproj (in 364 ms). 00:00:16 v #7 > math -> C:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\linux-x64\math.dll 00:00:17 v #8 > math -> C:\home\git\polyglot\lib\math\dist\ 00:00:17 v #9 > 00:00:17 v #10 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:18 d #11 runtime.execute_with_options_async / { exit_code = 0; output_length = 502 } 00:00:18 d #12 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\math\math.fsproj" --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\math" } } 00:00:19 v #13 > Determining projects to restore... 00:00:19 v #14 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:19 v #15 > The last full restore is still up to date. Nothing left to do. 00:00:19 v #16 > Total time taken: 0 milliseconds 00:00:20 v #17 > Restored C:\home\git\polyglot\target\Builder\math\math.fsproj (in 334 ms). 00:00:36 v #18 > math -> C:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\win-x64\math.dll 00:00:37 v #19 > math -> C:\home\git\polyglot\lib\math\dist\ 00:00:37 v #20 > 00:00:37 v #21 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:37 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 500 } targetDir: C:\home\git\polyglot\target\Builder\math Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @zaaack Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\math\math.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 170ms Started Fable compilation... Fable compilation finished in 9504ms .\lib\spiral\async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\sm.fsx(521,0): (521,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\date_time.fsx(2392,0): (2392,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\runtime.fsx(6912,0): (6912,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\file_system.fsx(16450,0): (16450,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\math\math.fs(46,0): (48,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Directory: C:\home\git\polyglot\target\Builder\math\target Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2024-12-15 4:12 PM rs Compiling pyo3-build-config v0.23.3 Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling pyo3-macros-backend v0.23.3 Compiling pyo3-ffi v0.23.3 Compiling pyo3 v0.23.3 Compiling pyo3-macros v0.23.3 Compiling math v0.0.1 (C:\home\git\polyglot\lib\math) Finished `release` profile [optimized] target(s) in 26.93s Running unittests math.rs (C:\home\git\polyglot\workspace\target\release\deps\math-23d745d94029d129.exe) running 12 tests test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok test module_b7a9935b::Math::test_euler_product_formula ... ok test module_b7a9935b::Math::test_behavior_near_origin___ ... ok test module_b7a9935b::Math::test_zeta_at_1___ ... ok test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok test module_b7a9935b::Math::test_critical_strip ... ok test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok test module_b7a9935b::Math::test_imaginary_axis ... ok test module_b7a9935b::Math::test_non_trivial_zero___ ... ok test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling plot v0.0.1 (C:\home\git\polyglot\apps\plot) warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\networking.rs:533:33 | 533 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 533 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 533 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\networking.rs:533:58 | 533 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 533 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 533 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:713:33 | 713 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 713 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 713 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:713:58 | 713 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 713 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 713 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1099:28 | 1099 | append((replicate((v3) - 1_i32, string(" "))), string("^")), | ^ ^ | help: remove these parentheses | 1099 - append((replicate((v3) - 1_i32, string(" "))), string("^")), 1099 + append(replicate((v3) - 1_i32, string(" ")), string("^")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1184:28 | 1184 | append((replicate((v3) - 1_i32, string(" "))), string("^")), | ^ ^ | help: remove these parentheses | 1184 - append((replicate((v3) - 1_i32, string(" "))), string("^")), 1184 + append(replicate((v3) - 1_i32, string(" ")), string("^")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1363:36 | 1363 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1363 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 1363 + append(v0_1.get().clone(), (ofChar(v121_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1363:58 | 1363 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1363 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 1363 + append((v0_1.get().clone()), ofChar(v121_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1571:36 | 1571 | ... append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1571 - append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); 1571 + append(v0_1.get().clone(), (ofChar(v127_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1571:58 | 1571 | ... append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1571 - append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); 1571 + append((v0_1.get().clone()), ofChar(v127_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1681:36 | 1681 | ... append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1681 - append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); 1681 + append(v0_1.get().clone(), (ofChar(v79_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:1681:58 | 1681 | ... append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1681 - append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); 1681 + append((v0_1.get().clone()), ofChar(v79_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:2138:40 | 2138 | ... append((replicate((v419) - 1_i32, string(" "))), string("^")), | ^ ^ | help: remove these parentheses | 2138 - append((replicate((v419) - 1_i32, string(" "))), string("^")), 2138 + append(replicate((v419) - 1_i32, string(" ")), string("^")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3165:36 | 3165 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3165 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 3165 + append(v0_1.get().clone(), (ofChar(v121_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3165:58 | 3165 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3165 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 3165 + append((v0_1.get().clone()), ofChar(v121_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3310:28 | 3310 | append((replicate((v3) - 1_i32, string(" "))), string("^")), | ^ ^ | help: remove these parentheses | 3310 - append((replicate((v3) - 1_i32, string(" "))), string("^")), 3310 + append(replicate((v3) - 1_i32, string(" ")), string("^")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3375:28 | 3375 | append((ofChar('\\')), (ofChar(v212_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3375 - append((ofChar('\\')), (ofChar(v212_0_0.clone()))), 3375 + append(ofChar('\\'), (ofChar(v212_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3375:44 | 3375 | append((ofChar('\\')), (ofChar(v212_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3375 - append((ofChar('\\')), (ofChar(v212_0_0.clone()))), 3375 + append((ofChar('\\')), ofChar(v212_0_0.clone())), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3464:28 | 3464 | append((replicate((v3) - 1_i32, string(" "))), string("^")), | ^ ^ | help: remove these parentheses | 3464 - append((replicate((v3) - 1_i32, string(" "))), string("^")), 3464 + append(replicate((v3) - 1_i32, string(" ")), string("^")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3529:28 | 3529 | append((ofChar('`')), (ofChar(v212_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3529 - append((ofChar('`')), (ofChar(v212_0_0.clone()))), 3529 + append(ofChar('`'), (ofChar(v212_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:3529:43 | 3529 | append((ofChar('`')), (ofChar(v212_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3529 - append((ofChar('`')), (ofChar(v212_0_0.clone()))), 3529 + append((ofChar('`')), ofChar(v212_0_0.clone())), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:4077:96 | 4077 | ... append((replicate((v4.get().clone()) | ^ ... 4080 | ... string(" "))), | ^ | help: remove these parentheses | 4077 ~ append(replicate((v4.get().clone()) 4078 | - 4079 | 1_i32, 4080 ~ string(" ")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\runtime.rs:4237:116 | 4237 | ... append((replicate((v309) | ^ ... 4240 | ... string(" "))), | ^ | help: remove these parentheses | 4237 ~ append(replicate((v309) 4238 | - 4239 | 1_i32, 4240 ~ string(" ")), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\trace.rs:480:33 | 480 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 480 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 480 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\trace.rs:480:58 | 480 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 480 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 480 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\file_system.rs:692:33 | 692 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 692 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 692 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\file_system.rs:692:58 | 692 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 692 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 692 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:320:17 | 320 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 320 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 320 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:385:17 | 385 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 385 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 385 + append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:385:25 | 385 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 385 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 385 + (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:385:73 | 385 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 385 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 385 + (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:385:33 | 385 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 385 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 385 + (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\sm.rs:385:55 | 385 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 385 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 385 + (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\crypto.rs:626:33 | 626 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 626 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 626 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\crypto.rs:626:58 | 626 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 626 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 626 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\common.rs:558:33 | 558 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 558 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 558 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\polyglot\apps\plot\..\..\lib\spiral\.\common.rs:558:58 | 558 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 558 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 558 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: `plot` (lib) generated 37 warnings (run `cargo fix --lib -p plot` to apply 37 suggestions) Finished `release` profile [optimized] target(s) in 18.60s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Perf.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/perf/Perf.dib", "--output-path", "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/perf/Perf.dib" --output-path "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # Perf (Polyglot) │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #9 > > 00:00:18 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #11 > > //// test 00:00:18 v #12 > > 00:00:18 v #13 > > open testing 00:00:18 v #14 > > open benchmark 00:00:19 v #15 > > 00:00:19 v #16 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #17 > > #if !INTERACTIVE 00:00:19 v #18 > > open Lib 00:00:19 v #19 > > #endif 00:00:19 v #20 > > 00:00:19 v #21 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #22 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #23 > > │ ## TestCaseResult │ 00:00:19 v #24 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #25 > > 00:00:19 v #26 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #27 > > type TestCaseResult = 00:00:19 v #28 > > { 00:00:19 v #29 > > Input: string 00:00:19 v #30 > > Expected: string 00:00:19 v #31 > > Result: string 00:00:19 v #32 > > TimeList: int64 list 00:00:19 v #33 > > } 00:00:19 v #34 > > 00:00:19 v #35 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #36 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #37 > > │ ## run │ 00:00:19 v #38 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #39 > > 00:00:19 v #40 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #41 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input, 00:00:19 v #42 > > expected) = 00:00:19 v #43 > > let inputStr = 00:00:19 v #44 > > match box input with 00:00:19 v #45 > > | :? System.Collections.ICollection as input -> 00:00:19 v #46 > > System.Linq.Enumerable.Cast<obj> input 00:00:19 v #47 > > |> Seq.map string 00:00:19 v #48 > > |> SpiralSm.concat "," 00:00:19 v #49 > > | _ -> input.ToString () 00:00:19 v #50 > > 00:00:19 v #51 > > printfn "" 00:00:19 v #52 > > printfn $"Solution: {inputStr} " 00:00:19 v #53 > > 00:00:19 v #54 > > let performanceInvoke (fn: unit -> 'T) = 00:00:19 v #55 > > GC.Collect () 00:00:19 v #56 > > let stopwatch = System.Diagnostics.Stopwatch () 00:00:19 v #57 > > stopwatch.Start () 00:00:19 v #58 > > let time1 = stopwatch.ElapsedMilliseconds 00:00:19 v #59 > > 00:00:19 v #60 > > let result = 00:00:19 v #61 > > [[| 0 .. count |]] 00:00:19 v #62 > > |> Array.Parallel.map (fun _ -> 00:00:19 v #63 > > fn () 00:00:19 v #64 > > ) 00:00:19 v #65 > > |> Array.last 00:00:19 v #66 > > 00:00:19 v #67 > > let time2 = stopwatch.ElapsedMilliseconds - time1 00:00:19 v #68 > > 00:00:19 v #69 > > result, time2 00:00:19 v #70 > > 00:00:19 v #71 > > let resultsWithTime = 00:00:19 v #72 > > solutions 00:00:19 v #73 > > |> List.mapi (fun i (testName, solution) -> 00:00:19 v #74 > > let result, time = performanceInvoke (fun () -> solution input) 00:00:19 v #75 > > printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time} " 00:00:19 v #76 > > result, time 00:00:19 v #77 > > ) 00:00:19 v #78 > > 00:00:19 v #79 > > 00:00:19 v #80 > > match resultsWithTime |> List.map fst with 00:00:19 v #81 > > | ([[]] | [[ _ ]]) -> () 00:00:19 v #82 > > | (head :: tail) when tail |> List.forall ((=) head) -> () 00:00:19 v #83 > > | results -> failwithf $"Challenge error: %A{results}" 00:00:19 v #84 > > 00:00:19 v #85 > > { 00:00:19 v #86 > > Input = inputStr 00:00:19 v #87 > > Expected = expected.ToString () 00:00:19 v #88 > > Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString() 00:00:19 v #89 > > TimeList = resultsWithTime |> List.map snd 00:00:19 v #90 > > } 00:00:19 v #91 > > 00:00:19 v #92 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #93 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #94 > > │ ## runAll │ 00:00:19 v #95 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #96 > > 00:00:19 v #97 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #98 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list) 00:00:19 v #99 > > testCases = 00:00:19 v #100 > > printfn "" 00:00:19 v #101 > > printfn "" 00:00:19 v #102 > > printfn $"Test: {testName}" 00:00:19 v #103 > > testCases 00:00:19 v #104 > > |> Seq.map (run count solutions) 00:00:19 v #105 > > |> Seq.toList 00:00:19 v #106 > > 00:00:19 v #107 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #108 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #109 > > │ ## sortResultList │ 00:00:19 v #110 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #111 > > 00:00:19 v #112 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #113 > > let sortResultList resultList = 00:00:19 v #114 > > let table = 00:00:19 v #115 > > let rows = 00:00:19 v #116 > > resultList 00:00:19 v #117 > > |> List.map (fun result -> 00:00:19 v #118 > > let best = 00:00:19 v #119 > > result.TimeList 00:00:19 v #120 > > |> List.mapi (fun i time -> 00:00:19 v #121 > > i + 1, time 00:00:19 v #122 > > ) 00:00:19 v #123 > > |> List.sortBy snd 00:00:19 v #124 > > |> List.head 00:00:19 v #125 > > |> _.ToString() 00:00:19 v #126 > > let row = 00:00:19 v #127 > > [[ 00:00:19 v #128 > > result.Input 00:00:19 v #129 > > result.Expected 00:00:19 v #130 > > result.Result 00:00:19 v #131 > > best 00:00:19 v #132 > > ]] 00:00:19 v #133 > > let color = 00:00:19 v #134 > > match result.Expected = result.Result with 00:00:19 v #135 > > | true -> Some ConsoleColor.DarkGreen 00:00:19 v #136 > > | false -> Some ConsoleColor.DarkRed 00:00:19 v #137 > > row, color 00:00:19 v #138 > > ) 00:00:19 v #139 > > let header = 00:00:19 v #140 > > [[ 00:00:19 v #141 > > [[ 00:00:19 v #142 > > "Input" 00:00:19 v #143 > > "Expected" 00:00:19 v #144 > > "Result" 00:00:19 v #145 > > "Best" 00:00:19 v #146 > > ]] 00:00:19 v #147 > > [[ 00:00:19 v #148 > > "---" 00:00:19 v #149 > > "---" 00:00:19 v #150 > > "---" 00:00:19 v #151 > > "---" 00:00:19 v #152 > > ]] 00:00:19 v #153 > > ]] 00:00:19 v #154 > > |> List.map (fun row -> row, None) 00:00:19 v #155 > > header @ rows 00:00:19 v #156 > > 00:00:19 v #157 > > let formattedTable = 00:00:19 v #158 > > let lengthMap = 00:00:19 v #159 > > table 00:00:19 v #160 > > |> List.map fst 00:00:19 v #161 > > |> List.transpose 00:00:19 v #162 > > |> List.map (fun column -> 00:00:19 v #163 > > column 00:00:19 v #164 > > |> List.map String.length 00:00:19 v #165 > > |> List.sortDescending 00:00:19 v #166 > > |> List.tryHead 00:00:19 v #167 > > |> Option.defaultValue 0 00:00:19 v #168 > > ) 00:00:19 v #169 > > |> List.indexed 00:00:19 v #170 > > |> Map.ofList 00:00:19 v #171 > > table 00:00:19 v #172 > > |> List.map (fun (row, color) -> 00:00:19 v #173 > > let newRow = 00:00:19 v #174 > > row 00:00:19 v #175 > > |> List.mapi (fun i cell -> 00:00:19 v #176 > > cell.PadRight lengthMap.[[i]] 00:00:19 v #177 > > ) 00:00:19 v #178 > > newRow, color 00:00:19 v #179 > > ) 00:00:19 v #180 > > 00:00:19 v #181 > > printfn "" 00:00:19 v #182 > > formattedTable 00:00:19 v #183 > > |> List.iter (fun (row, color) -> 00:00:19 v #184 > > match color with 00:00:19 v #185 > > | Some color -> Console.ForegroundColor <- color 00:00:19 v #186 > > | None -> Console.ResetColor () 00:00:19 v #187 > > 00:00:19 v #188 > > printfn "%s" (String.Join ("\t| ", row)) 00:00:19 v #189 > > 00:00:19 v #190 > > Console.ResetColor () 00:00:19 v #191 > > ) 00:00:19 v #192 > > 00:00:19 v #193 > > let averages = 00:00:19 v #194 > > resultList 00:00:19 v #195 > > |> List.map (fun result -> result.TimeList |> List.map float) 00:00:19 v #196 > > |> List.transpose 00:00:19 v #197 > > |> List.map List.average 00:00:19 v #198 > > |> List.map int64 00:00:19 v #199 > > |> List.indexed 00:00:19 v #200 > > 00:00:19 v #201 > > printfn "" 00:00:19 v #202 > > printfn "Average Ranking " 00:00:19 v #203 > > averages 00:00:19 v #204 > > |> List.sortBy snd 00:00:19 v #205 > > |> List.iter (fun (i, avg) -> 00:00:19 v #206 > > printfn $"Test case %d{i + 1}. Average Time: %A{avg} " 00:00:19 v #207 > > ) 00:00:19 v #208 > > 00:00:19 v #209 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #210 > > let mutable _count = 00:00:19 v #211 > > if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}") 00:00:19 v #212 > > <> "<null>" 00:00:19 v #213 > > then 2000000 00:00:19 v #214 > > else 2000 00:00:19 v #215 > > 00:00:19 v #216 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:19 v #217 > > inl is_fast () = 00:00:19 v #218 > > false 00:00:19 v #219 > > 00:00:19 v #220 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #221 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #222 > > │ ## empty3Tests │ 00:00:19 v #223 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #224 > > 00:00:19 v #225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #226 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #227 > > │ Test: Empty3 │ 00:00:19 v #228 > > │ │ 00:00:19 v #229 > > │ Solution: (a, a) │ 00:00:19 v #230 > > │ Test case 1. A. Time: 91L │ 00:00:19 v #231 > > │ │ 00:00:19 v #232 > > │ Solution: (a, a) │ 00:00:19 v #233 > > │ Test case 1. A. Time: 56L │ 00:00:19 v #234 > > │ │ 00:00:19 v #235 > > │ Input | Expected | Result | Best │ 00:00:19 v #236 > > │ --- | --- | --- | --- │ 00:00:19 v #237 > > │ (a, a) | a | a | (1, 91) │ 00:00:19 v #238 > > │ (a, a) | a | a | (1, 56) │ 00:00:19 v #239 > > │ │ 00:00:19 v #240 > > │ Averages │ 00:00:19 v #241 > > │ Test case 1. Average Time: 73L │ 00:00:19 v #242 > > │ │ 00:00:19 v #243 > > │ Ranking │ 00:00:19 v #244 > > │ Test case 1. Average Time: 73L │ 00:00:19 v #245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #246 > > 00:00:19 v #247 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #248 > > //// test 00:00:19 v #249 > > 00:00:19 v #250 > > let solutions = [[ 00:00:19 v #251 > > "A", 00:00:19 v #252 > > fun (a, _b) -> 00:00:19 v #253 > > a 00:00:19 v #254 > > ]] 00:00:19 v #255 > > let testCases = seq { 00:00:19 v #256 > > ("a", "a"), "a" 00:00:19 v #257 > > ("a", "a"), "a" 00:00:19 v #258 > > } 00:00:19 v #259 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases 00:00:19 v #260 > > empty3Tests 00:00:19 v #261 > > |> sortResultList 00:00:20 v #262 > > 00:00:20 v #263 > > ╭─[ 449.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #264 > > │ │ 00:00:20 v #265 > > │ │ 00:00:20 v #266 > > │ Test: empty3Tests │ 00:00:20 v #267 > > │ │ 00:00:20 v #268 > > │ Solution: (a, a) │ 00:00:20 v #269 > > │ Test case 1. A. Time: 1L │ 00:00:20 v #270 > > │ │ 00:00:20 v #271 > > │ Solution: (a, a) │ 00:00:20 v #272 > > │ Test case 1. A. Time: 0L │ 00:00:20 v #273 > > │ │ 00:00:20 v #274 > > │ Input | Expected | Result | Best │ 00:00:20 v #275 > > │ --- | --- | --- | --- │ 00:00:20 v #276 > > │ (a, a) | a | a | (1, 1) │ 00:00:20 v #277 > > │ (a, a) | a | a | (1, 0) │ 00:00:20 v #278 > > │ │ 00:00:20 v #279 > > │ Average Ranking │ 00:00:20 v #280 > > │ Test case 1. Average Time: 0L │ 00:00:20 v #281 > > │ │ 00:00:20 v #282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #283 > > 00:00:20 v #284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #285 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #286 > > │ ## empty2Tests │ 00:00:20 v #287 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #288 > > 00:00:20 v #289 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #290 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #291 > > │ Test: Empty2 │ 00:00:20 v #292 > > │ │ 00:00:20 v #293 > > │ Solution: (a, a) │ 00:00:20 v #294 > > │ Test case 1. A. Time: 59L │ 00:00:20 v #295 > > │ │ 00:00:20 v #296 > > │ Solution: (a, a) │ 00:00:20 v #297 > > │ Test case 1. A. Time: 53L │ 00:00:20 v #298 > > │ │ 00:00:20 v #299 > > │ Input | Expected | Result | Best │ 00:00:20 v #300 > > │ --- | --- | --- | --- │ 00:00:20 v #301 > > │ (a, a) | a | a | (1, 59) │ 00:00:20 v #302 > > │ (a, a) | a | a | (1, 53) │ 00:00:20 v #303 > > │ │ 00:00:20 v #304 > > │ Averages │ 00:00:20 v #305 > > │ Test case 1. Average Time: 56L │ 00:00:20 v #306 > > │ │ 00:00:20 v #307 > > │ Ranking │ 00:00:20 v #308 > > │ Test case 1. Average Time: 56L │ 00:00:20 v #309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #310 > > 00:00:20 v #311 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #312 > > //// test 00:00:20 v #313 > > 00:00:20 v #314 > > let solutions = [[ 00:00:20 v #315 > > "A", 00:00:20 v #316 > > fun (a, _b) -> 00:00:20 v #317 > > a 00:00:20 v #318 > > ]] 00:00:20 v #319 > > let testCases = seq { 00:00:20 v #320 > > ("a", "a"), "a" 00:00:20 v #321 > > ("a", "a"), "a" 00:00:20 v #322 > > } 00:00:20 v #323 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases 00:00:20 v #324 > > empty2Tests 00:00:20 v #325 > > |> sortResultList 00:00:20 v #326 > > 00:00:20 v #327 > > ╭─[ 506.82ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:20 v #328 > > │ │ 00:00:20 v #329 > > │ │ 00:00:20 v #330 > > │ Test: empty2Tests │ 00:00:20 v #331 > > │ │ 00:00:20 v #332 > > │ Solution: (a, a) │ 00:00:20 v #333 > > │ Test case 1. A. Time: 0L │ 00:00:20 v #334 > > │ │ 00:00:20 v #335 > > │ Solution: (a, a) │ 00:00:20 v #336 > > │ Test case 1. A. Time: 0L │ 00:00:20 v #337 > > │ │ 00:00:20 v #338 > > │ Input | Expected | Result | Best │ 00:00:20 v #339 > > │ --- | --- | --- | --- │ 00:00:20 v #340 > > │ (a, a) | a | a | (1, 0) │ 00:00:20 v #341 > > │ (a, a) | a | a | (1, 0) │ 00:00:20 v #342 > > │ │ 00:00:20 v #343 > > │ Average Ranking │ 00:00:20 v #344 > > │ Test case 1. Average Time: 0L │ 00:00:20 v #345 > > │ │ 00:00:20 v #346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #347 > > 00:00:20 v #348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #350 > > │ ## emptyTests │ 00:00:20 v #351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #352 > > 00:00:20 v #353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #355 > > │ Test: Empty │ 00:00:20 v #356 > > │ │ 00:00:20 v #357 > > │ Solution: 0 │ 00:00:20 v #358 > > │ Test case 1. A. Time: 61L │ 00:00:20 v #359 > > │ │ 00:00:20 v #360 > > │ Solution: 2 │ 00:00:20 v #361 > > │ Test case 1. A. Time: 62L │ 00:00:20 v #362 > > │ │ 00:00:20 v #363 > > │ Solution: 5 │ 00:00:20 v #364 > > │ Test case 1. A. Time: 70L │ 00:00:20 v #365 > > │ │ 00:00:20 v #366 > > │ Input | Expected | Result | Best │ 00:00:20 v #367 > > │ --- | --- | --- | --- │ 00:00:20 v #368 > > │ 0 | 0 | 0 | (1, 61) │ 00:00:20 v #369 > > │ 2 | 2 | 2 | (1, 62) │ 00:00:20 v #370 > > │ 5 | 5 | 5 | (1, 70) │ 00:00:20 v #371 > > │ │ 00:00:20 v #372 > > │ Averages │ 00:00:20 v #373 > > │ Test case 1. Average Time: 64L │ 00:00:20 v #374 > > │ │ 00:00:20 v #375 > > │ Ranking │ 00:00:20 v #376 > > │ Test case 1. Average Time: 64L │ 00:00:20 v #377 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #378 > > 00:00:20 v #379 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #380 > > //// test 00:00:20 v #381 > > 00:00:20 v #382 > > let solutions = [[ 00:00:20 v #383 > > "A", 00:00:20 v #384 > > fun n -> 00:00:20 v #385 > > n + 0 00:00:20 v #386 > > ]] 00:00:20 v #387 > > let testCases = seq { 00:00:20 v #388 > > 0, 0 00:00:20 v #389 > > 2, 2 00:00:20 v #390 > > 5, 5 00:00:20 v #391 > > } 00:00:20 v #392 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases 00:00:20 v #393 > > emptyTests 00:00:20 v #394 > > |> sortResultList 00:00:21 v #395 > > 00:00:21 v #396 > > ╭─[ 624.89ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:21 v #397 > > │ │ 00:00:21 v #398 > > │ │ 00:00:21 v #399 > > │ Test: emptyTests │ 00:00:21 v #400 > > │ │ 00:00:21 v #401 > > │ Solution: 0 │ 00:00:21 v #402 > > │ Test case 1. A. Time: 2L │ 00:00:21 v #403 > > │ │ 00:00:21 v #404 > > │ Solution: 2 │ 00:00:21 v #405 > > │ Test case 1. A. Time: 0L │ 00:00:21 v #406 > > │ │ 00:00:21 v #407 > > │ Solution: 5 │ 00:00:21 v #408 > > │ Test case 1. A. Time: 0L │ 00:00:21 v #409 > > │ │ 00:00:21 v #410 > > │ Input | Expected | Result | Best │ 00:00:21 v #411 > > │ --- | --- | --- | --- │ 00:00:21 v #412 > > │ 0 | 0 | 0 | (1, 2) │ 00:00:21 v #413 > > │ 2 | 2 | 2 | (1, 0) │ 00:00:21 v #414 > > │ 5 | 5 | 5 | (1, 0) │ 00:00:21 v #415 > > │ │ 00:00:21 v #416 > > │ Average Ranking │ 00:00:21 v #417 > > │ Test case 1. Average Time: 0L │ 00:00:21 v #418 > > │ │ 00:00:21 v #419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #420 > > 00:00:21 v #421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:21 v #423 > > │ ## uniqueLettersTests │ 00:00:21 v #424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #425 > > 00:00:21 v #426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:21 v #428 > > │ Test: UniqueLetters │ 00:00:21 v #429 > > │ │ 00:00:21 v #430 > > │ Solution: abc │ 00:00:21 v #431 > > │ Test case 1. A. Time: 1512L │ 00:00:21 v #432 > > │ Test case 2. B. Time: 1947L │ 00:00:21 v #433 > > │ Test case 3. C. Time: 2023L │ 00:00:21 v #434 > > │ Test case 4. D. Time: 1358L │ 00:00:21 v #435 > > │ Test case 5. E. Time: 1321L │ 00:00:21 v #436 > > │ Test case 6. F. Time: 1346L │ 00:00:21 v #437 > > │ Test case 7. G. Time: 1304L │ 00:00:21 v #438 > > │ Test case 8. H. Time: 1383L │ 00:00:21 v #439 > > │ Test case 9. I. Time: 1495L │ 00:00:21 v #440 > > │ Test case 10. J. Time: 1245L │ 00:00:21 v #441 > > │ Test case 11. K. Time: 1219L │ 00:00:21 v #442 > > │ │ 00:00:21 v #443 > > │ Solution: accabb │ 00:00:21 v #444 > > │ Test case 1. A. Time: 1648L │ 00:00:21 v #445 > > │ Test case 2. B. Time: 2061L │ 00:00:21 v #446 > > │ Test case 3. C. Time: 2413L │ 00:00:21 v #447 > > │ Test case 4. D. Time: 1561L │ 00:00:21 v #448 > > │ Test case 5. E. Time: 1593L │ 00:00:21 v #449 > > │ Test case 6. F. Time: 1518L │ 00:00:21 v #450 > > │ Test case 7. G. Time: 1415L │ 00:00:21 v #451 > > │ Test case 8. H. Time: 1510L │ 00:00:21 v #452 > > │ Test case 9. I. Time: 1445L │ 00:00:21 v #453 > > │ Test case 10. J. Time: 1636L │ 00:00:21 v #454 > > │ Test case 11. K. Time: 1317L │ 00:00:21 v #455 > > │ │ 00:00:21 v #456 > > │ Solution: pprrqqpp │ 00:00:21 v #457 > > │ Test case 1. A. Time: 2255L │ 00:00:21 v #458 > > │ Test case 2. B. Time: 2408L │ 00:00:21 v #459 > > │ Test case 3. C. Time: 2393L │ 00:00:21 v #460 > > │ Test case 4. D. Time: 1675L │ 00:00:21 v #461 > > │ Test case 5. E. Time: 1911L │ 00:00:21 v #462 > > │ Test case 6. F. Time: 2126L │ 00:00:21 v #463 > > │ Test case 7. G. Time: 1504L │ 00:00:21 v #464 > > │ Test case 8. H. Time: 1715L │ 00:00:21 v #465 > > │ Test case 9. I. Time: 1537L │ 00:00:21 v #466 > > │ Test case 10. J. Time: 1522L │ 00:00:21 v #467 > > │ Test case 11. K. Time: 1322L │ 00:00:21 v #468 > > │ │ 00:00:21 v #469 > > │ Solution: │ 00:00:21 v #470 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:21 v #471 > > │ bbb │ 00:00:21 v #472 > > │ Test case 1. A. Time: 13073L │ 00:00:21 v #473 > > │ Test case 2. B. Time: 11519L │ 00:00:21 v #474 > > │ Test case 3. C. Time: 8373L │ 00:00:21 v #475 > > │ Test case 4. D. Time: 5860L │ 00:00:21 v #476 > > │ Test case 5. E. Time: 6490L │ 00:00:21 v #477 > > │ Test case 6. F. Time: 6325L │ 00:00:21 v #478 > > │ Test case 7. G. Time: 5799L │ 00:00:21 v #479 > > │ Test case 8. H. Time: 7099L │ 00:00:21 v #480 > > │ Test case 9. I. Time: 6133L │ 00:00:21 v #481 > > │ Test case 10. J. Time: 5993L │ 00:00:21 v #482 > > │ Test case 11. K. Time: 2040L │ 00:00:21 v #483 > > │ │ 00:00:21 v #484 > > │ Input │ 00:00:21 v #485 > > │ | Expected | Result | Best │ 00:00:21 v #486 > > │ --- │ 00:00:21 v #487 > > │ │ 00:00:21 v #488 > > │ | --- | --- | --- │ 00:00:21 v #489 > > │ abc │ 00:00:21 v #490 > > │ │ 00:00:21 v #491 > > │ | abc | abc | (11, 1219) │ 00:00:21 v #492 > > │ accabb │ 00:00:21 v #493 > > │ | acb | acb | (11, 1317) │ 00:00:21 v #494 > > │ pprrqqpp │ 00:00:21 v #495 > > │ | prq | prq | (11, 1322) │ 00:00:21 v #496 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:21 v #497 > > │ bbb | acb | acb | (11, 2040) │ 00:00:21 v #498 > > │ │ 00:00:21 v #499 > > │ Averages │ 00:00:21 v #500 > > │ Test case 1. Average Time: 4622L │ 00:00:21 v #501 > > │ Test case 2. Average Time: 4483L │ 00:00:21 v #502 > > │ Test case 3. Average Time: 3800L │ 00:00:21 v #503 > > │ Test case 4. Average Time: 2613L │ 00:00:21 v #504 > > │ Test case 5. Average Time: 2828L │ 00:00:21 v #505 > > │ Test case 6. Average Time: 2828L │ 00:00:21 v #506 > > │ Test case 7. Average Time: 2505L │ 00:00:21 v #507 > > │ Test case 8. Average Time: 2926L │ 00:00:21 v #508 > > │ Test case 9. Average Time: 2652L │ 00:00:21 v #509 > > │ Test case 10. Average Time: 2599L │ 00:00:21 v #510 > > │ Test case 11. Average Time: 1474L │ 00:00:21 v #511 > > │ │ 00:00:21 v #512 > > │ Ranking │ 00:00:21 v #513 > > │ Test case 1. Average Time: 4622L │ 00:00:21 v #514 > > │ Test case 2. Average Time: 4483L │ 00:00:21 v #515 > > │ Test case 3. Average Time: 3800L │ 00:00:21 v #516 > > │ Test case 8. Average Time: 2926L │ 00:00:21 v #517 > > │ Test case 5. Average Time: 2828L │ 00:00:21 v #518 > > │ Test case 6. Average Time: 2828L │ 00:00:21 v #519 > > │ Test case 9. Average Time: 2652L │ 00:00:21 v #520 > > │ Test case 4. Average Time: 2613L │ 00:00:21 v #521 > > │ Test case 10. Average Time: 2599L │ 00:00:21 v #522 > > │ Test case 7. Average Time: 2505L │ 00:00:21 v #523 > > │ Test case 11. Average Time: 1474L │ 00:00:21 v #524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #525 > > 00:00:21 v #526 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:21 v #527 > > //// test 00:00:21 v #528 > > 00:00:21 v #529 > > let solutions = [[ 00:00:21 v #530 > > "A", 00:00:21 v #531 > > fun input -> 00:00:21 v #532 > > input 00:00:21 v #533 > > |> Seq.toList 00:00:21 v #534 > > |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[ 00:00:21 v #535 > > x ]]) [[]] 00:00:21 v #536 > > |> Seq.toArray 00:00:21 v #537 > > |> String 00:00:21 v #538 > > 00:00:21 v #539 > > "B", 00:00:21 v #540 > > fun input -> 00:00:21 v #541 > > input 00:00:21 v #542 > > |> Seq.rev 00:00:21 v #543 > > |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then 00:00:21 v #544 > > acc else x :: acc) list [[]] 00:00:21 v #545 > > |> Seq.rev 00:00:21 v #546 > > |> Seq.toArray 00:00:21 v #547 > > |> String 00:00:21 v #548 > > 00:00:21 v #549 > > "C", 00:00:21 v #550 > > fun input -> 00:00:21 v #551 > > input 00:00:21 v #552 > > |> Seq.rev 00:00:21 v #553 > > |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set 00:00:21 v #554 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]]) 00:00:21 v #555 > > |> snd 00:00:21 v #556 > > |> Seq.rev 00:00:21 v #557 > > |> Seq.toArray 00:00:21 v #558 > > |> String 00:00:21 v #559 > > 00:00:21 v #560 > > "D", 00:00:21 v #561 > > fun input -> 00:00:21 v #562 > > input 00:00:21 v #563 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #564 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]]) 00:00:21 v #565 > > |> snd 00:00:21 v #566 > > |> String 00:00:21 v #567 > > 00:00:21 v #568 > > "E", 00:00:21 v #569 > > fun input -> 00:00:21 v #570 > > input 00:00:21 v #571 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #572 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:21 v #573 > > |> snd 00:00:21 v #574 > > |> List.rev 00:00:21 v #575 > > |> List.toArray 00:00:21 v #576 > > |> String 00:00:21 v #577 > > 00:00:21 v #578 > > "F", 00:00:21 v #579 > > fun input -> 00:00:21 v #580 > > input 00:00:21 v #581 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #582 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) 00:00:21 v #583 > > |> snd 00:00:21 v #584 > > |> List.toArray 00:00:21 v #585 > > |> String 00:00:21 v #586 > > 00:00:21 v #587 > > "G", 00:00:21 v #588 > > fun input -> 00:00:21 v #589 > > input 00:00:21 v #590 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #591 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:21 v #592 > > |> snd 00:00:21 v #593 > > |> List.toArray 00:00:21 v #594 > > |> Array.rev 00:00:21 v #595 > > |> String 00:00:21 v #596 > > 00:00:21 v #597 > > "H", 00:00:21 v #598 > > fun input -> 00:00:21 v #599 > > input 00:00:21 v #600 > > |> Seq.toList 00:00:21 v #601 > > |> fun list -> 00:00:21 v #602 > > let rec loop set = function 00:00:21 v #603 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #604 > > | head :: tail -> (loop (set.Add head) tail) @ [[ head ]] 00:00:21 v #605 > > | [[]] -> [[]] 00:00:21 v #606 > > loop Set.empty list 00:00:21 v #607 > > |> List.rev 00:00:21 v #608 > > |> List.toArray 00:00:21 v #609 > > |> String 00:00:21 v #610 > > 00:00:21 v #611 > > "I", 00:00:21 v #612 > > fun input -> 00:00:21 v #613 > > input 00:00:21 v #614 > > |> Seq.toList 00:00:21 v #615 > > |> fun list -> 00:00:21 v #616 > > let rec loop set = function 00:00:21 v #617 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #618 > > | head :: tail -> loop (set.Add head) tail |> Array.append [[| 00:00:21 v #619 > > head |]] 00:00:21 v #620 > > | [[]] -> [[||]] 00:00:21 v #621 > > loop Set.empty list 00:00:21 v #622 > > |> String 00:00:21 v #623 > > 00:00:21 v #624 > > "J", 00:00:21 v #625 > > fun input -> 00:00:21 v #626 > > input 00:00:21 v #627 > > |> Seq.toList 00:00:21 v #628 > > |> fun list -> 00:00:21 v #629 > > let rec loop set = function 00:00:21 v #630 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #631 > > | head :: tail -> head :: loop (set.Add head) tail 00:00:21 v #632 > > | [[]] -> [[]] 00:00:21 v #633 > > loop Set.empty list 00:00:21 v #634 > > |> List.toArray 00:00:21 v #635 > > |> String 00:00:21 v #636 > > 00:00:21 v #637 > > "K", 00:00:21 v #638 > > fun input -> 00:00:21 v #639 > > input 00:00:21 v #640 > > |> Seq.distinct 00:00:21 v #641 > > |> Seq.toArray 00:00:21 v #642 > > |> String 00:00:21 v #643 > > ]] 00:00:21 v #644 > > let testCases = seq { 00:00:21 v #645 > > "abc", "abc" 00:00:21 v #646 > > "accabb", "acb" 00:00:21 v #647 > > "pprrqqpp", "prq" 00:00:21 v #648 > > 00:00:21 v #649 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 00:00:21 v #650 > > ", "acb" 00:00:21 v #651 > > } 00:00:21 v #652 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions 00:00:21 v #653 > > testCases 00:00:21 v #654 > > uniqueLettersTests 00:00:21 v #655 > > |> sortResultList 00:00:30 v #656 > > 00:00:30 v #657 > > ╭─[ 8.90s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:30 v #658 > > │ │ 00:00:30 v #659 > > │ │ 00:00:30 v #660 > > │ Test: uniqueLettersTests │ 00:00:30 v #661 > > │ │ 00:00:30 v #662 > > │ Solution: abc │ 00:00:30 v #663 > > │ Test case 1. A. Time: 3L │ 00:00:30 v #664 > > │ Test case 2. B. Time: 4L │ 00:00:30 v #665 > > │ Test case 3. C. Time: 3L │ 00:00:30 v #666 > > │ Test case 4. D. Time: 2L │ 00:00:30 v #667 > > │ Test case 5. E. Time: 2L │ 00:00:30 v #668 > > │ Test case 6. F. Time: 1L │ 00:00:30 v #669 > > │ Test case 7. G. Time: 2L │ 00:00:30 v #670 > > │ Test case 8. H. Time: 2L │ 00:00:30 v #671 > > │ Test case 9. I. Time: 2L │ 00:00:30 v #672 > > │ Test case 10. J. Time: 1L │ 00:00:30 v #673 > > │ Test case 11. K. Time: 3L │ 00:00:30 v #674 > > │ │ 00:00:30 v #675 > > │ Solution: accabb │ 00:00:30 v #676 > > │ Test case 1. A. Time: 1L │ 00:00:30 v #677 > > │ Test case 2. B. Time: 1L │ 00:00:30 v #678 > > │ Test case 3. C. Time: 2L │ 00:00:30 v #679 > > │ Test case 4. D. Time: 1L │ 00:00:30 v #680 > > │ Test case 5. E. Time: 1L │ 00:00:30 v #681 > > │ Test case 6. F. Time: 1L │ 00:00:30 v #682 > > │ Test case 7. G. Time: 0L │ 00:00:30 v #683 > > │ Test case 8. H. Time: 0L │ 00:00:30 v #684 > > │ Test case 9. I. Time: 0L │ 00:00:30 v #685 > > │ Test case 10. J. Time: 0L │ 00:00:30 v #686 > > │ Test case 11. K. Time: 1L │ 00:00:30 v #687 > > │ │ 00:00:30 v #688 > > │ Solution: pprrqqpp │ 00:00:30 v #689 > > │ Test case 1. A. Time: 1L │ 00:00:30 v #690 > > │ Test case 2. B. Time: 1L │ 00:00:30 v #691 > > │ Test case 3. C. Time: 1L │ 00:00:30 v #692 > > │ Test case 4. D. Time: 0L │ 00:00:30 v #693 > > │ Test case 5. E. Time: 1L │ 00:00:30 v #694 > > │ Test case 6. F. Time: 1L │ 00:00:30 v #695 > > │ Test case 7. G. Time: 1L │ 00:00:30 v #696 > > │ Test case 8. H. Time: 0L │ 00:00:30 v #697 > > │ Test case 9. I. Time: 0L │ 00:00:30 v #698 > > │ Test case 10. J. Time: 1L │ 00:00:30 v #699 > > │ Test case 11. K. Time: 1L │ 00:00:30 v #700 > > │ │ 00:00:30 v #701 > > │ Solution: │ 00:00:30 v #702 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:30 v #703 > > │ bbb │ 00:00:30 v #704 > > │ Test case 1. A. Time: 14L │ 00:00:30 v #705 > > │ Test case 2. B. Time: 9L │ 00:00:30 v #706 > > │ Test case 3. C. Time: 13L │ 00:00:30 v #707 > > │ Test case 4. D. Time: 7L │ 00:00:30 v #708 > > │ Test case 5. E. Time: 8L │ 00:00:30 v #709 > > │ Test case 6. F. Time: 8L │ 00:00:30 v #710 > > │ Test case 7. G. Time: 8L │ 00:00:30 v #711 > > │ Test case 8. H. Time: 8L │ 00:00:30 v #712 > > │ Test case 9. I. Time: 7L │ 00:00:30 v #713 > > │ Test case 10. J. Time: 7L │ 00:00:30 v #714 > > │ Test case 11. K. Time: 4L │ 00:00:30 v #715 > > │ │ 00:00:30 v #716 > > │ Input │ 00:00:30 v #717 > > │ | Expected | Result | Best │ 00:00:30 v #718 > > │ --- │ 00:00:30 v #719 > > │ | --- | --- | --- │ 00:00:30 v #720 > > │ abc │ 00:00:30 v #721 > > │ | abc | abc | (6, 1) │ 00:00:30 v #722 > > │ accabb │ 00:00:30 v #723 > > │ | acb | acb | (7, 0) │ 00:00:30 v #724 > > │ pprrqqpp │ 00:00:30 v #725 > > │ | prq | prq | (4, 0) │ 00:00:30 v #726 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:30 v #727 > > │ bbb | acb | acb | (11, 4) │ 00:00:30 v #728 > > │ │ 00:00:30 v #729 > > │ Average Ranking │ 00:00:30 v #730 > > │ Test case 4. Average Time: 2L │ 00:00:30 v #731 > > │ Test case 6. Average Time: 2L │ 00:00:30 v #732 > > │ Test case 7. Average Time: 2L │ 00:00:30 v #733 > > │ Test case 8. Average Time: 2L │ 00:00:30 v #734 > > │ Test case 9. Average Time: 2L │ 00:00:30 v #735 > > │ Test case 10. Average Time: 2L │ 00:00:30 v #736 > > │ Test case 11. Average Time: 2L │ 00:00:30 v #737 > > │ Test case 2. Average Time: 3L │ 00:00:30 v #738 > > │ Test case 5. Average Time: 3L │ 00:00:30 v #739 > > │ Test case 1. Average Time: 4L │ 00:00:30 v #740 > > │ Test case 3. Average Time: 4L │ 00:00:30 v #741 > > │ │ 00:00:30 v #742 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 v #743 > > 00:00:30 v #744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 v #745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 v #746 > > │ ## rotateStringsTests │ 00:00:30 v #747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 v #748 > > 00:00:30 v #749 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 v #750 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 v #751 > > │ https://www.hackerrank.com/challenges/rotate-string/forum │ 00:00:30 v #752 > > │ │ 00:00:30 v #753 > > │ Test: RotateStrings │ 00:00:30 v #754 > > │ │ 00:00:30 v #755 > > │ Solution: abc │ 00:00:30 v #756 > > │ Test case 1. A. Time: 1842L │ 00:00:30 v #757 > > │ Test case 2. B. Time: 1846L │ 00:00:30 v #758 > > │ Test case 3. C. Time: 1936L │ 00:00:30 v #759 > > │ Test case 4. CA. Time: 2224L │ 00:00:30 v #760 > > │ Test case 5. CB. Time: 2329L │ 00:00:30 v #761 > > │ Test case 6. D. Time: 2474L │ 00:00:30 v #762 > > │ Test case 7. E. Time: 1664L │ 00:00:30 v #763 > > │ Test case 8. F. Time: 1517L │ 00:00:30 v #764 > > │ Test case 9. FA. Time: 1651L │ 00:00:30 v #765 > > │ Test case 10. FB. Time: 3764L │ 00:00:30 v #766 > > │ Test case 11. FC. Time: 5415L │ 00:00:30 v #767 > > │ │ 00:00:30 v #768 > > │ Solution: abcde │ 00:00:30 v #769 > > │ Test case 1. A. Time: 3356L │ 00:00:30 v #770 > > │ Test case 2. B. Time: 2592L │ 00:00:30 v #771 > > │ Test case 3. C. Time: 2346L │ 00:00:30 v #772 > > │ Test case 4. CA. Time: 2997L │ 00:00:30 v #773 > > │ Test case 5. CB. Time: 3061L │ 00:00:30 v #774 > > │ Test case 6. D. Time: 4051L │ 00:00:30 v #775 > > │ Test case 7. E. Time: 1905L │ 00:00:30 v #776 > > │ Test case 8. F. Time: 1771L │ 00:00:30 v #777 > > │ Test case 9. FA. Time: 2175L │ 00:00:30 v #778 > > │ Test case 10. FB. Time: 3275L │ 00:00:30 v #779 > > │ Test case 11. FC. Time: 5266L │ 00:00:30 v #780 > > │ │ 00:00:30 v #781 > > │ Solution: abcdefghi │ 00:00:30 v #782 > > │ Test case 1. A. Time: 4492L │ 00:00:30 v #783 > > │ Test case 2. B. Time: 3526L │ 00:00:30 v #784 > > │ Test case 3. C. Time: 3583L │ 00:00:30 v #785 > > │ Test case 4. CA. Time: 3711L │ 00:00:30 v #786 > > │ Test case 5. CB. Time: 4783L │ 00:00:30 v #787 > > │ Test case 6. D. Time: 7557L │ 00:00:30 v #788 > > │ Test case 7. E. Time: 3452L │ 00:00:30 v #789 > > │ Test case 8. F. Time: 3050L │ 00:00:30 v #790 > > │ Test case 9. FA. Time: 3275L │ 00:00:30 v #791 > > │ Test case 10. FB. Time: 4635L │ 00:00:30 v #792 > > │ Test case 11. FC. Time: 5616L │ 00:00:30 v #793 > > │ │ 00:00:30 v #794 > > │ Solution: abab │ 00:00:30 v #795 > > │ Test case 1. A. Time: 2093L │ 00:00:30 v #796 > > │ Test case 2. B. Time: 1843L │ 00:00:30 v #797 > > │ Test case 3. C. Time: 1746L │ 00:00:30 v #798 > > │ Test case 4. CA. Time: 2085L │ 00:00:30 v #799 > > │ Test case 5. CB. Time: 2139L │ 00:00:30 v #800 > > │ Test case 6. D. Time: 2095L │ 00:00:30 v #801 > > │ Test case 7. E. Time: 1723L │ 00:00:30 v #802 > > │ Test case 8. F. Time: 1558L │ 00:00:30 v #803 > > │ Test case 9. FA. Time: 1620L │ 00:00:30 v #804 > > │ Test case 10. FB. Time: 2319L │ 00:00:30 v #805 > > │ Test case 11. FC. Time: 3918L │ 00:00:30 v #806 > > │ │ 00:00:30 v #807 > > │ Solution: aa │ 00:00:30 v #808 > > │ Test case 1. A. Time: 1107L │ 00:00:30 v #809 > > │ Test case 2. B. Time: 1241L │ 00:00:30 v #810 > > │ Test case 3. C. Time: 1183L │ 00:00:30 v #811 > > │ Test case 4. CA. Time: 1563L │ 00:00:30 v #812 > > │ Test case 5. CB. Time: 1525L │ 00:00:30 v #813 > > │ Test case 6. D. Time: 1591L │ 00:00:30 v #814 > > │ Test case 7. E. Time: 1327L │ 00:00:30 v #815 > > │ Test case 8. F. Time: 1151L │ 00:00:30 v #816 > > │ Test case 9. FA. Time: 1180L │ 00:00:30 v #817 > > │ Test case 10. FB. Time: 1733L │ 00:00:30 v #818 > > │ Test case 11. FC. Time: 2817L │ 00:00:30 v #819 > > │ │ 00:00:30 v #820 > > │ Solution: z │ 00:00:30 v #821 > > │ Test case 1. A. Time: 816L │ 00:00:30 v #822 > > │ Test case 2. B. Time: 745L │ 00:00:30 v #823 > > │ Test case 3. C. Time: 928L │ 00:00:30 v #824 > > │ Test case 4. CA. Time: 1375L │ 00:00:30 v #825 > > │ Test case 5. CB. Time: 1029L │ 00:00:30 v #826 > > │ Test case 6. D. Time: 852L │ 00:00:30 v #827 > > │ Test case 7. E. Time: 712L │ 00:00:30 v #828 > > │ Test case 8. F. Time: 263L │ 00:00:30 v #829 > > │ Test case 9. FA. Time: 232L │ 00:00:30 v #830 > > │ Test case 10. FB. Time: 773L │ 00:00:30 v #831 > > │ Test case 11. FC. Time: 1789L │ 00:00:30 v #832 > > │ │ 00:00:30 v #833 > > │ Input | Expected │ 00:00:30 v #834 > > │ │ 00:00:30 v #835 > > │ | Result │ 00:00:30 v #836 > > │ │ 00:00:30 v #837 > > │ | Best │ 00:00:30 v #838 > > │ --- | --- │ 00:00:30 v #839 > > │ │ 00:00:30 v #840 > > │ | --- │ 00:00:30 v #841 > > │ │ 00:00:30 v #842 > > │ | --- │ 00:00:30 v #843 > > │ abc | bca cab abc │ 00:00:30 v #844 > > │ │ 00:00:30 v #845 > > │ | bca cab abc │ 00:00:30 v #846 > > │ │ 00:00:30 v #847 > > │ | (8, 1517) │ 00:00:30 v #848 > > │ abcde | bcdea cdeab deabc eabcd abcde │ 00:00:30 v #849 > > │ | bcdea cdeab deabc eabcd abcde │ 00:00:30 v #850 > > │ | (8, 1771) │ 00:00:30 v #851 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde │ 00:00:30 v #852 > > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab │ 00:00:30 v #853 > > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi │ 00:00:30 v #854 > > │ | (8, 3050) │ 00:00:30 v #855 > > │ abab | baba abab baba abab │ 00:00:30 v #856 > > │ │ 00:00:30 v #857 > > │ | baba abab baba abab │ 00:00:30 v #858 > > │ │ 00:00:30 v #859 > > │ | (8, 1558) │ 00:00:30 v #860 > > │ aa | aa aa │ 00:00:30 v #861 > > │ │ 00:00:30 v #862 > > │ | aa aa │ 00:00:30 v #863 > > │ │ 00:00:30 v #864 > > │ | (1, 1107) │ 00:00:30 v #865 > > │ z | z │ 00:00:30 v #866 > > │ │ 00:00:30 v #867 > > │ | z │ 00:00:30 v #868 > > │ │ 00:00:30 v #869 > > │ | (9, 232) │ 00:00:30 v #870 > > │ │ 00:00:30 v #871 > > │ Averages │ 00:00:30 v #872 > > │ Test case 1. Average Time: 2284L │ 00:00:30 v #873 > > │ Test case 2. Average Time: 1965L │ 00:00:30 v #874 > > │ Test case 3. Average Time: 1953L │ 00:00:30 v #875 > > │ Test case 4. Average Time: 2325L │ 00:00:30 v #876 > > │ Test case 5. Average Time: 2477L │ 00:00:30 v #877 > > │ Test case 6. Average Time: 3103L │ 00:00:30 v #878 > > │ Test case 7. Average Time: 1797L │ 00:00:30 v #879 > > │ Test case 8. Average Time: 1551L │ 00:00:30 v #880 > > │ Test case 9. Average Time: 1688L │ 00:00:30 v #881 > > │ Test case 10. Average Time: 2749L │ 00:00:30 v #882 > > │ Test case 11. Average Time: 4136L │ 00:00:30 v #883 > > │ │ 00:00:30 v #884 > > │ Ranking │ 00:00:30 v #885 > > │ Test case 11. Average Time: 4136L │ 00:00:30 v #886 > > │ Test case 6. Average Time: 3103L │ 00:00:30 v #887 > > │ Test case 10. Average Time: 2749L │ 00:00:30 v #888 > > │ Test case 5. Average Time: 2477L │ 00:00:30 v #889 > > │ Test case 4. Average Time: 2325L │ 00:00:30 v #890 > > │ Test case 1. Average Time: 2284L │ 00:00:30 v #891 > > │ Test case 2. Average Time: 1965L │ 00:00:30 v #892 > > │ Test case 3. Average Time: 1953L │ 00:00:30 v #893 > > │ Test case 7. Average Time: 1797L │ 00:00:30 v #894 > > │ Test case 9. Average Time: 1688L │ 00:00:30 v #895 > > │ Test case 8. Average Time: 1551L │ 00:00:30 v #896 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 v #897 > > 00:00:30 v #898 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:30 v #899 > > //// test 00:00:30 v #900 > > 00:00:30 v #901 > > let solutions = [[ 00:00:30 v #902 > > "A", 00:00:30 v #903 > > fun (input: string) -> 00:00:30 v #904 > > let resultList = 00:00:30 v #905 > > List.fold (fun acc x -> 00:00:30 v #906 > > let rotate (text: string) (letter: string) = (text |> 00:00:30 v #907 > > SpiralSm.slice 1 (input.Length - 1)) + letter 00:00:30 v #908 > > [[ rotate (if acc.IsEmpty then input else acc.Head) (string x) 00:00:30 v #909 > > ]] @ acc 00:00:30 v #910 > > ) [[]] (Seq.toList input) 00:00:30 v #911 > > 00:00:30 v #912 > > (resultList, "") 00:00:30 v #913 > > ||> List.foldBack (fun acc x -> x + acc + " ") 00:00:30 v #914 > > |> _.TrimEnd() 00:00:30 v #915 > > 00:00:30 v #916 > > "B", 00:00:30 v #917 > > fun input -> 00:00:30 v #918 > > input 00:00:30 v #919 > > |> Seq.toList 00:00:30 v #920 > > |> List.fold (fun (acc: string list) letter -> 00:00:30 v #921 > > let last = 00:00:30 v #922 > > if acc.IsEmpty 00:00:30 v #923 > > then input 00:00:30 v #924 > > else acc.Head 00:00:30 v #925 > > 00:00:30 v #926 > > let item = last.[[1 .. input.Length - 1]] + string letter 00:00:30 v #927 > > 00:00:30 v #928 > > item :: acc 00:00:30 v #929 > > ) [[]] 00:00:30 v #930 > > |> List.rev 00:00:30 v #931 > > |> SpiralSm.concat " " 00:00:30 v #932 > > 00:00:30 v #933 > > "C", 00:00:30 v #934 > > fun input -> 00:00:30 v #935 > > input 00:00:30 v #936 > > |> Seq.toList 00:00:30 v #937 > > |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:00:30 v #938 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:00:30 v #939 > > |> List.rev 00:00:30 v #940 > > |> List.skip 1 00:00:30 v #941 > > |> SpiralSm.concat " " 00:00:30 v #942 > > 00:00:30 v #943 > > "CA", 00:00:30 v #944 > > fun input -> 00:00:30 v #945 > > input 00:00:30 v #946 > > |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:00:30 v #947 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:00:30 v #948 > > |> Seq.rev 00:00:30 v #949 > > |> Seq.skip 1 00:00:30 v #950 > > |> SpiralSm.concat " " 00:00:30 v #951 > > 00:00:30 v #952 > > "CB", 00:00:30 v #953 > > fun input -> 00:00:30 v #954 > > input 00:00:30 v #955 > > |> Seq.toArray 00:00:30 v #956 > > |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[| 00:00:30 v #957 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]] 00:00:30 v #958 > > |> Array.rev 00:00:30 v #959 > > |> Array.skip 1 00:00:30 v #960 > > |> SpiralSm.concat " " 00:00:30 v #961 > > 00:00:30 v #962 > > "D", 00:00:30 v #963 > > fun input -> 00:00:30 v #964 > > input 00:00:30 v #965 > > |> Seq.toList 00:00:30 v #966 > > |> fun list -> 00:00:30 v #967 > > let rec loop (acc: char list list) = function 00:00:30 v #968 > > | _ when acc.Length = list.Length -> acc 00:00:30 v #969 > > | head :: tail -> 00:00:30 v #970 > > let item = tail @ [[ head ]] 00:00:30 v #971 > > loop (item :: acc) item 00:00:30 v #972 > > | [[]] -> [[]] 00:00:30 v #973 > > loop [[]] list 00:00:30 v #974 > > |> List.rev 00:00:30 v #975 > > |> List.map (List.toArray >> String) 00:00:30 v #976 > > |> SpiralSm.concat " " 00:00:30 v #977 > > 00:00:30 v #978 > > "E", 00:00:30 v #979 > > fun input -> 00:00:30 v #980 > > input 00:00:30 v #981 > > |> Seq.toList 00:00:30 v #982 > > |> fun list -> 00:00:30 v #983 > > let rec loop (last: string) = function 00:00:30 v #984 > > | head :: tail -> 00:00:30 v #985 > > let item = last.[[1 .. input.Length - 1]] + string head 00:00:30 v #986 > > item :: loop item tail 00:00:30 v #987 > > | [[]] -> [[]] 00:00:30 v #988 > > loop input list 00:00:30 v #989 > > |> SpiralSm.concat " " 00:00:30 v #990 > > 00:00:30 v #991 > > "F", 00:00:30 v #992 > > fun input -> 00:00:30 v #993 > > Array.singleton 0 00:00:30 v #994 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:00:30 v #995 > > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:30 v #996 > > |> SpiralSm.concat " " 00:00:30 v #997 > > 00:00:30 v #998 > > "FA", 00:00:30 v #999 > > fun input -> 00:00:30 v #1000 > > List.singleton 0 00:00:30 v #1001 > > |> List.append [[ 1 .. input.Length - 1 ]] 00:00:30 v #1002 > > |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:30 v #1003 > > |> SpiralSm.concat " " 00:00:30 v #1004 > > 00:00:30 v #1005 > > "FB", 00:00:30 v #1006 > > fun input -> 00:00:30 v #1007 > > Seq.singleton 0 00:00:30 v #1008 > > |> Seq.append (seq { 1 .. input.Length - 1 }) 00:00:30 v #1009 > > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:30 v #1010 > > |> SpiralSm.concat " " 00:00:30 v #1011 > > 00:00:30 v #1012 > > "FC", 00:00:30 v #1013 > > fun input -> 00:00:30 v #1014 > > Array.singleton 0 00:00:30 v #1015 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:00:30 v #1016 > > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:30 v #1017 > > |> SpiralSm.concat " " 00:00:30 v #1018 > > ]] 00:00:30 v #1019 > > let testCases = seq { 00:00:30 v #1020 > > "abc", "bca cab abc" 00:00:30 v #1021 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:00:30 v #1022 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef 00:00:30 v #1023 > > hiabcdefg iabcdefgh abcdefghi" 00:00:30 v #1024 > > "abab", "baba abab baba abab" 00:00:30 v #1025 > > "aa", "aa aa" 00:00:30 v #1026 > > "z", "z" 00:00:30 v #1027 > > } 00:00:30 v #1028 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions 00:00:30 v #1029 > > testCases 00:00:30 v #1030 > > rotateStringsTests 00:00:30 v #1031 > > |> sortResultList 00:00:43 v #1032 > > 00:00:43 v #1033 > > ╭─[ 12.51s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:43 v #1034 > > │ │ 00:00:43 v #1035 > > │ │ 00:00:43 v #1036 > > │ Test: rotateStringsTests │ 00:00:43 v #1037 > > │ │ 00:00:43 v #1038 > > │ Solution: abc │ 00:00:43 v #1039 > > │ Test case 1. A. Time: 3L │ 00:00:43 v #1040 > > │ Test case 2. B. Time: 2L │ 00:00:43 v #1041 > > │ Test case 3. C. Time: 1L │ 00:00:43 v #1042 > > │ Test case 4. CA. Time: 3L │ 00:00:43 v #1043 > > │ Test case 5. CB. Time: 2L │ 00:00:43 v #1044 > > │ Test case 6. D. Time: 2L │ 00:00:43 v #1045 > > │ Test case 7. E. Time: 1L │ 00:00:43 v #1046 > > │ Test case 8. F. Time: 1L │ 00:00:43 v #1047 > > │ Test case 9. FA. Time: 2L │ 00:00:43 v #1048 > > │ Test case 10. FB. Time: 7L │ 00:00:43 v #1049 > > │ Test case 11. FC. Time: 10L │ 00:00:43 v #1050 > > │ │ 00:00:43 v #1051 > > │ Solution: abcde │ 00:00:43 v #1052 > > │ Test case 1. A. Time: 3L │ 00:00:43 v #1053 > > │ Test case 2. B. Time: 1L │ 00:00:43 v #1054 > > │ Test case 3. C. Time: 1L │ 00:00:43 v #1055 > > │ Test case 4. CA. Time: 1L │ 00:00:43 v #1056 > > │ Test case 5. CB. Time: 1L │ 00:00:43 v #1057 > > │ Test case 6. D. Time: 3L │ 00:00:43 v #1058 > > │ Test case 7. E. Time: 1L │ 00:00:43 v #1059 > > │ Test case 8. F. Time: 0L │ 00:00:43 v #1060 > > │ Test case 9. FA. Time: 1L │ 00:00:43 v #1061 > > │ Test case 10. FB. Time: 3L │ 00:00:43 v #1062 > > │ Test case 11. FC. Time: 4L │ 00:00:43 v #1063 > > │ │ 00:00:43 v #1064 > > │ Solution: abcdefghi │ 00:00:43 v #1065 > > │ Test case 1. A. Time: 5L │ 00:00:43 v #1066 > > │ Test case 2. B. Time: 1L │ 00:00:43 v #1067 > > │ Test case 3. C. Time: 2L │ 00:00:43 v #1068 > > │ Test case 4. CA. Time: 1L │ 00:00:43 v #1069 > > │ Test case 5. CB. Time: 3L │ 00:00:43 v #1070 > > │ Test case 6. D. Time: 6L │ 00:00:43 v #1071 > > │ Test case 7. E. Time: 2L │ 00:00:43 v #1072 > > │ Test case 8. F. Time: 0L │ 00:00:43 v #1073 > > │ Test case 9. FA. Time: 3L │ 00:00:43 v #1074 > > │ Test case 10. FB. Time: 3L │ 00:00:43 v #1075 > > │ Test case 11. FC. Time: 5L │ 00:00:43 v #1076 > > │ │ 00:00:43 v #1077 > > │ Solution: abab │ 00:00:43 v #1078 > > │ Test case 1. A. Time: 0L │ 00:00:43 v #1079 > > │ Test case 2. B. Time: 0L │ 00:00:43 v #1080 > > │ Test case 3. C. Time: 0L │ 00:00:43 v #1081 > > │ Test case 4. CA. Time: 1L │ 00:00:43 v #1082 > > │ Test case 5. CB. Time: 0L │ 00:00:43 v #1083 > > │ Test case 6. D. Time: 1L │ 00:00:43 v #1084 > > │ Test case 7. E. Time: 0L │ 00:00:43 v #1085 > > │ Test case 8. F. Time: 0L │ 00:00:43 v #1086 > > │ Test case 9. FA. Time: 0L │ 00:00:43 v #1087 > > │ Test case 10. FB. Time: 1L │ 00:00:43 v #1088 > > │ Test case 11. FC. Time: 5L │ 00:00:43 v #1089 > > │ │ 00:00:43 v #1090 > > │ Solution: aa │ 00:00:43 v #1091 > > │ Test case 1. A. Time: 0L │ 00:00:43 v #1092 > > │ Test case 2. B. Time: 0L │ 00:00:43 v #1093 > > │ Test case 3. C. Time: 0L │ 00:00:43 v #1094 > > │ Test case 4. CA. Time: 0L │ 00:00:43 v #1095 > > │ Test case 5. CB. Time: 0L │ 00:00:43 v #1096 > > │ Test case 6. D. Time: 0L │ 00:00:43 v #1097 > > │ Test case 7. E. Time: 0L │ 00:00:43 v #1098 > > │ Test case 8. F. Time: 0L │ 00:00:43 v #1099 > > │ Test case 9. FA. Time: 0L │ 00:00:43 v #1100 > > │ Test case 10. FB. Time: 0L │ 00:00:43 v #1101 > > │ Test case 11. FC. Time: 6L │ 00:00:43 v #1102 > > │ │ 00:00:43 v #1103 > > │ Solution: z │ 00:00:43 v #1104 > > │ Test case 1. A. Time: 0L │ 00:00:43 v #1105 > > │ Test case 2. B. Time: 0L │ 00:00:43 v #1106 > > │ Test case 3. C. Time: 0L │ 00:00:43 v #1107 > > │ Test case 4. CA. Time: 0L │ 00:00:43 v #1108 > > │ Test case 5. CB. Time: 0L │ 00:00:43 v #1109 > > │ Test case 6. D. Time: 0L │ 00:00:43 v #1110 > > │ Test case 7. E. Time: 0L │ 00:00:43 v #1111 > > │ Test case 8. F. Time: 0L │ 00:00:43 v #1112 > > │ Test case 9. FA. Time: 0L │ 00:00:43 v #1113 > > │ Test case 10. FB. Time: 0L │ 00:00:43 v #1114 > > │ Test case 11. FC. Time: 5L │ 00:00:43 v #1115 > > │ │ 00:00:43 v #1116 > > │ Input | Expected │ 00:00:43 v #1117 > > │ │ 00:00:43 v #1118 > > │ | Result │ 00:00:43 v #1119 > > │ │ 00:00:43 v #1120 > > │ | Best │ 00:00:43 v #1121 > > │ --- | --- │ 00:00:43 v #1122 > > │ │ 00:00:43 v #1123 > > │ | --- │ 00:00:43 v #1124 > > │ │ 00:00:43 v #1125 > > │ | --- │ 00:00:43 v #1126 > > │ abc | bca cab abc │ 00:00:43 v #1127 > > │ │ 00:00:43 v #1128 > > │ | bca cab abc │ 00:00:43 v #1129 > > │ │ 00:00:43 v #1130 > > │ | (3, 1) │ 00:00:43 v #1131 > > │ abcde | bcdea cdeab deabc eabcd abcde │ 00:00:43 v #1132 > > │ | bcdea cdeab deabc eabcd abcde │ 00:00:43 v #1133 > > │ | (8, 0) │ 00:00:43 v #1134 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:00:43 v #1135 > > │ hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd │ 00:00:43 v #1136 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (8, 0) │ 00:00:43 v #1137 > > │ abab | baba abab baba abab │ 00:00:43 v #1138 > > │ | baba abab baba abab │ 00:00:43 v #1139 > > │ | (1, 0) │ 00:00:43 v #1140 > > │ aa | aa aa │ 00:00:43 v #1141 > > │ │ 00:00:43 v #1142 > > │ | aa aa │ 00:00:43 v #1143 > > │ │ 00:00:43 v #1144 > > │ | (1, 0) │ 00:00:43 v #1145 > > │ z | z │ 00:00:43 v #1146 > > │ │ 00:00:43 v #1147 > > │ | z │ 00:00:43 v #1148 > > │ │ 00:00:43 v #1149 > > │ | (1, 0) │ 00:00:43 v #1150 > > │ │ 00:00:43 v #1151 > > │ Average Ranking │ 00:00:43 v #1152 > > │ Test case 2. Average Time: 0L │ 00:00:43 v #1153 > > │ Test case 3. Average Time: 0L │ 00:00:43 v #1154 > > │ Test case 7. Average Time: 0L │ 00:00:43 v #1155 > > │ Test case 8. Average Time: 0L │ 00:00:43 v #1156 > > │ Test case 1. Average Time: 1L │ 00:00:43 v #1157 > > │ Test case 4. Average Time: 1L │ 00:00:43 v #1158 > > │ Test case 5. Average Time: 1L │ 00:00:43 v #1159 > > │ Test case 9. Average Time: 1L │ 00:00:43 v #1160 > > │ Test case 6. Average Time: 2L │ 00:00:43 v #1161 > > │ Test case 10. Average Time: 2L │ 00:00:43 v #1162 > > │ Test case 11. Average Time: 5L │ 00:00:43 v #1163 > > │ │ 00:00:43 v #1164 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #1165 > > 00:00:43 v #1166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:43 v #1167 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:43 v #1168 > > │ ## rotate_strings_tests │ 00:00:43 v #1169 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #1170 > > 00:00:43 v #1171 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:43 v #1172 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:43 v #1173 > > │ ``` │ 00:00:43 v #1174 > > │ 02:21:12 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:00:43 v #1175 > > │ rotate_strings_tests} │ 00:00:43 v #1176 > > │ │ 00:00:43 v #1177 > > │ 02:21:12 verbose #2 benchmark.run / {input_str = "abc"} │ 00:00:43 v #1178 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │ 00:00:43 v #1179 > > │ F; time = 638} │ 00:00:43 v #1180 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │ 00:00:43 v #1181 > > │ FA; time = 779} │ 00:00:43 v #1182 > > │ │ 00:00:43 v #1183 > > │ 02:21:14 verbose #5 benchmark.run / {input_str = "abcde"} │ 00:00:43 v #1184 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i = 1; test_name = │ 00:00:43 v #1185 > > │ F; time = 745} │ 00:00:43 v #1186 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i = 2; test_name = │ 00:00:43 v #1187 > > │ FA; time = 809} │ 00:00:43 v #1188 > > │ │ 00:00:43 v #1189 > > │ 02:21:16 verbose #8 benchmark.run / {input_str = "abcdefghi"} │ 00:00:43 v #1190 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i = 1; test_name = │ 00:00:43 v #1191 > > │ F; time = 1092} │ 00:00:43 v #1192 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map / {i = 2; test_name │ 00:00:43 v #1193 > > │ = FA; time = 1304} │ 00:00:43 v #1194 > > │ │ 00:00:43 v #1195 > > │ 02:21:18 verbose #11 benchmark.run / {input_str = "abab"} │ 00:00:43 v #1196 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map / {i = 1; test_name │ 00:00:43 v #1197 > > │ = F; time = 536} │ 00:00:43 v #1198 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map / {i = 2; test_name │ 00:00:43 v #1199 > > │ = FA; time = 620} │ 00:00:43 v #1200 > > │ │ 00:00:43 v #1201 > > │ 02:21:20 verbose #14 benchmark.run / {input_str = "aa"} │ 00:00:43 v #1202 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map / {i = 1; test_name │ 00:00:43 v #1203 > > │ = F; time = 365} │ 00:00:43 v #1204 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map / {i = 2; test_name │ 00:00:43 v #1205 > > │ = FA; time = 396} │ 00:00:43 v #1206 > > │ │ 00:00:43 v #1207 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"} │ 00:00:43 v #1208 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map / {i = 1; test_name │ 00:00:43 v #1209 > > │ = F; time = 158} │ 00:00:43 v #1210 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map / {i = 2; test_name │ 00:00:43 v #1211 > > │ = FA; time = 143} │ 00:00:43 v #1212 > > │ ``` │ 00:00:43 v #1213 > > │ input | expected │ 00:00:43 v #1214 > > │ │ 00:00:43 v #1215 > > │ | result │ 00:00:43 v #1216 > > │ │ 00:00:43 v #1217 > > │ | best │ 00:00:43 v #1218 > > │ --- | --- │ 00:00:43 v #1219 > > │ │ 00:00:43 v #1220 > > │ | --- │ 00:00:43 v #1221 > > │ │ 00:00:43 v #1222 > > │ | --- │ 00:00:43 v #1223 > > │ "abc" | "bca cab abc" │ 00:00:43 v #1224 > > │ │ 00:00:43 v #1225 > > │ | "bca cab abc" │ 00:00:43 v #1226 > > │ │ 00:00:43 v #1227 > > │ | 1, 638 │ 00:00:43 v #1228 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" │ 00:00:43 v #1229 > > │ | "bcdea cdeab deabc eabcd abcde" │ 00:00:43 v #1230 > > │ | 1, 745 │ 00:00:43 v #1231 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:00:43 v #1232 > > │ hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd │ 00:00:43 v #1233 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1092 │ 00:00:43 v #1234 > > │ "abab" | "baba abab baba abab" │ 00:00:43 v #1235 > > │ | "baba abab baba abab" │ 00:00:43 v #1236 > > │ | 1, 536 │ 00:00:43 v #1237 > > │ "aa" | "aa aa" │ 00:00:43 v #1238 > > │ │ 00:00:43 v #1239 > > │ | "aa aa" │ 00:00:43 v #1240 > > │ │ 00:00:43 v #1241 > > │ | 1, 365 │ 00:00:43 v #1242 > > │ "z" | "z" │ 00:00:43 v #1243 > > │ │ 00:00:43 v #1244 > > │ | "z" │ 00:00:43 v #1245 > > │ │ 00:00:43 v #1246 > > │ | 2, 143 │ 00:00:43 v #1247 > > │ ``` │ 00:00:43 v #1248 > > │ 02:21:22 verbose #20 benchmark.sort_result_list / averages.iter / {avg │ 00:00:43 v #1249 > > │ = 589; i = 1} │ 00:00:43 v #1250 > > │ 02:21:22 verbose #21 benchmark.sort_result_list / averages.iter / {avg │ 00:00:43 v #1251 > > │ = 675; i = 2} │ 00:00:43 v #1252 > > │ ``` │ 00:00:43 v #1253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #1254 > > 00:00:43 v #1255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:43 v #1256 > > //// test 00:00:43 v #1257 > > //// timeout=60000 00:00:43 v #1258 > > 00:00:43 v #1259 > > inl get_solutions () = 00:00:43 v #1260 > > [[ 00:00:43 v #1261 > > // "A", 00:00:43 v #1262 > > // fun (input : string) => 00:00:43 v #1263 > > // let resultList = 00:00:43 v #1264 > > // List.fold (fun acc x => 00:00:43 v #1265 > > // let rotate (text : string) (letter : string) = 00:00:43 v #1266 > > text.Substring (1, input.Length - 1) + letter 00:00:43 v #1267 > > // [[ rotate (if acc.IsEmpty then input else acc.Head) 00:00:43 v #1268 > > (string x) ]] ++ acc 00:00:43 v #1269 > > // ) [[]] (Seq.toList input) 00:00:43 v #1270 > > 00:00:43 v #1271 > > // List.foldBack (fun acc x => x + acc + " ") resultList "" 00:00:43 v #1272 > > // |> fun x => x.TrimEnd () 00:00:43 v #1273 > > 00:00:43 v #1274 > > // "B", 00:00:43 v #1275 > > // fun input => 00:00:43 v #1276 > > // input 00:00:43 v #1277 > > // |> Seq.toList 00:00:43 v #1278 > > // |> List.fold (fun (acc : string list) letter => 00:00:43 v #1279 > > // let last = 00:00:43 v #1280 > > // if acc.IsEmpty 00:00:43 v #1281 > > // then input 00:00:43 v #1282 > > // else acc.Head 00:00:43 v #1283 > > 00:00:43 v #1284 > > // let item = last.[[1 .. input.Length - 1]] + string letter 00:00:43 v #1285 > > 00:00:43 v #1286 > > // item :: acc 00:00:43 v #1287 > > // ) [[]] 00:00:43 v #1288 > > // |> List.rev 00:00:43 v #1289 > > // |> SpiralSm.concat " " 00:00:43 v #1290 > > 00:00:43 v #1291 > > // "C", 00:00:43 v #1292 > > // fun input => 00:00:43 v #1293 > > // input 00:00:43 v #1294 > > // |> Seq.toList 00:00:43 v #1295 > > // |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:00:43 v #1296 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:00:43 v #1297 > > // |> List.rev 00:00:43 v #1298 > > // |> List.skip 1 00:00:43 v #1299 > > // |> SpiralSm.concat " " 00:00:43 v #1300 > > 00:00:43 v #1301 > > // "CA", 00:00:43 v #1302 > > // fun input => 00:00:43 v #1303 > > // input 00:00:43 v #1304 > > // |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:00:43 v #1305 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:00:43 v #1306 > > // |> Seq.rev 00:00:43 v #1307 > > // |> Seq.skip 1 00:00:43 v #1308 > > // |> SpiralSm.concat " " 00:00:43 v #1309 > > 00:00:43 v #1310 > > // "CB", 00:00:43 v #1311 > > // fun input => 00:00:43 v #1312 > > // input 00:00:43 v #1313 > > // |> Seq.toArray 00:00:43 v #1314 > > // |> Array.fold (fun (acc : a _ string) letter => acc |> 00:00:43 v #1315 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]])) 00:00:43 v #1316 > > (a ;[[ input ]]) 00:00:43 v #1317 > > // |> Array.rev 00:00:43 v #1318 > > // |> Array.skip 1 00:00:43 v #1319 > > // |> SpiralSm.concat " " 00:00:43 v #1320 > > 00:00:43 v #1321 > > // "D", 00:00:43 v #1322 > > // fun input => 00:00:43 v #1323 > > // input 00:00:43 v #1324 > > // |> Seq.toList 00:00:43 v #1325 > > // |> fun list => 00:00:43 v #1326 > > // let rec loop (acc : list (list char)) = function 00:00:43 v #1327 > > // | _ when acc.Length = list.Length => acc 00:00:43 v #1328 > > // | head :: tail => 00:00:43 v #1329 > > // let item = tail ++ [[ head ]] 00:00:43 v #1330 > > // loop (item :: acc) item 00:00:43 v #1331 > > // | [[]] => [[]] 00:00:43 v #1332 > > // loop [[]] list 00:00:43 v #1333 > > // |> List.rev 00:00:43 v #1334 > > // |> List.map (List.toArray >> String) 00:00:43 v #1335 > > // |> SpiralSm.concat " " 00:00:43 v #1336 > > 00:00:43 v #1337 > > // "E", 00:00:43 v #1338 > > // fun input => 00:00:43 v #1339 > > // input 00:00:43 v #1340 > > // |> Seq.toList 00:00:43 v #1341 > > // |> fun list => 00:00:43 v #1342 > > // let rec loop (last : string) = function 00:00:43 v #1343 > > // | head :: tail => 00:00:43 v #1344 > > // let item = last.[[1 .. input.Length - 1]] + string 00:00:43 v #1345 > > head 00:00:43 v #1346 > > // item :: loop item tail 00:00:43 v #1347 > > // | [[]] => [[]] 00:00:43 v #1348 > > // loop input list 00:00:43 v #1349 > > // |> SpiralSm.concat " " 00:00:43 v #1350 > > 00:00:43 v #1351 > > "F", 00:00:43 v #1352 > > fun input => 00:00:43 v #1353 > > // Array.singleton 0 00:00:43 v #1354 > > // |> Array.append [[| 1 .. input.Length - 1 |]] 00:00:43 v #1355 > > // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:43 v #1356 > > // |> SpiralSm.concat " " 00:00:43 v #1357 > > inl input_length = input |> sm.length 00:00:43 v #1358 > > am.singleton 0i32 00:00:43 v #1359 > > |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x 00:00:43 v #1360 > > : _ int _) 00:00:43 v #1361 > > |> fun (a x) => x 00:00:43 v #1362 > > |> am'.map_base fun i => 00:00:43 v #1363 > > inl a = input |> sm'.slice i (input_length - 1) 00:00:43 v #1364 > > inl b = input |> sm'.slice 0 (i - 1) 00:00:43 v #1365 > > a +. b 00:00:43 v #1366 > > |> fun x => a x : _ int _ 00:00:43 v #1367 > > |> seq.of_array 00:00:43 v #1368 > > |> sm'.concat " " 00:00:43 v #1369 > > 00:00:43 v #1370 > > "FA", 00:00:43 v #1371 > > fun input => 00:00:43 v #1372 > > // List.singleton 0 00:00:43 v #1373 > > // |> List.append [[ 1 .. input.Length - 1 ]] 00:00:43 v #1374 > > // // |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:43 v #1375 > > // |> SpiralSm.concat " " 00:00:43 v #1376 > > inl input_length = input |> sm.length 00:00:43 v #1377 > > listm.singleton 0i32 00:00:43 v #1378 > > |> listm.append (listm'.init_series 1 (input_length - 1) 1) 00:00:43 v #1379 > > |> listm.map (fun i => 00:00:43 v #1380 > > inl a = input |> sm'.slice i (input_length - 1) 00:00:43 v #1381 > > inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1) 00:00:43 v #1382 > > a +. b 00:00:43 v #1383 > > ) 00:00:43 v #1384 > > |> listm'.box 00:00:43 v #1385 > > |> listm'.to_array' 00:00:43 v #1386 > > |> fun x => a x : _ int _ 00:00:43 v #1387 > > |> seq.of_array 00:00:43 v #1388 > > |> sm'.concat " " 00:00:43 v #1389 > > 00:00:43 v #1390 > > // "FB", 00:00:43 v #1391 > > // fun input => 00:00:43 v #1392 > > // Seq.singleton 0 00:00:43 v #1393 > > // // |> Seq.append (seq { 1 .. input.Length - 1 }) 00:00:43 v #1394 > > // // |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:00:43 v #1395 > > // |> SpiralSm.concat " " 00:00:43 v #1396 > > 00:00:43 v #1397 > > // "FC", 00:00:43 v #1398 > > // fun input => 00:00:43 v #1399 > > // Array.singleton 0 00:00:43 v #1400 > > // |> Array.append (a ;[[ 1 .. input.Length - 1 ]]) 00:00:43 v #1401 > > //// |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i 00:00:43 v #1402 > > - 1 ]]) 00:00:43 v #1403 > > // |> SpiralSm.concat " " 00:00:43 v #1404 > > ]] 00:00:43 v #1405 > > 00:00:43 v #1406 > > inl rec rotate_strings_tests () = 00:00:43 v #1407 > > inl test_cases = [[ 00:00:43 v #1408 > > "abc", "bca cab abc" 00:00:43 v #1409 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:00:43 v #1410 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 00:00:43 v #1411 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi" 00:00:43 v #1412 > > "abab", "baba abab baba abab" 00:00:43 v #1413 > > "aa", "aa aa" 00:00:43 v #1414 > > "z", "z" 00:00:43 v #1415 > > ]] 00:00:43 v #1416 > > 00:00:43 v #1417 > > inl solutions = get_solutions () 00:00:43 v #1418 > > 00:00:43 v #1419 > > // inl is_fast () = true 00:00:43 v #1420 > > 00:00:43 v #1421 > > inl count = 00:00:43 v #1422 > > if is_fast () 00:00:43 v #1423 > > then 1000i32 00:00:43 v #1424 > > else 2000000i32 00:00:43 v #1425 > > 00:00:43 v #1426 > > run_all (reflection.nameof { rotate_strings_tests }) count solutions 00:00:43 v #1427 > > test_cases 00:00:43 v #1428 > > |> sort_result_list 00:00:43 v #1429 > > 00:00:43 v #1430 > > rotate_strings_tests () 00:01:02 v #1431 > > 00:01:02 v #1432 > > ╭─[ 19.24s - stdout ]──────────────────────────────────────────────────────────╮ 00:01:02 v #1433 > > │ │ 00:01:02 v #1434 > > │ ``` │ 00:01:02 v #1435 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = rotate_strings_tests; │ 00:01:02 v #1436 > > │ count = 2000000 } │ 00:01:02 v #1437 > > │ │ 00:01:02 v #1438 > > │ 00:00:00 v #2 benchmark.run / { input_str = "abc" } │ 00:01:02 v #1439 > > │ 00:00:01 v #3 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1440 > > │ time = 847 } │ 00:01:02 v #1441 > > │ 00:00:02 v #4 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1442 > > │ time = 1049 } │ 00:01:02 v #1443 > > │ │ 00:01:02 v #1444 > > │ 00:00:02 v #5 benchmark.run / { input_str = "abcde" } │ 00:01:02 v #1445 > > │ 00:00:03 v #6 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1446 > > │ time = 1102 } │ 00:01:02 v #1447 > > │ 00:00:05 v #7 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1448 > > │ time = 1579 } │ 00:01:02 v #1449 > > │ │ 00:01:02 v #1450 > > │ 00:00:05 v #8 benchmark.run / { input_str = "abcdefghi" } │ 00:01:02 v #1451 > > │ 00:00:08 v #9 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1452 > > │ time = 1912 } │ 00:01:02 v #1453 > > │ 00:00:11 v #10 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1454 > > │ time = 2715 } │ 00:01:02 v #1455 > > │ │ 00:01:02 v #1456 > > │ 00:00:11 v #11 benchmark.run / { input_str = "abab" } │ 00:01:02 v #1457 > > │ 00:00:12 v #12 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1458 > > │ time = 1031 } │ 00:01:02 v #1459 > > │ 00:00:14 v #13 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1460 > > │ time = 1391 } │ 00:01:02 v #1461 > > │ │ 00:01:02 v #1462 > > │ 00:00:14 v #14 benchmark.run / { input_str = "aa" } │ 00:01:02 v #1463 > > │ 00:00:15 v #15 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1464 > > │ time = 727 } │ 00:01:02 v #1465 > > │ 00:00:16 v #16 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1466 > > │ time = 868 } │ 00:01:02 v #1467 > > │ │ 00:01:02 v #1468 > > │ 00:00:16 v #17 benchmark.run / { input_str = "z" } │ 00:01:02 v #1469 > > │ 00:00:17 v #18 benchmark.run / solutions.map / { i = 1; test_name = F; │ 00:01:02 v #1470 > > │ time = 222 } │ 00:01:02 v #1471 > > │ 00:00:17 v #19 benchmark.run / solutions.map / { i = 2; test_name = FA; │ 00:01:02 v #1472 > > │ time = 267 } │ 00:01:02 v #1473 > > │ ``` │ 00:01:02 v #1474 > > │ input | expected │ 00:01:02 v #1475 > > │ │ 00:01:02 v #1476 > > │ | result │ 00:01:02 v #1477 > > │ │ 00:01:02 v #1478 > > │ | best │ 00:01:02 v #1479 > > │ --- | --- │ 00:01:02 v #1480 > > │ │ 00:01:02 v #1481 > > │ | --- │ 00:01:02 v #1482 > > │ │ 00:01:02 v #1483 > > │ | --- │ 00:01:02 v #1484 > > │ "abc" | "bca cab abc" │ 00:01:02 v #1485 > > │ │ 00:01:02 v #1486 > > │ | "bca cab abc" │ 00:01:02 v #1487 > > │ │ 00:01:02 v #1488 > > │ | 1, 847 │ 00:01:02 v #1489 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" │ 00:01:02 v #1490 > > │ | "bcdea cdeab deabc eabcd abcde" │ 00:01:02 v #1491 > > │ | 1, 1102 │ 00:01:02 v #1492 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:01:02 v #1493 > > │ hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd │ 00:01:02 v #1494 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1912 │ 00:01:02 v #1495 > > │ "abab" | "baba abab baba abab" │ 00:01:02 v #1496 > > │ | "baba abab baba abab" │ 00:01:02 v #1497 > > │ | 1, 1031 │ 00:01:02 v #1498 > > │ "aa" | "aa aa" │ 00:01:02 v #1499 > > │ │ 00:01:02 v #1500 > > │ | "aa aa" │ 00:01:02 v #1501 > > │ │ 00:01:02 v #1502 > > │ | 1, 727 │ 00:01:02 v #1503 > > │ "z" | "z" │ 00:01:02 v #1504 > > │ │ 00:01:02 v #1505 > > │ | "z" │ 00:01:02 v #1506 > > │ │ 00:01:02 v #1507 > > │ | 1, 222 │ 00:01:02 v #1508 > > │ ``` │ 00:01:02 v #1509 > > │ 00:00:17 v #20 benchmark.sort_result_list / averages.iter / { i = 1; │ 00:01:02 v #1510 > > │ avg = 973 } │ 00:01:02 v #1511 > > │ 00:00:17 v #21 benchmark.sort_result_list / averages.iter / { i = 2; │ 00:01:02 v #1512 > > │ avg = 1311 } │ 00:01:02 v #1513 > > │ ``` │ 00:01:02 v #1514 > > │ │ 00:01:02 v #1515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1516 > > 00:01:02 v #1517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1518 > > //// test 00:01:02 v #1519 > > 00:01:02 v #1520 > > // rotate_strings_tests () 00:01:02 v #1521 > > () 00:01:02 v #1522 > > 00:01:02 v #1523 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1524 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1525 > > │ ## binary_search_tests │ 00:01:02 v #1526 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1527 > > 00:01:02 v #1528 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1529 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 v #1530 > > │ ``` │ 00:01:02 v #1531 > > │ 02:19:29 verbose #1 benchmark.run_all / {count = 10000000; test_name = │ 00:01:02 v #1532 > > │ binary_search_tests} │ 00:01:02 v #1533 > > │ │ 00:01:02 v #1534 > > │ 02:19:29 verbose #2 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1535 > > │ 8; 9; 11|], 6, 7)} │ 00:01:02 v #1536 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │ 00:01:02 v #1537 > > │ semi_open_1; time = 662} │ 00:01:02 v #1538 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │ 00:01:02 v #1539 > > │ closed_1; time = 619} │ 00:01:02 v #1540 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i = 3; test_name = │ 00:01:02 v #1541 > > │ semi_open_2; time = 644} │ 00:01:02 v #1542 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i = 4; test_name = │ 00:01:02 v #1543 > > │ closed_2; time = 610} │ 00:01:02 v #1544 > > │ │ 00:01:02 v #1545 > > │ 02:19:32 verbose #7 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1546 > > │ 8; 9; 11|], 1, 7)} │ 00:01:02 v #1547 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i = 1; test_name = │ 00:01:02 v #1548 > > │ semi_open_1; time = 607} │ 00:01:02 v #1549 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i = 2; test_name = │ 00:01:02 v #1550 > > │ closed_1; time = 559} │ 00:01:02 v #1551 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1552 > > │ = semi_open_2; time = 612} │ 00:01:02 v #1553 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1554 > > │ = closed_2; time = 577} │ 00:01:02 v #1555 > > │ │ 00:01:02 v #1556 > > │ 02:19:35 verbose #12 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1557 > > │ 8; 9; 11|], 11, 7)} │ 00:01:02 v #1558 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1559 > > │ = semi_open_1; time = 550} │ 00:01:02 v #1560 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1561 > > │ = closed_1; time = 580} │ 00:01:02 v #1562 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1563 > > │ = semi_open_2; time = 624} │ 00:01:02 v #1564 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1565 > > │ = closed_2; time = 590} │ 00:01:02 v #1566 > > │ │ 00:01:02 v #1567 > > │ 02:19:37 verbose #17 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1568 > > │ 8; 9; 11|], 12, 7)} │ 00:01:02 v #1569 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1570 > > │ = semi_open_1; time = 574} │ 00:01:02 v #1571 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1572 > > │ = closed_1; time = 577} │ 00:01:02 v #1573 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1574 > > │ = semi_open_2; time = 582} │ 00:01:02 v #1575 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1576 > > │ = closed_2; time = 585} │ 00:01:02 v #1577 > > │ │ 00:01:02 v #1578 > > │ 02:19:40 verbose #22 benchmark.run / {input_str = struct ([|1; 2; 3; │ 00:01:02 v #1579 > > │ 4...00; ...|], 60, 1000)} │ 00:01:02 v #1580 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1581 > > │ = semi_open_1; time = 610} │ 00:01:02 v #1582 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1583 > > │ = closed_1; time = 672} │ 00:01:02 v #1584 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1585 > > │ = semi_open_2; time = 636} │ 00:01:02 v #1586 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1587 > > │ = closed_2; time = 629} │ 00:01:02 v #1588 > > │ │ 00:01:02 v #1589 > > │ 02:19:43 verbose #27 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1590 > > │ 8; 9; 11|], 6, 7)} │ 00:01:02 v #1591 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1592 > > │ = semi_open_1; time = 599} │ 00:01:02 v #1593 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1594 > > │ = closed_1; time = 561} │ 00:01:02 v #1595 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1596 > > │ = semi_open_2; time = 604} │ 00:01:02 v #1597 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1598 > > │ = closed_2; time = 573} │ 00:01:02 v #1599 > > │ │ 00:01:02 v #1600 > > │ 02:19:46 verbose #32 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1601 > > │ 8; 9; 11|], 1, 7)} │ 00:01:02 v #1602 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1603 > > │ = semi_open_1; time = 635} │ 00:01:02 v #1604 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1605 > > │ = closed_1; time = 603} │ 00:01:02 v #1606 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1607 > > │ = semi_open_2; time = 644} │ 00:01:02 v #1608 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1609 > > │ = closed_2; time = 628} │ 00:01:02 v #1610 > > │ │ 00:01:02 v #1611 > > │ 02:19:49 verbose #37 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1612 > > │ 8; 9; 11|], 11, 7)} │ 00:01:02 v #1613 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1614 > > │ = semi_open_1; time = 643} │ 00:01:02 v #1615 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1616 > > │ = closed_1; time = 606} │ 00:01:02 v #1617 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1618 > > │ = semi_open_2; time = 636} │ 00:01:02 v #1619 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1620 > > │ = closed_2; time = 624} │ 00:01:02 v #1621 > > │ │ 00:01:02 v #1622 > > │ 02:19:52 verbose #42 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:01:02 v #1623 > > │ 8; 9; 11|], 12, 7)} │ 00:01:02 v #1624 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1625 > > │ = semi_open_1; time = 689} │ 00:01:02 v #1626 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1627 > > │ = closed_1; time = 613} │ 00:01:02 v #1628 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1629 > > │ = semi_open_2; time = 623} │ 00:01:02 v #1630 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1631 > > │ = closed_2; time = 613} │ 00:01:02 v #1632 > > │ │ 00:01:02 v #1633 > > │ 02:19:55 verbose #47 benchmark.run / {input_str = struct ([|1; 2; 3; │ 00:01:02 v #1634 > > │ 4...100; ...|], 60, 100)} │ 00:01:02 v #1635 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map / {i = 1; test_name │ 00:01:02 v #1636 > > │ = semi_open_1; time = 630} │ 00:01:02 v #1637 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map / {i = 2; test_name │ 00:01:02 v #1638 > > │ = closed_1; time = 633} │ 00:01:02 v #1639 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map / {i = 3; test_name │ 00:01:02 v #1640 > > │ = semi_open_2; time = 653} │ 00:01:02 v #1641 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map / {i = 4; test_name │ 00:01:02 v #1642 > > │ = closed_2; time = 646} │ 00:01:02 v #1643 > > │ ``` │ 00:01:02 v #1644 > > │ input | expected | result | best │ 00:01:02 v #1645 > > │ --- | --- | --- | --- │ 00:01:02 v #1646 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 4, 610 │ 00:01:02 v #1647 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 2, 559 │ 00:01:02 v #1648 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 1, 550 │ 00:01:02 v #1649 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 1, 574 │ 00:01:02 v #1650 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US4_0 59 | US4_0 59 | 1, 610 │ 00:01:02 v #1651 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 2, 561 │ 00:01:02 v #1652 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 2, 603 │ 00:01:02 v #1653 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 2, 606 │ 00:01:02 v #1654 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 2, 613 │ 00:01:02 v #1655 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US4_0 59 | US4_0 59 | 1, 630 │ 00:01:02 v #1656 > > │ ``` │ 00:01:02 v #1657 > > │ 02:19:58 verbose #52 benchmark.sort_result_list / averages.iter / {avg │ 00:01:02 v #1658 > > │ = 602; i = 2} │ 00:01:02 v #1659 > > │ 02:19:58 verbose #53 benchmark.sort_result_list / averages.iter / {avg │ 00:01:02 v #1660 > > │ = 607; i = 4} │ 00:01:02 v #1661 > > │ 02:19:58 verbose #54 benchmark.sort_result_list / averages.iter / {avg │ 00:01:02 v #1662 > > │ = 619; i = 1} │ 00:01:02 v #1663 > > │ 02:19:58 verbose #55 benchmark.sort_result_list / averages.iter / {avg │ 00:01:02 v #1664 > > │ = 625; i = 3} │ 00:01:02 v #1665 > > │ ``` │ 00:01:02 v #1666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 v #1667 > > 00:01:02 v #1668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1669 > > //// test 00:01:02 v #1670 > > //// timeout=90000 00:01:02 v #1671 > > 00:01:02 v #1672 > > inl binary_search_semi_open_1 arr target left right = 00:01:02 v #1673 > > inl rec body left right = 00:01:02 v #1674 > > if left >= right 00:01:02 v #1675 > > then None 00:01:02 v #1676 > > else 00:01:02 v #1677 > > inl mid = (left + right) / 2 00:01:02 v #1678 > > inl item = index arr mid 00:01:02 v #1679 > > if item = target 00:01:02 v #1680 > > then Some mid 00:01:02 v #1681 > > elif item < target 00:01:02 v #1682 > > then loop (mid + 1) right 00:01:02 v #1683 > > else loop left mid 00:01:02 v #1684 > > and inl loop left right = 00:01:02 v #1685 > > if var_is right |> not 00:01:02 v #1686 > > then body left right 00:01:02 v #1687 > > else 00:01:02 v #1688 > > inl left = dyn left 00:01:02 v #1689 > > join body left right 00:01:02 v #1690 > > loop left right 00:01:02 v #1691 > > 00:01:02 v #1692 > > inl binary_search_closed_1 arr target left right = 00:01:02 v #1693 > > inl rec body left right = 00:01:02 v #1694 > > if left > right 00:01:02 v #1695 > > then None 00:01:02 v #1696 > > else 00:01:02 v #1697 > > inl mid = (left + right) / 2 00:01:02 v #1698 > > inl item = index arr mid 00:01:02 v #1699 > > if item = target 00:01:02 v #1700 > > then Some mid 00:01:02 v #1701 > > elif item < target 00:01:02 v #1702 > > then loop (mid + 1) right 00:01:02 v #1703 > > else loop left (mid - 1) 00:01:02 v #1704 > > and inl loop left right = 00:01:02 v #1705 > > if var_is right |> not 00:01:02 v #1706 > > then body left right 00:01:02 v #1707 > > else 00:01:02 v #1708 > > inl left = dyn left 00:01:02 v #1709 > > join body left right 00:01:02 v #1710 > > loop left right 00:01:02 v #1711 > > 00:01:02 v #1712 > > inl binary_search_semi_open_2 arr target left right = 00:01:02 v #1713 > > let rec body left right = 00:01:02 v #1714 > > if left >= right 00:01:02 v #1715 > > then None 00:01:02 v #1716 > > else 00:01:02 v #1717 > > inl mid = (left + right) / 2 00:01:02 v #1718 > > inl item = index arr mid 00:01:02 v #1719 > > if item = target 00:01:02 v #1720 > > then Some mid 00:01:02 v #1721 > > elif item < target 00:01:02 v #1722 > > then loop (mid + 1) right 00:01:02 v #1723 > > else loop left mid 00:01:02 v #1724 > > and inl loop left right = body left right 00:01:02 v #1725 > > loop left right 00:01:02 v #1726 > > 00:01:02 v #1727 > > inl binary_search_closed_2 arr target left right = 00:01:02 v #1728 > > let rec body left right = 00:01:02 v #1729 > > if left > right 00:01:02 v #1730 > > then None 00:01:02 v #1731 > > else 00:01:02 v #1732 > > inl mid = (left + right) / 2 00:01:02 v #1733 > > inl item = index arr mid 00:01:02 v #1734 > > if item = target 00:01:02 v #1735 > > then Some mid 00:01:02 v #1736 > > elif item < target 00:01:02 v #1737 > > then loop (mid + 1) right 00:01:02 v #1738 > > else loop left (mid - 1) 00:01:02 v #1739 > > and inl loop left right = body left right 00:01:02 v #1740 > > loop left right 00:01:02 v #1741 > > 00:01:02 v #1742 > > inl get_solutions () = 00:01:02 v #1743 > > [[ 00:01:02 v #1744 > > "semi_open_1", 00:01:02 v #1745 > > fun (arr, (target, len)) => 00:01:02 v #1746 > > binary_search_semi_open_1 arr target 0 len 00:01:02 v #1747 > > 00:01:02 v #1748 > > "closed_1", 00:01:02 v #1749 > > fun (arr, (target, len)) => 00:01:02 v #1750 > > binary_search_closed_1 arr target 0 (len - 1) 00:01:02 v #1751 > > 00:01:02 v #1752 > > "semi_open_2", 00:01:02 v #1753 > > fun (arr, (target, len)) => 00:01:02 v #1754 > > binary_search_semi_open_2 arr target 0 len 00:01:02 v #1755 > > 00:01:02 v #1756 > > "closed_2", 00:01:02 v #1757 > > fun (arr, (target, len)) => 00:01:02 v #1758 > > binary_search_closed_2 arr target 0 (len - 1) 00:01:02 v #1759 > > ]] 00:01:02 v #1760 > > 00:01:02 v #1761 > > inl rec binary_search_tests () = 00:01:02 v #1762 > > inl arr_with_len target len arr = 00:01:02 v #1763 > > arr, (target, (len |> optionm'.default_with fun () => length arr)) 00:01:02 v #1764 > > 00:01:02 v #1765 > > inl test_cases = [[ 00:01:02 v #1766 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32) 00:01:02 v #1767 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32) 00:01:02 v #1768 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32) 00:01:02 v #1769 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None 00:01:02 v #1770 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:01:02 v #1771 > > 60 None), (Some 59) 00:01:02 v #1772 > > 00:01:02 v #1773 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some 00:01:02 v #1774 > > 3i32) 00:01:02 v #1775 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some 00:01:02 v #1776 > > 0i32) 00:01:02 v #1777 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some 00:01:02 v #1778 > > 6i32) 00:01:02 v #1779 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None 00:01:02 v #1780 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:01:02 v #1781 > > 60 (Some 100)), (Some 59) 00:01:02 v #1782 > > ]] 00:01:02 v #1783 > > 00:01:02 v #1784 > > inl solutions = get_solutions () 00:01:02 v #1785 > > 00:01:02 v #1786 > > // inl is_fast () = true 00:01:02 v #1787 > > 00:01:02 v #1788 > > inl count = 00:01:02 v #1789 > > if is_fast () 00:01:02 v #1790 > > then 1000i32 00:01:02 v #1791 > > else 10000000i32 00:01:02 v #1792 > > 00:01:02 v #1793 > > run_all (reflection.nameof { binary_search_tests }) count solutions 00:01:02 v #1794 > > test_cases 00:01:02 v #1795 > > |> sort_result_list 00:01:02 v #1796 > > 00:01:02 v #1797 > > 00:01:02 v #1798 > > let main () = 00:01:02 v #1799 > > binary_search_tests () 00:01:34 v #1800 > > 00:01:34 v #1801 > > ╭─[ 31.76s - stdout ]──────────────────────────────────────────────────────────╮ 00:01:34 v #1802 > > │ │ 00:01:34 v #1803 > > │ ``` │ 00:01:34 v #1804 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = binary_search_tests; │ 00:01:34 v #1805 > > │ count = 10000000 } │ 00:01:34 v #1806 > > │ │ 00:01:34 v #1807 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; 9; │ 00:01:34 v #1808 > > │ 11|], 6, 7) } │ 00:01:34 v #1809 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1810 > > │ semi_open_1; time = 670 } │ 00:01:34 v #1811 > > │ 00:00:01 v #4 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1812 > > │ closed_1; time = 613 } │ 00:01:34 v #1813 > > │ 00:00:02 v #5 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1814 > > │ semi_open_2; time = 566 } │ 00:01:34 v #1815 > > │ 00:00:03 v #6 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1816 > > │ closed_2; time = 576 } │ 00:01:34 v #1817 > > │ │ 00:01:34 v #1818 > > │ 00:00:03 v #7 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; 9; │ 00:01:34 v #1819 > > │ 11|], 1, 7) } │ 00:01:34 v #1820 > > │ 00:00:04 v #8 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1821 > > │ semi_open_1; time = 634 } │ 00:01:34 v #1822 > > │ 00:00:05 v #9 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1823 > > │ closed_1; time = 656 } │ 00:01:34 v #1824 > > │ 00:00:05 v #10 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1825 > > │ semi_open_2; time = 631 } │ 00:01:34 v #1826 > > │ 00:00:06 v #11 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1827 > > │ closed_2; time = 641 } │ 00:01:34 v #1828 > > │ │ 00:01:34 v #1829 > > │ 00:00:06 v #12 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1830 > > │ 9; 11|], 11, 7) } │ 00:01:34 v #1831 > > │ 00:00:07 v #13 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1832 > > │ semi_open_1; time = 681 } │ 00:01:34 v #1833 > > │ 00:00:08 v #14 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1834 > > │ closed_1; time = 609 } │ 00:01:34 v #1835 > > │ 00:00:09 v #15 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1836 > > │ semi_open_2; time = 667 } │ 00:01:34 v #1837 > > │ 00:00:10 v #16 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1838 > > │ closed_2; time = 684 } │ 00:01:34 v #1839 > > │ │ 00:01:34 v #1840 > > │ 00:00:10 v #17 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1841 > > │ 9; 11|], 12, 7) } │ 00:01:34 v #1842 > > │ 00:00:11 v #18 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1843 > > │ semi_open_1; time = 574 } │ 00:01:34 v #1844 > > │ 00:00:11 v #19 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1845 > > │ closed_1; time = 495 } │ 00:01:34 v #1846 > > │ 00:00:12 v #20 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1847 > > │ semi_open_2; time = 488 } │ 00:01:34 v #1848 > > │ 00:00:13 v #21 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1849 > > │ closed_2; time = 488 } │ 00:01:34 v #1850 > > │ │ 00:01:34 v #1851 > > │ 00:00:13 v #22 benchmark.run / { input_str = struct ([|1; 2; 3; 4...00; │ 00:01:34 v #1852 > > │ ...|], 60, 1000) } │ 00:01:34 v #1853 > > │ 00:00:13 v #23 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1854 > > │ semi_open_1; time = 542 } │ 00:01:34 v #1855 > > │ 00:00:14 v #24 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1856 > > │ closed_1; time = 544 } │ 00:01:34 v #1857 > > │ 00:00:15 v #25 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1858 > > │ semi_open_2; time = 517 } │ 00:01:34 v #1859 > > │ 00:00:16 v #26 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1860 > > │ closed_2; time = 528 } │ 00:01:34 v #1861 > > │ │ 00:01:34 v #1862 > > │ 00:00:16 v #27 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1863 > > │ 9; 11|], 6, 7) } │ 00:01:34 v #1864 > > │ 00:00:16 v #28 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1865 > > │ semi_open_1; time = 474 } │ 00:01:34 v #1866 > > │ 00:00:17 v #29 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1867 > > │ closed_1; time = 473 } │ 00:01:34 v #1868 > > │ 00:00:18 v #30 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1869 > > │ semi_open_2; time = 471 } │ 00:01:34 v #1870 > > │ 00:00:18 v #31 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1871 > > │ closed_2; time = 476 } │ 00:01:34 v #1872 > > │ │ 00:01:34 v #1873 > > │ 00:00:18 v #32 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1874 > > │ 9; 11|], 1, 7) } │ 00:01:34 v #1875 > > │ 00:00:19 v #33 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1876 > > │ semi_open_1; time = 564 } │ 00:01:34 v #1877 > > │ 00:00:20 v #34 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1878 > > │ closed_1; time = 556 } │ 00:01:34 v #1879 > > │ 00:00:21 v #35 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1880 > > │ semi_open_2; time = 464 } │ 00:01:34 v #1881 > > │ 00:00:21 v #36 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1882 > > │ closed_2; time = 469 } │ 00:01:34 v #1883 > > │ │ 00:01:34 v #1884 > > │ 00:00:21 v #37 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1885 > > │ 9; 11|], 11, 7) } │ 00:01:34 v #1886 > > │ 00:00:22 v #38 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1887 > > │ semi_open_1; time = 478 } │ 00:01:34 v #1888 > > │ 00:00:23 v #39 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1889 > > │ closed_1; time = 483 } │ 00:01:34 v #1890 > > │ 00:00:23 v #40 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1891 > > │ semi_open_2; time = 481 } │ 00:01:34 v #1892 > > │ 00:00:24 v #41 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1893 > > │ closed_2; time = 479 } │ 00:01:34 v #1894 > > │ │ 00:01:34 v #1895 > > │ 00:00:24 v #42 benchmark.run / { input_str = struct ([|1; 3; 4; 6; 8; │ 00:01:34 v #1896 > > │ 9; 11|], 12, 7) } │ 00:01:34 v #1897 > > │ 00:00:25 v #43 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1898 > > │ semi_open_1; time = 477 } │ 00:01:34 v #1899 > > │ 00:00:26 v #44 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1900 > > │ closed_1; time = 492 } │ 00:01:34 v #1901 > > │ 00:00:26 v #45 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1902 > > │ semi_open_2; time = 490 } │ 00:01:34 v #1903 > > │ 00:00:27 v #46 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1904 > > │ closed_2; time = 483 } │ 00:01:34 v #1905 > > │ │ 00:01:34 v #1906 > > │ 00:00:27 v #47 benchmark.run / { input_str = struct ([|1; 2; 3; │ 00:01:34 v #1907 > > │ 4...100; ...|], 60, 100) } │ 00:01:34 v #1908 > > │ 00:00:28 v #48 benchmark.run / solutions.map / { i = 1; test_name = │ 00:01:34 v #1909 > > │ semi_open_1; time = 507 } │ 00:01:34 v #1910 > > │ 00:00:28 v #49 benchmark.run / solutions.map / { i = 2; test_name = │ 00:01:34 v #1911 > > │ closed_1; time = 501 } │ 00:01:34 v #1912 > > │ 00:00:29 v #50 benchmark.run / solutions.map / { i = 3; test_name = │ 00:01:34 v #1913 > > │ semi_open_2; time = 483 } │ 00:01:34 v #1914 > > │ 00:00:30 v #51 benchmark.run / solutions.map / { i = 4; test_name = │ 00:01:34 v #1915 > > │ closed_2; time = 479 } │ 00:01:34 v #1916 > > │ ``` │ 00:01:34 v #1917 > > │ input | expected | result | best │ 00:01:34 v #1918 > > │ --- | --- | --- | --- │ 00:01:34 v #1919 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US6_0 3 | US6_0 3 | 3, 566 │ 00:01:34 v #1920 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US6_0 0 | US6_0 0 | 3, 631 │ 00:01:34 v #1921 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US6_0 6 | US6_0 6 | 2, 609 │ 00:01:34 v #1922 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US6_1 | US6_1 | 3, 488 │ 00:01:34 v #1923 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US6_0 59 | US6_0 59 | 3, 517 │ 00:01:34 v #1924 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US6_0 3 | US6_0 3 | 3, 471 │ 00:01:34 v #1925 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US6_0 0 | US6_0 0 | 3, 464 │ 00:01:34 v #1926 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US6_0 6 | US6_0 6 | 1, 478 │ 00:01:34 v #1927 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US6_1 | US6_1 | 1, 477 │ 00:01:34 v #1928 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US6_0 59 | US6_0 59 | 4, 479 │ 00:01:34 v #1929 > > │ ``` │ 00:01:34 v #1930 > > │ 00:00:30 v #52 benchmark.sort_result_list / averages.iter / { i = 3; │ 00:01:34 v #1931 > > │ avg = 525 } │ 00:01:34 v #1932 > > │ 00:00:30 v #53 benchmark.sort_result_list / averages.iter / { i = 4; │ 00:01:34 v #1933 > > │ avg = 530 } │ 00:01:34 v #1934 > > │ 00:00:30 v #54 benchmark.sort_result_list / averages.iter / { i = 2; │ 00:01:34 v #1935 > > │ avg = 542 } │ 00:01:34 v #1936 > > │ 00:00:30 v #55 benchmark.sort_result_list / averages.iter / { i = 1; │ 00:01:34 v #1937 > > │ avg = 560 } │ 00:01:34 v #1938 > > │ ``` │ 00:01:34 v #1939 > > │ │ 00:01:34 v #1940 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:34 v #1941 > > 00:01:34 v #1942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:34 v #1943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:34 v #1944 > > │ ## returnLettersWithOddCountTests │ 00:01:34 v #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:34 v #1946 > > 00:01:34 v #1947 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:34 v #1948 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:34 v #1949 > > │ Test: ReturnLettersWithOddCount │ 00:01:34 v #1950 > > │ │ 00:01:34 v #1951 > > │ Solution: 1 │ 00:01:34 v #1952 > > │ Test case 1. A. Time: 645L │ 00:01:34 v #1953 > > │ │ 00:01:34 v #1954 > > │ Solution: 2 │ 00:01:34 v #1955 > > │ Test case 1. A. Time: 663L │ 00:01:34 v #1956 > > │ │ 00:01:34 v #1957 > > │ Solution: 3 │ 00:01:34 v #1958 > > │ Test case 1. A. Time: 680L │ 00:01:34 v #1959 > > │ │ 00:01:34 v #1960 > > │ Solution: 9 │ 00:01:34 v #1961 > > │ Test case 1. A. Time: 730L │ 00:01:34 v #1962 > > │ │ 00:01:34 v #1963 > > │ Solution: 10 │ 00:01:34 v #1964 > > │ Test case 1. A. Time: 815L │ 00:01:34 v #1965 > > │ │ 00:01:34 v #1966 > > │ Input | Expected | Result | Best │ 00:01:34 v #1967 > > │ --- | --- | --- | --- │ 00:01:34 v #1968 > > │ 1 | a | a | (1, 645) │ 00:01:34 v #1969 > > │ 2 | ba | ba | (1, 663) │ 00:01:34 v #1970 > > │ 3 | aaa | aaa | (1, 680) │ 00:01:34 v #1971 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 730) │ 00:01:34 v #1972 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 815) │ 00:01:34 v #1973 > > │ │ 00:01:34 v #1974 > > │ Averages │ 00:01:34 v #1975 > > │ Test case 1. Average Time: 706L │ 00:01:34 v #1976 > > │ │ 00:01:34 v #1977 > > │ Ranking │ 00:01:34 v #1978 > > │ Test case 1. Average Time: 706L │ 00:01:34 v #1979 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:34 v #1980 > > 00:01:34 v #1981 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:34 v #1982 > > //// test 00:01:34 v #1983 > > 00:01:34 v #1984 > > let solutions = [[ 00:01:34 v #1985 > > "A", 00:01:34 v #1986 > > fun n -> 00:01:34 v #1987 > > let mutable _builder = StringBuilder (new string('a', n)) 00:01:34 v #1988 > > if n % 2 = 0 then 00:01:34 v #1989 > > _builder.[[0]] <- 'b' 00:01:34 v #1990 > > 00:01:34 v #1991 > > _builder.ToString () 00:01:34 v #1992 > > ]] 00:01:34 v #1993 > > let testCases = seq { 00:01:34 v #1994 > > 1, "a" 00:01:34 v #1995 > > 2, "ba" 00:01:34 v #1996 > > 3, "aaa" 00:01:34 v #1997 > > 9, "aaaaaaaaa" 00:01:34 v #1998 > > 10, "baaaaaaaaa" 00:01:34 v #1999 > > } 00:01:34 v #2000 > > let rec returnLettersWithOddCountTests = 00:01:34 v #2001 > > runAll (nameof returnLettersWithOddCountTests) _count solutions testCases 00:01:34 v #2002 > > returnLettersWithOddCountTests 00:01:34 v #2003 > > |> sortResultList 00:01:35 v #2004 > > 00:01:35 v #2005 > > ╭─[ 1.00s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:35 v #2006 > > │ │ 00:01:35 v #2007 > > │ │ 00:01:35 v #2008 > > │ Test: returnLettersWithOddCountTests │ 00:01:35 v #2009 > > │ │ 00:01:35 v #2010 > > │ Solution: 1 │ 00:01:35 v #2011 > > │ Test case 1. A. Time: 0L │ 00:01:35 v #2012 > > │ │ 00:01:35 v #2013 > > │ Solution: 2 │ 00:01:35 v #2014 > > │ Test case 1. A. Time: 0L │ 00:01:35 v #2015 > > │ │ 00:01:35 v #2016 > > │ Solution: 3 │ 00:01:35 v #2017 > > │ Test case 1. A. Time: 0L │ 00:01:35 v #2018 > > │ │ 00:01:35 v #2019 > > │ Solution: 9 │ 00:01:35 v #2020 > > │ Test case 1. A. Time: 0L │ 00:01:35 v #2021 > > │ │ 00:01:35 v #2022 > > │ Solution: 10 │ 00:01:35 v #2023 > > │ Test case 1. A. Time: 1L │ 00:01:35 v #2024 > > │ │ 00:01:35 v #2025 > > │ Input | Expected | Result | Best │ 00:01:35 v #2026 > > │ --- | --- | --- | --- │ 00:01:35 v #2027 > > │ 1 | a | a | (1, 0) │ 00:01:35 v #2028 > > │ 2 | ba | ba | (1, 0) │ 00:01:35 v #2029 > > │ 3 | aaa | aaa | (1, 0) │ 00:01:35 v #2030 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 0) │ 00:01:35 v #2031 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 1) │ 00:01:35 v #2032 > > │ │ 00:01:35 v #2033 > > │ Average Ranking │ 00:01:35 v #2034 > > │ Test case 1. Average Time: 0L │ 00:01:35 v #2035 > > │ │ 00:01:35 v #2036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2037 > > 00:01:35 v #2038 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #2039 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 v #2040 > > │ ## hasAnyPairCloseToEachotherTests │ 00:01:35 v #2041 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2042 > > 00:01:35 v #2043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #2044 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 v #2045 > > │ Test: HasAnyPairCloseToEachother │ 00:01:35 v #2046 > > │ │ 00:01:35 v #2047 > > │ Solution: 0 │ 00:01:35 v #2048 > > │ Test case 1. A. Time: 137L │ 00:01:35 v #2049 > > │ │ 00:01:35 v #2050 > > │ Solution: 1,2 │ 00:01:35 v #2051 > > │ Test case 1. A. Time: 186L │ 00:01:35 v #2052 > > │ │ 00:01:35 v #2053 > > │ Solution: 3,5 │ 00:01:35 v #2054 > > │ Test case 1. A. Time: 206L │ 00:01:35 v #2055 > > │ │ 00:01:35 v #2056 > > │ Solution: 3,4,6 │ 00:01:35 v #2057 > > │ Test case 1. A. Time: 149L │ 00:01:35 v #2058 > > │ │ 00:01:35 v #2059 > > │ Solution: 2,4,6 │ 00:01:35 v #2060 > > │ Test case 1. A. Time: 150L │ 00:01:35 v #2061 > > │ │ 00:01:35 v #2062 > > │ Input | Expected | Result | Best │ 00:01:35 v #2063 > > │ --- | --- | --- | --- │ 00:01:35 v #2064 > > │ 0 | False | False | (1, 137) │ 00:01:35 v #2065 > > │ 1,2 | True | True | (1, 186) │ 00:01:35 v #2066 > > │ 3,5 | False | False | (1, 206) │ 00:01:35 v #2067 > > │ 3,4,6 | True | True | (1, 149) │ 00:01:35 v #2068 > > │ 2,4,6 | False | False | (1, 150) │ 00:01:35 v #2069 > > │ │ 00:01:35 v #2070 > > │ Averages │ 00:01:35 v #2071 > > │ Test case 1. Average Time: 165L │ 00:01:35 v #2072 > > │ │ 00:01:35 v #2073 > > │ Ranking │ 00:01:35 v #2074 > > │ Test case 1. Average Time: 165L │ 00:01:35 v #2075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2076 > > 00:01:35 v #2077 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:35 v #2078 > > //// test 00:01:35 v #2079 > > 00:01:35 v #2080 > > let solutions = [[ 00:01:35 v #2081 > > "A", 00:01:35 v #2082 > > fun (a: int[[]]) -> 00:01:35 v #2083 > > let indices = System.Linq.Enumerable.Range(0, a.Length) |> 00:01:35 v #2084 > > System.Linq.Enumerable.ToArray 00:01:35 v #2085 > > System.Array.Sort (a, indices) 00:01:35 v #2086 > > 00:01:35 v #2087 > > indices 00:01:35 v #2088 > > |> Array.take (a.Length - 1) 00:01:35 v #2089 > > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1) 00:01:35 v #2090 > > ]] 00:01:35 v #2091 > > let testCases = seq { 00:01:35 v #2092 > > [[| 0 |]], false 00:01:35 v #2093 > > [[| 1; 2 |]], true 00:01:35 v #2094 > > [[| 3; 5 |]], false 00:01:35 v #2095 > > [[| 3; 4; 6 |]], true 00:01:35 v #2096 > > [[| 2; 4; 6 |]], false 00:01:35 v #2097 > > } 00:01:35 v #2098 > > let rec hasAnyPairCloseToEachotherTests = 00:01:35 v #2099 > > runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases 00:01:35 v #2100 > > hasAnyPairCloseToEachotherTests 00:01:35 v #2101 > > |> sortResultList 00:01:36 v #2102 > > 00:01:36 v #2103 > > ╭─[ 1.04s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:36 v #2104 > > │ │ 00:01:36 v #2105 > > │ │ 00:01:36 v #2106 > > │ Test: hasAnyPairCloseToEachotherTests │ 00:01:36 v #2107 > > │ │ 00:01:36 v #2108 > > │ Solution: 0 │ 00:01:36 v #2109 > > │ Test case 1. A. Time: 2L │ 00:01:36 v #2110 > > │ │ 00:01:36 v #2111 > > │ Solution: 1,2 │ 00:01:36 v #2112 > > │ Test case 1. A. Time: 0L │ 00:01:36 v #2113 > > │ │ 00:01:36 v #2114 > > │ Solution: 3,5 │ 00:01:36 v #2115 > > │ Test case 1. A. Time: 0L │ 00:01:36 v #2116 > > │ │ 00:01:36 v #2117 > > │ Solution: 3,4,6 │ 00:01:36 v #2118 > > │ Test case 1. A. Time: 0L │ 00:01:36 v #2119 > > │ │ 00:01:36 v #2120 > > │ Solution: 2,4,6 │ 00:01:36 v #2121 > > │ Test case 1. A. Time: 0L │ 00:01:36 v #2122 > > │ │ 00:01:36 v #2123 > > │ Input | Expected | Result | Best │ 00:01:36 v #2124 > > │ --- | --- | --- | --- │ 00:01:36 v #2125 > > │ 0 | False | False | (1, 2) │ 00:01:36 v #2126 > > │ 1,2 | True | True | (1, 0) │ 00:01:36 v #2127 > > │ 3,5 | False | False | (1, 0) │ 00:01:36 v #2128 > > │ 3,4,6 | True | True | (1, 0) │ 00:01:36 v #2129 > > │ 2,4,6 | False | False | (1, 0) │ 00:01:36 v #2130 > > │ │ 00:01:36 v #2131 > > │ Average Ranking │ 00:01:36 v #2132 > > │ Test case 1. Average Time: 0L │ 00:01:36 v #2133 > > │ │ 00:01:36 v #2134 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:36 v #2135 > 00:01:35 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 125147 } 00:01:36 v #2136 > 00:01:35 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:38 v #2137 > 00:01:37 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/perf/Perf.dib.ipynb to html 00:01:38 v #2138 > 00:01:37 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:38 v #2139 > 00:01:37 v #7 ! validate(nb) 00:01:38 v #2140 > 00:01:37 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:38 v #2141 > 00:01:37 v #9 ! return _pygments_highlight( 00:01:39 v #2142 > 00:01:38 v #10 ! [NbConvertApp] Writing 458080 bytes to c:\home\git\polyglot\apps\perf\Perf.dib.html 00:01:39 v #2143 > 00:01:39 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 } 00:01:39 v #2144 > 00:01:39 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 } 00:01:39 v #2145 > 00:01:39 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:40 v #2146 > 00:01:39 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:40 v #2147 > 00:01:39 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:40 v #2148 > 00:01:39 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 126054 } 00:01:40 d #2149 runtime.execute_with_options_async / { exit_code = 0; output_length = 132859 } 00:01:40 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Perf.dib --retries 3 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path DirTreeHtml.dib"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # DirTreeHtml (Polyglot) │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #9 > > 00:00:06 v #10 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:06 v #11 > > #r 00:00:06 v #12 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:06 v #13 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:06 v #14 > > #r 00:00:06 v #15 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:06 v #16 > > 0/System.Reactive.dll" 00:00:06 v #17 > > #r 00:00:06 v #18 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:06 v #19 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:06 v #20 > > #r 00:00:06 v #21 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:00:06 v #22 > > #r 00:00:06 v #23 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal 00:00:06 v #24 > > co.Markup.dll" 00:00:19 v #25 > > 00:00:19 v #26 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #27 > > #if !INTERACTIVE 00:00:19 v #28 > > open Lib 00:00:19 v #29 > > #endif 00:00:19 v #30 > > 00:00:19 v #31 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #32 > > open SpiralFileSystem.Operators 00:00:19 v #33 > > open Falco.Markup 00:00:19 v #34 > > 00:00:19 v #35 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #36 > > type FileSystemNode = 00:00:19 v #37 > > | File of string * string * int64 00:00:19 v #38 > > | Folder of string * string * FileSystemNode list 00:00:19 v #39 > > | Root of FileSystemNode list 00:00:19 v #40 > > 00:00:19 v #41 > > let rec scanDirectory isRoot (basePath : string) (path : string) = 00:00:19 v #42 > > let relativePath = 00:00:19 v #43 > > path 00:00:19 v #44 > > |> SpiralSm.replace basePath "" 00:00:19 v #45 > > |> SpiralSm.replace "\\" "/" 00:00:19 v #46 > > |> SpiralSm.replace "//" "/" 00:00:19 v #47 > > |> SpiralSm.trim_start [[| '/' |]] 00:00:19 v #48 > > 00:00:19 v #49 > > let directories = 00:00:19 v #50 > > path 00:00:19 v #51 > > |> System.IO.Directory.GetDirectories 00:00:19 v #52 > > |> Array.toList 00:00:19 v #53 > > |> List.sort 00:00:19 v #54 > > |> List.map (scanDirectory false basePath) 00:00:19 v #55 > > let files = 00:00:19 v #56 > > path 00:00:19 v #57 > > |> System.IO.Directory.GetFiles 00:00:19 v #58 > > |> Array.toList 00:00:19 v #59 > > |> List.sort 00:00:19 v #60 > > |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, 00:00:19 v #61 > > System.IO.FileInfo(f).Length)) 00:00:19 v #62 > > 00:00:19 v #63 > > let children = directories @ files 00:00:19 v #64 > > if isRoot 00:00:19 v #65 > > then Root children 00:00:19 v #66 > > else Folder (path |> System.IO.Path.GetFileName, relativePath, children) 00:00:19 v #67 > > 00:00:19 v #68 > > let rec generateHtml fsNode = 00:00:19 v #69 > > let sizeLabel size = 00:00:19 v #70 > > match float size with 00:00:19 v #71 > > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB" 00:00:19 v #72 > > | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB" 00:00:19 v #73 > > | size -> $"%.2f{size} B" 00:00:19 v #74 > > match fsNode with 00:00:19 v #75 > > | File (fileName, relativePath, size) -> 00:00:19 v #76 > > Elem.div [[]] [[ 00:00:19 v #77 > > Text.raw "📄 " 00:00:19 v #78 > > Elem.a [[ 00:00:19 v #79 > > Attr.href $"""{relativePath}{if relativePath = "" then "" else 00:00:19 v #80 > > "/"}{fileName}""" 00:00:19 v #81 > > ]] [[ 00:00:19 v #82 > > Text.raw fileName 00:00:19 v #83 > > ]] 00:00:19 v #84 > > Elem.span [[]] [[ 00:00:19 v #85 > > Text.raw $" ({size |> sizeLabel})" 00:00:19 v #86 > > ]] 00:00:19 v #87 > > ]] 00:00:19 v #88 > > | Folder (folderName, relativePath, children) -> 00:00:19 v #89 > > let size = 00:00:19 v #90 > > let rec loop children = 00:00:19 v #91 > > children 00:00:19 v #92 > > |> List.sumBy (function 00:00:19 v #93 > > | File (_, _, size) -> size 00:00:19 v #94 > > | Folder (_, _, children) 00:00:19 v #95 > > | Root children -> loop children 00:00:19 v #96 > > ) 00:00:19 v #97 > > loop children 00:00:19 v #98 > > Elem.details [[ 00:00:19 v #99 > > Attr.open' "true" 00:00:19 v #100 > > ]] [[ 00:00:19 v #101 > > Elem.summary [[]] [[ 00:00:19 v #102 > > Text.raw "📂 " 00:00:19 v #103 > > Elem.a [[ 00:00:19 v #104 > > Attr.href relativePath 00:00:19 v #105 > > ]] [[ 00:00:19 v #106 > > Text.raw folderName 00:00:19 v #107 > > ]] 00:00:19 v #108 > > Elem.span [[]] [[ 00:00:19 v #109 > > Text.raw $" ({size |> sizeLabel})" 00:00:19 v #110 > > ]] 00:00:19 v #111 > > ]] 00:00:19 v #112 > > Elem.div [[]] [[ 00:00:19 v #113 > > yield! children |> List.map generateHtml 00:00:19 v #114 > > ]] 00:00:19 v #115 > > ]] 00:00:19 v #116 > > | Root children -> 00:00:19 v #117 > > Elem.div [[]] [[ 00:00:19 v #118 > > yield! children |> List.map generateHtml 00:00:19 v #119 > > ]] 00:00:19 v #120 > > 00:00:19 v #121 > > let generateHtmlForFileSystem root = 00:00:19 v #122 > > $"""<!DOCTYPE html> 00:00:19 v #123 > > <html lang="en"> 00:00:19 v #124 > > <head> 00:00:19 v #125 > > <meta charset="UTF-8"> 00:00:19 v #126 > > <style> 00:00:19 v #127 > > body {{ 00:00:19 v #128 > > background-color: #222; 00:00:19 v #129 > > color: #ccc; 00:00:19 v #130 > > }} 00:00:19 v #131 > > a {{ 00:00:19 v #132 > > color: #777; 00:00:19 v #133 > > font-size: 15px; 00:00:19 v #134 > > }} 00:00:19 v #135 > > span {{ 00:00:19 v #136 > > font-size: 11px; 00:00:19 v #137 > > }} 00:00:19 v #138 > > div > div {{ 00:00:19 v #139 > > padding-left: 10px; 00:00:19 v #140 > > }} 00:00:19 v #141 > > details > div {{ 00:00:19 v #142 > > padding-left: 19px; 00:00:19 v #143 > > }} 00:00:19 v #144 > > </style> 00:00:19 v #145 > > </head> 00:00:19 v #146 > > <body> 00:00:19 v #147 > > {root |> generateHtml |> renderNode} 00:00:19 v #148 > > </body> 00:00:19 v #149 > > </html> 00:00:19 v #150 > > """ 00:00:19 v #151 > > 00:00:19 v #152 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #153 > > //// test 00:00:19 v #154 > > 00:00:19 v #155 > > let expected = """<!DOCTYPE html> 00:00:19 v #156 > > <html lang="en"> 00:00:19 v #157 > > <head> 00:00:19 v #158 > > <meta charset="UTF-8"> 00:00:19 v #159 > > <style> 00:00:19 v #160 > > body { 00:00:19 v #161 > > background-color: #222; 00:00:19 v #162 > > color: #ccc; 00:00:19 v #163 > > } 00:00:19 v #164 > > a { 00:00:19 v #165 > > color: #777; 00:00:19 v #166 > > font-size: 15px; 00:00:19 v #167 > > } 00:00:19 v #168 > > span { 00:00:19 v #169 > > font-size: 11px; 00:00:19 v #170 > > } 00:00:19 v #171 > > div > div { 00:00:19 v #172 > > padding-left: 10px; 00:00:19 v #173 > > } 00:00:19 v #174 > > details > div { 00:00:19 v #175 > > padding-left: 19px; 00:00:19 v #176 > > } 00:00:19 v #177 > > </style> 00:00:19 v #178 > > </head> 00:00:19 v #179 > > <body> 00:00:19 v #180 > > <div><details open="true"><summary>📂 <a href="_.root">_.root</a><span> 00:00:19 v #181 > > (10.00 B)</span></summary><div><details open="true"><summary>📂 <a 00:00:19 v #182 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details 00:00:19 v #183 > > open="true"><summary>📂 <a href="_.root/3/2">2</a><span> (3.00 00:00:19 v #184 > > B)</span></summary><div><details open="true"><summary>📂 <a 00:00:19 v #185 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>📄 <a 00:00:19 v #186 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 00:00:19 v #187 > > B)</span></div></div></details><div>📄 <a 00:00:19 v #188 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 00:00:19 v #189 > > B)</span></div></div></details><div>📄 <a 00:00:19 v #190 > > href="_.root/3/file.txt">file.txt</a><span> (3.00 00:00:19 v #191 > > B)</span></div></div></details><div>📄 <a 00:00:19 v #192 > > href="_.root/file.txt">file.txt</a><span> (4.00 00:00:19 v #193 > > B)</span></div></div></details></div> 00:00:19 v #194 > > </body> 00:00:19 v #195 > > </html> 00:00:19 v #196 > > """ 00:00:19 v #197 > > 00:00:19 v #198 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |> 00:00:19 v #199 > > SpiralFileSystem.create_temp_dir' 00:00:19 v #200 > > let rec loop d n = async { 00:00:19 v #201 > > if n >= 0 then 00:00:19 v #202 > > tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore 00:00:19 v #203 > > do! 00:00:19 v #204 > > n 00:00:19 v #205 > > |> string 00:00:19 v #206 > > |> String.replicate (n + 1) 00:00:19 v #207 > > |> SpiralFileSystem.write_all_text_async (tempFolder </> d </> 00:00:19 v #208 > > $"file.txt") 00:00:19 v #209 > > do! loop $"{d}/{n}" (n - 1) 00:00:19 v #210 > > } 00:00:19 v #211 > > loop "_.root" 3 00:00:19 v #212 > > |> Async.RunSynchronously 00:00:19 v #213 > > 00:00:19 v #214 > > let html = 00:00:19 v #215 > > scanDirectory true tempFolder tempFolder 00:00:19 v #216 > > |> generateHtmlForFileSystem 00:00:19 v #217 > > 00:00:19 v #218 > > html 00:00:19 v #219 > > |> _assertEqual expected 00:00:19 v #220 > > 00:00:19 v #221 > > disposable.Dispose () 00:00:19 v #222 > > 00:00:19 v #223 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent 00:00:19 v #224 > > 00:00:19 v #225 > > ╭─[ 194.26ms - return value ]──────────────────────────────────────────────────╮ 00:00:19 v #226 > > │ <!DOCTYPE html> │ 00:00:19 v #227 > > │ <html lang="en"> │ 00:00:19 v #228 > > │ <head> │ 00:00:19 v #229 > > │ <meta charset="UTF-8"> │ 00:00:19 v #230 > > │ <style> │ 00:00:19 v #231 > > │ body { │ 00:00:19 v #232 > > │ background-color: #222; │ 00:00:19 v #233 > > │ color: #ccc; │ 00:00:19 v #234 > > │ } │ 00:00:19 v #235 > > │ a { │ 00:00:19 v #236 > > │ color: #777; │ 00:00:19 v #237 > > │ font-size: 15px; │ 00:00:19 v #238 > > │ } │ 00:00:19 v #239 > > │ span { │ 00:00:19 v #240 > > │ font-size: 11px; │ 00:00:19 v #241 > > │ } │ 00:00:19 v #242 > > │ div > div { │ 00:00:19 v #243 > > │ padding-left: 10px; │ 00:00:19 v #244 > > │ } │ 00:00:19 v #245 > > │ details > div { │ 00:00:19 v #246 > > │ padding-left: 19px; │ 00:00:19 v #247 > > │ } │ 00:00:19 v #248 > > │ </style> │ 00:00:19 v #249 > > │ </head> │ 00:00:19 v #250 > > │ <body> │ 00:00:19 v #251 > > │ <div><details open="true"><summary>📂 <a │ 00:00:19 v #252 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ 00:00:19 v #253 > > │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ 00:00:19 v #254 > > │ B)</span></summary><div><details open="true"><summary>📂 <a │ 00:00:19 v #255 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ 00:00:19 v #256 > > │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ 00:00:19 v #257 > > │ B)</span></summary><div><div>📄 <a │ 00:00:19 v #258 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 │ 00:00:19 v #259 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #260 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00 │ 00:00:19 v #261 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #262 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00 │ 00:00:19 v #263 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #264 > > │ href="_.root/file.txt">file.txt</a><span> (4.00 │ 00:00:19 v #265 > > │ B)</span></div></div></details></div> │ 00:00:19 v #266 > > │ </body> │ 00:00:19 v #267 > > │ </html> │ 00:00:19 v #268 > > │ │ 00:00:19 v #269 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #270 > > 00:00:19 v #271 > > ╭─[ 201.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:19 v #272 > > │ "<!DOCTYPE html> │ 00:00:19 v #273 > > │ <html lang="en"> │ 00:00:19 v #274 > > │ <head> │ 00:00:19 v #275 > > │ <meta charset="UTF-8"> │ 00:00:19 v #276 > > │ <style> │ 00:00:19 v #277 > > │ body { │ 00:00:19 v #278 > > │ background-color: #222; │ 00:00:19 v #279 > > │ color: #ccc; │ 00:00:19 v #280 > > │ } │ 00:00:19 v #281 > > │ a { │ 00:00:19 v #282 > > │ color: #777; │ 00:00:19 v #283 > > │ font-size: 15px; │ 00:00:19 v #284 > > │ } │ 00:00:19 v #285 > > │ span { │ 00:00:19 v #286 > > │ font-size: 11px; │ 00:00:19 v #287 > > │ } │ 00:00:19 v #288 > > │ div > div { │ 00:00:19 v #289 > > │ padding-left: 10px; │ 00:00:19 v #290 > > │ } │ 00:00:19 v #291 > > │ details > div { │ 00:00:19 v #292 > > │ padding-left: 19px; │ 00:00:19 v #293 > > │ } │ 00:00:19 v #294 > > │ </style> │ 00:00:19 v #295 > > │ </head> │ 00:00:19 v #296 > > │ <body> │ 00:00:19 v #297 > > │ <div><details open="true"><summary>📂 <a │ 00:00:19 v #298 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ 00:00:19 v #299 > > │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ 00:00:19 v #300 > > │ B)</span></summary><div><details open="true"><summary>📂 <a │ 00:00:19 v #301 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ 00:00:19 v #302 > > │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ 00:00:19 v #303 > > │ B)</span></summary><div><div>📄 <a │ 00:00:19 v #304 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 │ 00:00:19 v #305 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #306 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00 │ 00:00:19 v #307 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #308 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00 │ 00:00:19 v #309 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:19 v #310 > > │ href="_.root/file.txt">file.txt</a><span> (4.00 │ 00:00:19 v #311 > > │ B)</span></div></div></details></div> │ 00:00:19 v #312 > > │ </body> │ 00:00:19 v #313 > > │ </html> │ 00:00:19 v #314 > > │ " │ 00:00:19 v #315 > > │ │ 00:00:19 v #316 > > │ │ 00:00:19 v #317 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #318 > > 00:00:19 v #319 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #320 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #321 > > │ ## Arguments │ 00:00:19 v #322 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #323 > > 00:00:19 v #324 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #325 > > [[<RequireQualifiedAccess>]] 00:00:19 v #326 > > type Arguments = 00:00:19 v #327 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string 00:00:19 v #328 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string 00:00:19 v #329 > > 00:00:19 v #330 > > interface Argu.IArgParserTemplate with 00:00:19 v #331 > > member s.Usage = 00:00:19 v #332 > > match s with 00:00:19 v #333 > > | Dir _ -> nameof Dir 00:00:19 v #334 > > | Html _ -> nameof Html 00:00:20 v #335 > > 00:00:20 v #336 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #337 > > //// test 00:00:20 v #338 > > 00:00:20 v #339 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:00:20 v #340 > > 00:00:20 v #341 > > ╭─[ 97.47ms - return value ]───────────────────────────────────────────────────╮ 00:00:20 v #342 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string> │ 00:00:20 v #343 > > │ │ 00:00:20 v #344 > > │ OPTIONS: │ 00:00:20 v #345 > > │ │ 00:00:20 v #346 > > │ --dir <string> Dir │ 00:00:20 v #347 > > │ --html <string> Html │ 00:00:20 v #348 > > │ --help display this list of options. │ 00:00:20 v #349 > > │ " │ 00:00:20 v #350 > > │ │ 00:00:20 v #351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #352 > > 00:00:20 v #353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 v #355 > > │ ## main │ 00:00:20 v #356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #357 > > 00:00:20 v #358 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #359 > > let main args = 00:00:20 v #360 > > let argsMap = args |> Runtime.parseArgsMap<Arguments> 00:00:20 v #361 > > 00:00:20 v #362 > > let dir = 00:00:20 v #363 > > match argsMap.[[nameof Arguments.Dir]] with 00:00:20 v #364 > > | [[ Arguments.Dir dir ]] -> Some dir 00:00:20 v #365 > > | _ -> None 00:00:20 v #366 > > |> Option.get 00:00:20 v #367 > > 00:00:20 v #368 > > let htmlPath = 00:00:20 v #369 > > match argsMap.[[nameof Arguments.Html]] with 00:00:20 v #370 > > | [[ Arguments.Html html ]] -> Some html 00:00:20 v #371 > > | _ -> None 00:00:20 v #372 > > |> Option.get 00:00:20 v #373 > > 00:00:20 v #374 > > let fileSystem = scanDirectory true dir dir 00:00:20 v #375 > > let html = generateHtmlForFileSystem fileSystem 00:00:20 v #376 > > 00:00:20 v #377 > > html |> SpiralFileSystem.write_all_text_async htmlPath 00:00:20 v #378 > > |> Async.runWithTimeout 30000 00:00:20 v #379 > > |> function 00:00:20 v #380 > > | Some () -> 0 00:00:20 v #381 > > | None -> 1 00:00:20 v #382 > > 00:00:20 v #383 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #384 > > //// test 00:00:20 v #385 > > 00:00:20 v #386 > > let args = 00:00:20 v #387 > > System.Environment.GetEnvironmentVariable "ARGS" 00:00:20 v #388 > > |> SpiralRuntime.split_args 00:00:20 v #389 > > |> Result.toArray 00:00:20 v #390 > > |> Array.collect id 00:00:20 v #391 > > 00:00:20 v #392 > > match args with 00:00:20 v #393 > > | [[||]] -> 0 00:00:20 v #394 > > | args -> if main args = 0 then 0 else failwith "main failed" 00:00:20 v #395 > > 00:00:20 v #396 > > ╭─[ 81.09ms - return value ]───────────────────────────────────────────────────╮ 00:00:20 v #397 > > │ <div class="dni-plaintext"><pre>0 │ 00:00:20 v #398 > > │ </pre></div><style> │ 00:00:20 v #399 > > │ .dni-code-hint { │ 00:00:20 v #400 > > │ font-style: italic; │ 00:00:20 v #401 > > │ overflow: hidden; │ 00:00:20 v #402 > > │ white-space: nowrap; │ 00:00:20 v #403 > > │ } │ 00:00:20 v #404 > > │ .dni-treeview { │ 00:00:20 v #405 > > │ white-space: nowrap; │ 00:00:20 v #406 > > │ } │ 00:00:20 v #407 > > │ .dni-treeview td { │ 00:00:20 v #408 > > │ vertical-align: top; │ 00:00:20 v #409 > > │ text-align: start; │ 00:00:20 v #410 > > │ } │ 00:00:20 v #411 > > │ details.dni-treeview { │ 00:00:20 v #412 > > │ padding-left: 1em; │ 00:00:20 v #413 > > │ } │ 00:00:20 v #414 > > │ table td { │ 00:00:20 v #415 > > │ text-align: start; │ 00:00:20 v #416 > > │ } │ 00:00:20 v #417 > > │ table tr { │ 00:00:20 v #418 > > │ vertical-align: top; │ 00:00:20 v #419 > > │ margin: 0em 0px; │ 00:00:20 v #420 > > │ } │ 00:00:20 v #421 > > │ table tr td pre │ 00:00:20 v #422 > > │ { │ 00:00:20 v #423 > > │ vertical-align: top !important; │ 00:00:20 v #424 > > │ margin: 0em 0px !important; │ 00:00:20 v #425 > > │ } │ 00:00:20 v #426 > > │ table th { │ 00:00:20 v #427 > > │ text-align: start; │ 00:00:20 v #428 > > │ } │ 00:00:20 v #429 > > │ </style> │ 00:00:20 v #430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 v #431 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 19755 } 00:00:20 v #432 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:21 v #433 > 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html 00:00:21 v #434 > 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:21 v #435 > 00:00:20 v #7 ! validate(nb) 00:00:22 v #436 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:22 v #437 > 00:00:21 v #9 ! return _pygments_highlight( 00:00:22 v #438 > 00:00:21 v #10 ! [NbConvertApp] Writing 310059 bytes to c:\home\git\polyglot\apps\dir-tree-html\DirTreeHtml.dib.html 00:00:22 v #439 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 880 } 00:00:22 v #440 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 880 } 00:00:22 v #441 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:23 v #442 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:23 v #443 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:23 v #444 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 20694 } 00:00:23 d #445 runtime.execute_with_options_async / { exit_code = 0; output_length = 24206 } 00:00:23 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path DirTreeHtml.dib #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 | US0_3 | US0_4 and Mut0 = {mutable l0 : int64} and Mut1 = {mutable l0 : (string -> unit)} and Mut2 = {mutable l0 : bool} and Mut3 = {mutable l0 : string} and Mut4 = {mutable l0 : US0} and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 and [<Struct>] US2 = | US2_0 of f0_0 : int64 | US2_1 and [<Struct>] US3 = | US3_0 | US3_1 | US3_2 and [<Struct>] US4 = | US4_0 of f0_0 : US3 | US4_1 of f1_0 : US3 | US4_2 of f2_0 : US3 | US4_3 of f3_0 : US3 | US4_4 of f4_0 : US3 and [<Struct>] US5 = | US5_0 of f0_0 : string | US5_1 and [<Struct>] US6 = | US6_0 of f0_0 : bool | US6_1 and [<Struct>] US7 = | US7_0 of f0_0 : bool | US7_1 of f1_0 : exn and [<Struct>] US8 = | US8_0 of f0_0 : bool | US8_1 of f1_0 : exn and [<Struct>] US9 = | US9_0 of f0_0 : int32 | US9_1 let rec method3 (v0 : string) : string = v0 and method4 () : string = let v0 : string = "" v0 and closure1 () (v0 : string) : US5 = US5_0(v0) and method5 () : (string -> US5) = closure1() and method2 (v0 : string) : string = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : string = method3(v0) let v3 : string = "std::env::var(&*$0)" let v4 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v2 v3 let v5 : string = "true; let _result_map_ = $0.map(|x| { //" let v6 : bool = Fable.Core.RustInterop.emitRustExpr v4 v5 let v7 : string = "x" let v8 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v7 let v9 : string = "fable_library_rust::String_::fromString($0)" let v10 : string = Fable.Core.RustInterop.emitRustExpr v8 v9 let v11 : string = "true; $0 })" let v12 : bool = Fable.Core.RustInterop.emitRustExpr v10 v11 let v13 : string = "_result_map_" let v14 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v13 let v15 : string = method4() let v16 : string = "$0.unwrap_or($1)" let v17 : string = Fable.Core.RustInterop.emitRustExpr struct (v14, v15) v16 let _run_target_args'_v1 = v17 #endif #if FABLE_COMPILER_RUST && WASM let v18 : US3 = US3_1 let v19 : US4 = US4_2(v18) let v20 : string = $"env.get_environment_variable / target: {v19} / var: {v0}" let v21 : string = failwith<string> v20 let _run_target_args'_v1 = v21 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : US3 = US3_2 let v23 : US4 = US4_2(v22) let v24 : string = $"env.get_environment_variable / target: {v23} / var: {v0}" let v25 : string = failwith<string> v24 let _run_target_args'_v1 = v25 #endif #if FABLE_COMPILER_TYPESCRIPT let v26 : string = "process.env[$0] ?? \"\"" let v27 : string = Fable.Core.JsInterop.emitJsExpr v0 v26 let _run_target_args'_v1 = v27 #endif #if FABLE_COMPILER_PYTHON let v28 : string = "os" let v29 : IOsEnviron = Fable.Core.PyInterop.importAll v28 let v30 : string = "v29.environ" let v31 : obj = Fable.Core.PyInterop.emitPyExpr () v30 let v34 : string = "v31.get($0)" let v35 : string = Fable.Core.PyInterop.emitPyExpr v0 v34 let mutable _v35 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v38 : (string -> string option) = Option.ofObj let v39 : string option = v38 v35 v39 #else Some v35 #endif |> fun x -> _v35 <- Some x let v40 : string option = match _v35 with Some x -> x | None -> failwith "optionm'.of_obj / _v35=None" let v43 : (string -> US5) = method5() let v44 : US5 option = v40 |> Option.map v43 let v55 : US5 = US5_1 let v56 : US5 = v44 |> Option.defaultValue v55 let v63 : string = match v56 with | US5_1 -> (* None *) let v61 : string = "" v61 | US5_0(v60) -> (* Some *) v60 let _run_target_args'_v1 = v63 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v64 : US3 = US3_1 let v65 : US4 = US4_0(v64) let v66 : string = $"env.get_environment_variable / target: {v65} / var: {v0}" let v67 : string = failwith<string> v66 let _run_target_args'_v1 = v67 #endif #else let v68 : (string -> string) = System.Environment.GetEnvironmentVariable let v69 : string = v68 v0 let mutable _v69 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v70 : (string -> string option) = Option.ofObj let v71 : string option = v70 v69 v71 #else Some v69 #endif |> fun x -> _v69 <- Some x let v72 : string option = match _v69 with Some x -> x | None -> failwith "optionm'.of_obj / _v69=None" let v75 : (string -> US5) = method5() let v76 : US5 option = v72 |> Option.map v75 let v87 : US5 = US5_1 let v88 : US5 = v76 |> Option.defaultValue v87 let v95 : string = match v88 with | US5_1 -> (* None *) let v93 : string = "" v93 | US5_0(v92) -> (* Some *) v92 let _run_target_args'_v1 = v95 #endif let v96 : string = _run_target_args'_v1 v96 and method1 () : struct (US1 * US2) = let v0 : string = "TRACE_LEVEL" let v1 : string = method2(v0) let v2 : bool = "Verbose" = v1 let v6 : US1 = if v2 then let v3 : US0 = US0_0 US1_0(v3) else US1_1 let v47 : US1 = match v6 with | US1_1 -> (* None *) let v9 : bool = "Debug" = v1 let v13 : US1 = if v9 then let v10 : US0 = US0_1 US1_0(v10) else US1_1 match v13 with | US1_1 -> (* None *) let v16 : bool = "Info" = v1 let v20 : US1 = if v16 then let v17 : US0 = US0_2 US1_0(v17) else US1_1 match v20 with | US1_1 -> (* None *) let v23 : bool = "Warning" = v1 let v27 : US1 = if v23 then let v24 : US0 = US0_3 US1_0(v24) else US1_1 match v27 with | US1_1 -> (* None *) let v30 : bool = "Critical" = v1 let v34 : US1 = if v30 then let v31 : US0 = US0_4 US1_0(v31) else US1_1 match v34 with | US1_1 -> (* None *) US1_1 | US1_0(v35) -> (* Some *) US1_0(v35) | US1_0(v28) -> (* Some *) US1_0(v28) | US1_0(v21) -> (* Some *) US1_0(v21) | US1_0(v14) -> (* Some *) US1_0(v14) | US1_0(v7) -> (* Some *) US1_0(v7) let v48 : string = "AUTOMATION" let v49 : string = method2(v48) let v50 : string = "True" let v51 : bool = v49 <> v50 let v107 : US2 = if v51 then US2_1 else let v55 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v56 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v56 #endif #if FABLE_COMPILER_RUST && WASM let v57 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v57 #endif #if FABLE_COMPILER_RUST && CONTRACT let v58 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v55 = v58 #endif #if FABLE_COMPILER_TYPESCRIPT let v61 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v61 #endif #if FABLE_COMPILER_PYTHON let v62 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v62 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v63 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v63 #endif #else let v64 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v64 #endif let v65 : System.DateTime = _run_target_args'_v55 let v70 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v71 : (System.DateTime -> int64) = _.Ticks let v72 : int64 = v71 v65 let _run_target_args'_v70 = v72 #endif #if FABLE_COMPILER_RUST && WASM let v73 : (System.DateTime -> int64) = _.Ticks let v74 : int64 = v73 v65 let _run_target_args'_v70 = v74 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : int64 = null |> unbox<int64> let _run_target_args'_v70 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : (System.DateTime -> int64) = _.Ticks let v79 : int64 = v78 v65 let _run_target_args'_v70 = v79 #endif #if FABLE_COMPILER_PYTHON let v80 : (System.DateTime -> int64) = _.Ticks let v81 : int64 = v80 v65 let _run_target_args'_v70 = v81 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v82 : (System.DateTime -> int64) = _.Ticks let v83 : int64 = v82 v65 let _run_target_args'_v70 = v83 #endif #else let v84 : (System.DateTime -> int64) = _.Ticks let v85 : int64 = v84 v65 let _run_target_args'_v70 = v85 #endif let v86 : int64 = _run_target_args'_v70 let v103 : int64 = v86 |> int64 US2_0(v103) struct (v47, v107) and closure2 () (v0 : string) : unit = () and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let struct (v2 : US1, v3 : US2) = method1() let _run_target_args'_v1 = struct (v2, v3) #endif #if FABLE_COMPILER_RUST && WASM let v4 : US1 = US1_1 let v5 : US2 = US2_1 let _run_target_args'_v1 = struct (v4, v5) #endif #if FABLE_COMPILER_RUST && CONTRACT let v6 : string = "AUTOMATION" let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "String::from($0)" let v12 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "String::from($0)" let v14 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "String::from($0)" let v16 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v23 #endif #else let v26 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v26 #endif let v29 : std_string_String = _run_target_args'_v10 let v34 : string = "fable_library_rust::String_::fromString($0)" let v35 : string = Fable.Core.RustInterop.emitRustExpr v29 v34 let _run_target_args'_v7 = v35 #endif #if FABLE_COMPILER_RUST && WASM let v36 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v37 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v36 let v38 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v39 : string = "String::from($0)" let v40 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v39 let _run_target_args'_v38 = v40 #endif #if FABLE_COMPILER_RUST && WASM let v41 : string = "String::from($0)" let v42 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v41 let _run_target_args'_v38 = v42 #endif #if FABLE_COMPILER_RUST && CONTRACT let v43 : string = "String::from($0)" let v44 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v43 let _run_target_args'_v38 = v44 #endif #if FABLE_COMPILER_TYPESCRIPT let v45 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v45 #endif #if FABLE_COMPILER_PYTHON let v48 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v48 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v51 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v51 #endif #else let v54 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v54 #endif let v57 : std_string_String = _run_target_args'_v38 let v62 : string = "fable_library_rust::String_::fromString($0)" let v63 : string = Fable.Core.RustInterop.emitRustExpr v57 v62 let _run_target_args'_v7 = v63 #endif #if FABLE_COMPILER_RUST && CONTRACT let v64 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v65 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v64 let v66 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v67 : string = "String::from($0)" let v68 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v67 let _run_target_args'_v66 = v68 #endif #if FABLE_COMPILER_RUST && WASM let v69 : string = "String::from($0)" let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v69 let _run_target_args'_v66 = v70 #endif #if FABLE_COMPILER_RUST && CONTRACT let v71 : string = "String::from($0)" let v72 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v71 let _run_target_args'_v66 = v72 #endif #if FABLE_COMPILER_TYPESCRIPT let v73 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v73 #endif #if FABLE_COMPILER_PYTHON let v76 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v76 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v79 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v79 #endif #else let v82 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v82 #endif let v85 : std_string_String = _run_target_args'_v66 let v90 : string = "fable_library_rust::String_::fromString($0)" let v91 : string = Fable.Core.RustInterop.emitRustExpr v85 v90 let _run_target_args'_v7 = v91 #endif #if FABLE_COMPILER_TYPESCRIPT let v92 : string = null |> unbox<string> let _run_target_args'_v7 = v92 #endif #if FABLE_COMPILER_PYTHON let v95 : string = null |> unbox<string> let _run_target_args'_v7 = v95 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v98 : string = null |> unbox<string> let _run_target_args'_v7 = v98 #endif #else let v101 : string = null |> unbox<string> let _run_target_args'_v7 = v101 #endif let v104 : string = _run_target_args'_v7 let v109 : string = "True" let v110 : bool = v104 <> v109 let v121 : US2 = if v110 then US2_1 else let v114 : string = $"near_sdk::env::block_timestamp()" let v115 : uint64 = Fable.Core.RustInterop.emitRustExpr () v114 let v116 : (uint64 -> int64) = int64 let v117 : int64 = v116 v115 US2_0(v117) let v122 : US1 = US1_1 let _run_target_args'_v1 = struct (v122, v121) #endif #if FABLE_COMPILER_TYPESCRIPT let struct (v123 : US1, v124 : US2) = method1() let _run_target_args'_v1 = struct (v123, v124) #endif #if FABLE_COMPILER_PYTHON let struct (v125 : US1, v126 : US2) = method1() let _run_target_args'_v1 = struct (v125, v126) #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let struct (v127 : US1, v128 : US2) = method1() let _run_target_args'_v1 = struct (v127, v128) #endif #else let struct (v129 : US1, v130 : US2) = method1() let _run_target_args'_v1 = struct (v129, v130) #endif let struct (v131 : US1, v132 : US2) = _run_target_args'_v1 let v137 : Mut0 = {l0 = 1L} : Mut0 let v138 : (string -> unit) = closure2() let v139 : Mut1 = {l0 = v138} : Mut1 let v140 : Mut2 = {l0 = true} : Mut2 let v141 : string = "" let v142 : Mut3 = {l0 = v141} : Mut3 let v145 : US0 = match v131 with | US1_1 -> (* None *) v0 | US1_0(v143) -> (* Some *) v143 let v146 : Mut4 = {l0 = v145} : Mut4 let v153 : int64 option = match v132 with | US2_1 -> (* None *) let v151 : int64 option = None v151 | US2_0(v147) -> (* Some *) let v148 : int64 option = Some v147 v148 struct (v137, v139, v140, v142, v146, v153) and closure0 () () : unit = let v0 : bool = TraceState.trace_state.IsNone if v0 then let v1 : US0 = US0_0 let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : Mut4, v7 : int64 option) = method0(v1) let v8 : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) option = Some struct (v2, v3, v4, v5, v6, v7) TraceState.trace_state <- v8 () and method8 (v0 : US0) : bool = let v1 : unit = () let v2 : (unit -> unit) = closure0() let v3 : unit = (fun () -> v2 (); v1) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value let v35 : US0 = v21.l0 let v36 : bool = v19.l0 let v37 : bool = v36 = false if v37 then false else let v38 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v0 let v39 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v35 let v40 : bool = v38 >= v39 v40 and closure6 () (v0 : int64) : US2 = US2_0(v0) and method10 () : (int64 -> US2) = closure6() and method11 () : string = let v0 : string = "hh:mm:ss" v0 and method12 () : string = let v0 : string = "HH:mm:ss" v0 and method9 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option) : string = let v6 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7 : (int64 -> US2) = method10() let v8 : US2 option = v5 |> Option.map v7 let v19 : US2 = US2_1 let v20 : US2 = v8 |> Option.defaultValue v19 let v117 : System.DateTime = match v20 with | US2_1 -> (* None *) let v101 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v102 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v102 #endif #if FABLE_COMPILER_RUST && WASM let v103 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v103 #endif #if FABLE_COMPILER_RUST && CONTRACT let v104 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v101 = v104 #endif #if FABLE_COMPILER_TYPESCRIPT let v107 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v108 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v109 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v109 #endif #else let v110 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v110 #endif let v111 : System.DateTime = _run_target_args'_v101 v111 | US2_0(v24) -> (* Some *) let v25 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v26 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v26 #endif #if FABLE_COMPILER_RUST && WASM let v27 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v27 #endif #if FABLE_COMPILER_RUST && CONTRACT let v28 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v25 = v28 #endif #if FABLE_COMPILER_TYPESCRIPT let v31 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v31 #endif #if FABLE_COMPILER_PYTHON let v32 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v32 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v33 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v33 #endif #else let v34 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v34 #endif let v35 : System.DateTime = _run_target_args'_v25 let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : (System.DateTime -> int64) = _.Ticks let v42 : int64 = v41 v35 let _run_target_args'_v40 = v42 #endif #if FABLE_COMPILER_RUST && WASM let v43 : (System.DateTime -> int64) = _.Ticks let v44 : int64 = v43 v35 let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v45 : int64 = null |> unbox<int64> let _run_target_args'_v40 = v45 #endif #if FABLE_COMPILER_TYPESCRIPT let v48 : (System.DateTime -> int64) = _.Ticks let v49 : int64 = v48 v35 let _run_target_args'_v40 = v49 #endif #if FABLE_COMPILER_PYTHON let v50 : (System.DateTime -> int64) = _.Ticks let v51 : int64 = v50 v35 let _run_target_args'_v40 = v51 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v52 : (System.DateTime -> int64) = _.Ticks let v53 : int64 = v52 v35 let _run_target_args'_v40 = v53 #endif #else let v54 : (System.DateTime -> int64) = _.Ticks let v55 : int64 = v54 v35 let _run_target_args'_v40 = v55 #endif let v56 : int64 = _run_target_args'_v40 let v73 : int64 = v56 |> int64 let v76 : int64 = v73 - v24 let v77 : System.TimeSpan = v76 |> System.TimeSpan let v82 : (System.TimeSpan -> int32) = _.Hours let v83 : int32 = v82 v77 let v86 : (System.TimeSpan -> int32) = _.Minutes let v87 : int32 = v86 v77 let v90 : (System.TimeSpan -> int32) = _.Seconds let v91 : int32 = v90 v77 let v94 : (System.TimeSpan -> int32) = _.Milliseconds let v95 : int32 = v94 v77 let v98 : System.DateTime = System.DateTime (1, 1, 1, v83, v87, v91, v95) v98 let v118 : string = method11() let v121 : bool = v118 = "" let v123 : string = if v121 then let v122 : string = "M-d-y hh:mm:ss tt" v122 else v118 let v124 : (string -> string) = v117.ToString let v125 : string = v124 v123 let _run_target_args'_v6 = v125 #endif #if FABLE_COMPILER_RUST && WASM let v139 : (int64 -> US2) = method10() let v140 : US2 option = v5 |> Option.map v139 let v151 : US2 = US2_1 let v152 : US2 = v140 |> Option.defaultValue v151 let v249 : System.DateTime = match v152 with | US2_1 -> (* None *) let v233 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v234 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v234 #endif #if FABLE_COMPILER_RUST && WASM let v235 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v235 #endif #if FABLE_COMPILER_RUST && CONTRACT let v236 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v233 = v236 #endif #if FABLE_COMPILER_TYPESCRIPT let v239 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v239 #endif #if FABLE_COMPILER_PYTHON let v240 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v240 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v241 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v241 #endif #else let v242 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v242 #endif let v243 : System.DateTime = _run_target_args'_v233 v243 | US2_0(v156) -> (* Some *) let v157 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v158 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v158 #endif #if FABLE_COMPILER_RUST && WASM let v159 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v159 #endif #if FABLE_COMPILER_RUST && CONTRACT let v160 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v157 = v160 #endif #if FABLE_COMPILER_TYPESCRIPT let v163 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v163 #endif #if FABLE_COMPILER_PYTHON let v164 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v164 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v165 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v165 #endif #else let v166 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v166 #endif let v167 : System.DateTime = _run_target_args'_v157 let v172 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v173 : (System.DateTime -> int64) = _.Ticks let v174 : int64 = v173 v167 let _run_target_args'_v172 = v174 #endif #if FABLE_COMPILER_RUST && WASM let v175 : (System.DateTime -> int64) = _.Ticks let v176 : int64 = v175 v167 let _run_target_args'_v172 = v176 #endif #if FABLE_COMPILER_RUST && CONTRACT let v177 : int64 = null |> unbox<int64> let _run_target_args'_v172 = v177 #endif #if FABLE_COMPILER_TYPESCRIPT let v180 : (System.DateTime -> int64) = _.Ticks let v181 : int64 = v180 v167 let _run_target_args'_v172 = v181 #endif #if FABLE_COMPILER_PYTHON let v182 : (System.DateTime -> int64) = _.Ticks let v183 : int64 = v182 v167 let _run_target_args'_v172 = v183 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v184 : (System.DateTime -> int64) = _.Ticks let v185 : int64 = v184 v167 let _run_target_args'_v172 = v185 #endif #else let v186 : (System.DateTime -> int64) = _.Ticks let v187 : int64 = v186 v167 let _run_target_args'_v172 = v187 #endif let v188 : int64 = _run_target_args'_v172 let v205 : int64 = v188 |> int64 let v208 : int64 = v205 - v156 let v209 : System.TimeSpan = v208 |> System.TimeSpan let v214 : (System.TimeSpan -> int32) = _.Hours let v215 : int32 = v214 v209 let v218 : (System.TimeSpan -> int32) = _.Minutes let v219 : int32 = v218 v209 let v222 : (System.TimeSpan -> int32) = _.Seconds let v223 : int32 = v222 v209 let v226 : (System.TimeSpan -> int32) = _.Milliseconds let v227 : int32 = v226 v209 let v230 : System.DateTime = System.DateTime (1, 1, 1, v215, v219, v223, v227) v230 let v250 : string = method11() let v253 : bool = v250 = "" let v255 : string = if v253 then let v254 : string = "M-d-y hh:mm:ss tt" v254 else v250 let v256 : (string -> string) = v249.ToString let v257 : string = v256 v255 let _run_target_args'_v6 = v257 #endif #if FABLE_COMPILER_RUST && CONTRACT let v271 : string = $"near_sdk::env::block_timestamp()" let v272 : uint64 = Fable.Core.RustInterop.emitRustExpr () v271 let v273 : (int64 -> US2) = method10() let v274 : US2 option = v5 |> Option.map v273 let v285 : US2 = US2_1 let v286 : US2 = v274 |> Option.defaultValue v285 let v297 : uint64 = match v286 with | US2_1 -> (* None *) v272 | US2_0(v290) -> (* Some *) let v291 : (int64 -> uint64) = uint64 let v292 : uint64 = v291 v290 let v295 : uint64 = v272 - v292 v295 let v298 : uint64 = v297 / 1000000000UL let v299 : uint64 = v298 % 60UL let v300 : uint64 = v298 / 60UL let v301 : uint64 = v300 % 60UL let v302 : uint64 = v298 / 3600UL let v303 : uint64 = v302 % 24UL let v304 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v305 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v303, v301, v299) v304 let v306 : string = "fable_library_rust::String_::fromString($0)" let v307 : string = Fable.Core.RustInterop.emitRustExpr v305 v306 let _run_target_args'_v6 = v307 #endif #if FABLE_COMPILER_TYPESCRIPT let v308 : (int64 -> US2) = method10() let v309 : US2 option = v5 |> Option.map v308 let v320 : US2 = US2_1 let v321 : US2 = v309 |> Option.defaultValue v320 let v418 : System.DateTime = match v321 with | US2_1 -> (* None *) let v402 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v403 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v403 #endif #if FABLE_COMPILER_RUST && WASM let v404 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v404 #endif #if FABLE_COMPILER_RUST && CONTRACT let v405 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v402 = v405 #endif #if FABLE_COMPILER_TYPESCRIPT let v408 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v408 #endif #if FABLE_COMPILER_PYTHON let v409 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v409 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v410 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v410 #endif #else let v411 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v411 #endif let v412 : System.DateTime = _run_target_args'_v402 v412 | US2_0(v325) -> (* Some *) let v326 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v327 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v327 #endif #if FABLE_COMPILER_RUST && WASM let v328 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v328 #endif #if FABLE_COMPILER_RUST && CONTRACT let v329 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v326 = v329 #endif #if FABLE_COMPILER_TYPESCRIPT let v332 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v332 #endif #if FABLE_COMPILER_PYTHON let v333 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v333 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v334 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v334 #endif #else let v335 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v335 #endif let v336 : System.DateTime = _run_target_args'_v326 let v341 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v342 : (System.DateTime -> int64) = _.Ticks let v343 : int64 = v342 v336 let _run_target_args'_v341 = v343 #endif #if FABLE_COMPILER_RUST && WASM let v344 : (System.DateTime -> int64) = _.Ticks let v345 : int64 = v344 v336 let _run_target_args'_v341 = v345 #endif #if FABLE_COMPILER_RUST && CONTRACT let v346 : int64 = null |> unbox<int64> let _run_target_args'_v341 = v346 #endif #if FABLE_COMPILER_TYPESCRIPT let v349 : (System.DateTime -> int64) = _.Ticks let v350 : int64 = v349 v336 let _run_target_args'_v341 = v350 #endif #if FABLE_COMPILER_PYTHON let v351 : (System.DateTime -> int64) = _.Ticks let v352 : int64 = v351 v336 let _run_target_args'_v341 = v352 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v353 : (System.DateTime -> int64) = _.Ticks let v354 : int64 = v353 v336 let _run_target_args'_v341 = v354 #endif #else let v355 : (System.DateTime -> int64) = _.Ticks let v356 : int64 = v355 v336 let _run_target_args'_v341 = v356 #endif let v357 : int64 = _run_target_args'_v341 let v374 : int64 = v357 |> int64 let v377 : int64 = v374 - v325 let v378 : System.TimeSpan = v377 |> System.TimeSpan let v383 : (System.TimeSpan -> int32) = _.Hours let v384 : int32 = v383 v378 let v387 : (System.TimeSpan -> int32) = _.Minutes let v388 : int32 = v387 v378 let v391 : (System.TimeSpan -> int32) = _.Seconds let v392 : int32 = v391 v378 let v395 : (System.TimeSpan -> int32) = _.Milliseconds let v396 : int32 = v395 v378 let v399 : System.DateTime = System.DateTime (1, 1, 1, v384, v388, v392, v396) v399 let v419 : string = method12() let v422 : bool = v419 = "" let v424 : string = if v422 then let v423 : string = "M-d-y hh:mm:ss tt" v423 else v419 let v425 : (string -> string) = v418.ToString let v426 : string = v425 v424 let _run_target_args'_v6 = v426 #endif #if FABLE_COMPILER_PYTHON let v440 : (int64 -> US2) = method10() let v441 : US2 option = v5 |> Option.map v440 let v452 : US2 = US2_1 let v453 : US2 = v441 |> Option.defaultValue v452 let v550 : System.DateTime = match v453 with | US2_1 -> (* None *) let v534 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v535 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v535 #endif #if FABLE_COMPILER_RUST && WASM let v536 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v536 #endif #if FABLE_COMPILER_RUST && CONTRACT let v537 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v534 = v537 #endif #if FABLE_COMPILER_TYPESCRIPT let v540 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v540 #endif #if FABLE_COMPILER_PYTHON let v541 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v541 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v542 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v542 #endif #else let v543 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v543 #endif let v544 : System.DateTime = _run_target_args'_v534 v544 | US2_0(v457) -> (* Some *) let v458 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v459 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v459 #endif #if FABLE_COMPILER_RUST && WASM let v460 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v460 #endif #if FABLE_COMPILER_RUST && CONTRACT let v461 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v458 = v461 #endif #if FABLE_COMPILER_TYPESCRIPT let v464 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v464 #endif #if FABLE_COMPILER_PYTHON let v465 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v465 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v466 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v466 #endif #else let v467 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v467 #endif let v468 : System.DateTime = _run_target_args'_v458 let v473 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v474 : (System.DateTime -> int64) = _.Ticks let v475 : int64 = v474 v468 let _run_target_args'_v473 = v475 #endif #if FABLE_COMPILER_RUST && WASM let v476 : (System.DateTime -> int64) = _.Ticks let v477 : int64 = v476 v468 let _run_target_args'_v473 = v477 #endif #if FABLE_COMPILER_RUST && CONTRACT let v478 : int64 = null |> unbox<int64> let _run_target_args'_v473 = v478 #endif #if FABLE_COMPILER_TYPESCRIPT let v481 : (System.DateTime -> int64) = _.Ticks let v482 : int64 = v481 v468 let _run_target_args'_v473 = v482 #endif #if FABLE_COMPILER_PYTHON let v483 : (System.DateTime -> int64) = _.Ticks let v484 : int64 = v483 v468 let _run_target_args'_v473 = v484 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v485 : (System.DateTime -> int64) = _.Ticks let v486 : int64 = v485 v468 let _run_target_args'_v473 = v486 #endif #else let v487 : (System.DateTime -> int64) = _.Ticks let v488 : int64 = v487 v468 let _run_target_args'_v473 = v488 #endif let v489 : int64 = _run_target_args'_v473 let v506 : int64 = v489 |> int64 let v509 : int64 = v506 - v457 let v510 : System.TimeSpan = v509 |> System.TimeSpan let v515 : (System.TimeSpan -> int32) = _.Hours let v516 : int32 = v515 v510 let v519 : (System.TimeSpan -> int32) = _.Minutes let v520 : int32 = v519 v510 let v523 : (System.TimeSpan -> int32) = _.Seconds let v524 : int32 = v523 v510 let v527 : (System.TimeSpan -> int32) = _.Milliseconds let v528 : int32 = v527 v510 let v531 : System.DateTime = System.DateTime (1, 1, 1, v516, v520, v524, v528) v531 let v551 : string = method12() let v554 : bool = v551 = "" let v556 : string = if v554 then let v555 : string = "M-d-y hh:mm:ss tt" v555 else v551 let v557 : (string -> string) = v550.ToString let v558 : string = v557 v556 let _run_target_args'_v6 = v558 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v572 : (int64 -> US2) = method10() let v573 : US2 option = v5 |> Option.map v572 let v584 : US2 = US2_1 let v585 : US2 = v573 |> Option.defaultValue v584 let v682 : System.DateTime = match v585 with | US2_1 -> (* None *) let v666 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v667 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v667 #endif #if FABLE_COMPILER_RUST && WASM let v668 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v668 #endif #if FABLE_COMPILER_RUST && CONTRACT let v669 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v666 = v669 #endif #if FABLE_COMPILER_TYPESCRIPT let v672 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v672 #endif #if FABLE_COMPILER_PYTHON let v673 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v673 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v674 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v674 #endif #else let v675 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v675 #endif let v676 : System.DateTime = _run_target_args'_v666 v676 | US2_0(v589) -> (* Some *) let v590 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v591 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v591 #endif #if FABLE_COMPILER_RUST && WASM let v592 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v592 #endif #if FABLE_COMPILER_RUST && CONTRACT let v593 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v590 = v593 #endif #if FABLE_COMPILER_TYPESCRIPT let v596 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v596 #endif #if FABLE_COMPILER_PYTHON let v597 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v597 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v598 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v598 #endif #else let v599 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v599 #endif let v600 : System.DateTime = _run_target_args'_v590 let v605 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v606 : (System.DateTime -> int64) = _.Ticks let v607 : int64 = v606 v600 let _run_target_args'_v605 = v607 #endif #if FABLE_COMPILER_RUST && WASM let v608 : (System.DateTime -> int64) = _.Ticks let v609 : int64 = v608 v600 let _run_target_args'_v605 = v609 #endif #if FABLE_COMPILER_RUST && CONTRACT let v610 : int64 = null |> unbox<int64> let _run_target_args'_v605 = v610 #endif #if FABLE_COMPILER_TYPESCRIPT let v613 : (System.DateTime -> int64) = _.Ticks let v614 : int64 = v613 v600 let _run_target_args'_v605 = v614 #endif #if FABLE_COMPILER_PYTHON let v615 : (System.DateTime -> int64) = _.Ticks let v616 : int64 = v615 v600 let _run_target_args'_v605 = v616 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v617 : (System.DateTime -> int64) = _.Ticks let v618 : int64 = v617 v600 let _run_target_args'_v605 = v618 #endif #else let v619 : (System.DateTime -> int64) = _.Ticks let v620 : int64 = v619 v600 let _run_target_args'_v605 = v620 #endif let v621 : int64 = _run_target_args'_v605 let v638 : int64 = v621 |> int64 let v641 : int64 = v638 - v589 let v642 : System.TimeSpan = v641 |> System.TimeSpan let v647 : (System.TimeSpan -> int32) = _.Hours let v648 : int32 = v647 v642 let v651 : (System.TimeSpan -> int32) = _.Minutes let v652 : int32 = v651 v642 let v655 : (System.TimeSpan -> int32) = _.Seconds let v656 : int32 = v655 v642 let v659 : (System.TimeSpan -> int32) = _.Milliseconds let v660 : int32 = v659 v642 let v663 : System.DateTime = System.DateTime (1, 1, 1, v648, v652, v656, v660) v663 let v683 : string = method12() let v686 : bool = v683 = "" let v688 : string = if v686 then let v687 : string = "M-d-y hh:mm:ss tt" v687 else v683 let v689 : (string -> string) = v682.ToString let v690 : string = v689 v688 let _run_target_args'_v6 = v690 #endif #else let v704 : (int64 -> US2) = method10() let v705 : US2 option = v5 |> Option.map v704 let v716 : US2 = US2_1 let v717 : US2 = v705 |> Option.defaultValue v716 let v814 : System.DateTime = match v717 with | US2_1 -> (* None *) let v798 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v799 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v799 #endif #if FABLE_COMPILER_RUST && WASM let v800 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v800 #endif #if FABLE_COMPILER_RUST && CONTRACT let v801 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v798 = v801 #endif #if FABLE_COMPILER_TYPESCRIPT let v804 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v804 #endif #if FABLE_COMPILER_PYTHON let v805 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v805 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v806 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v806 #endif #else let v807 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v807 #endif let v808 : System.DateTime = _run_target_args'_v798 v808 | US2_0(v721) -> (* Some *) let v722 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v723 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v723 #endif #if FABLE_COMPILER_RUST && WASM let v724 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v724 #endif #if FABLE_COMPILER_RUST && CONTRACT let v725 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v722 = v725 #endif #if FABLE_COMPILER_TYPESCRIPT let v728 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v728 #endif #if FABLE_COMPILER_PYTHON let v729 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v729 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v730 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v730 #endif #else let v731 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v731 #endif let v732 : System.DateTime = _run_target_args'_v722 let v737 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v738 : (System.DateTime -> int64) = _.Ticks let v739 : int64 = v738 v732 let _run_target_args'_v737 = v739 #endif #if FABLE_COMPILER_RUST && WASM let v740 : (System.DateTime -> int64) = _.Ticks let v741 : int64 = v740 v732 let _run_target_args'_v737 = v741 #endif #if FABLE_COMPILER_RUST && CONTRACT let v742 : int64 = null |> unbox<int64> let _run_target_args'_v737 = v742 #endif #if FABLE_COMPILER_TYPESCRIPT let v745 : (System.DateTime -> int64) = _.Ticks let v746 : int64 = v745 v732 let _run_target_args'_v737 = v746 #endif #if FABLE_COMPILER_PYTHON let v747 : (System.DateTime -> int64) = _.Ticks let v748 : int64 = v747 v732 let _run_target_args'_v737 = v748 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v749 : (System.DateTime -> int64) = _.Ticks let v750 : int64 = v749 v732 let _run_target_args'_v737 = v750 #endif #else let v751 : (System.DateTime -> int64) = _.Ticks let v752 : int64 = v751 v732 let _run_target_args'_v737 = v752 #endif let v753 : int64 = _run_target_args'_v737 let v770 : int64 = v753 |> int64 let v773 : int64 = v770 - v721 let v774 : System.TimeSpan = v773 |> System.TimeSpan let v779 : (System.TimeSpan -> int32) = _.Hours let v780 : int32 = v779 v774 let v783 : (System.TimeSpan -> int32) = _.Minutes let v784 : int32 = v783 v774 let v787 : (System.TimeSpan -> int32) = _.Seconds let v788 : int32 = v787 v774 let v791 : (System.TimeSpan -> int32) = _.Milliseconds let v792 : int32 = v791 v774 let v795 : System.DateTime = System.DateTime (1, 1, 1, v780, v784, v788, v792) v795 let v815 : string = method12() let v818 : bool = v815 = "" let v820 : string = if v818 then let v819 : string = "M-d-y hh:mm:ss tt" v819 else v815 let v821 : (string -> string) = v814.ToString let v822 : string = v821 v820 let _run_target_args'_v6 = v822 #endif let v836 : string = _run_target_args'_v6 v836 and method15 () : string = let v0 : string = "" v0 and closure7 (v0 : Mut3, v1 : string) () : unit = let v2 : string = v0.l0 let v3 : string = v2 + v1 v0.l0 <- v3 () and method14 (v0 : char) : string = let v1 : string = method15() let v2 : Mut3 = {l0 = v1} : Mut3 let v3 : string = $"{v0}" let v6 : unit = () let v7 : (unit -> unit) = closure7(v2, v3) let v8 : unit = (fun () -> v7 (); v6) () let v11 : string = v2.l0 v11 and method16 () : string = let v0 : string = "\u001b[0m" v0 and method13 () : string = let v0 : string = "Verbose" let v1 : (unit -> string) = v0.ToLower let v2 : string = v1 () let v5 : char = v2.[int 0] let v6 : string = method14(v5) let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "inline_colorization::color_bright_black" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "&*$0" let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "&*$0" let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "&*$0" let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v23 #endif #else let v26 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v26 #endif let v29 : Ref<Str> = _run_target_args'_v10 let v34 : string = "inline_colorization::color_reset" let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 let v38 : string = "fable_library_rust::String_::fromString($0)" let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 let _run_target_args'_v7 = v39 #endif #if FABLE_COMPILER_RUST && WASM let v40 : string = "inline_colorization::color_bright_black" let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 let v42 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v43 : string = "&*$0" let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 let _run_target_args'_v42 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v45 : string = "&*$0" let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 let _run_target_args'_v42 = v46 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = "&*$0" let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 let _run_target_args'_v42 = v48 #endif #if FABLE_COMPILER_TYPESCRIPT let v49 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v49 #endif #if FABLE_COMPILER_PYTHON let v52 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v52 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v55 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v55 #endif #else let v58 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v58 #endif let v61 : Ref<Str> = _run_target_args'_v42 let v66 : string = "inline_colorization::color_reset" let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 let v70 : string = "fable_library_rust::String_::fromString($0)" let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 let _run_target_args'_v7 = v71 #endif #if FABLE_COMPILER_RUST && CONTRACT let v72 : string = "inline_colorization::color_bright_black" let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 let v74 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v75 : string = "&*$0" let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 let _run_target_args'_v74 = v76 #endif #if FABLE_COMPILER_RUST && WASM let v77 : string = "&*$0" let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 let _run_target_args'_v74 = v78 #endif #if FABLE_COMPILER_RUST && CONTRACT let v79 : string = "&*$0" let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 let _run_target_args'_v74 = v80 #endif #if FABLE_COMPILER_TYPESCRIPT let v81 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v81 #endif #if FABLE_COMPILER_PYTHON let v84 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v84 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v87 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v87 #endif #else let v90 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v90 #endif let v93 : Ref<Str> = _run_target_args'_v74 let v98 : string = "inline_colorization::color_reset" let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 let v102 : string = "fable_library_rust::String_::fromString($0)" let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 let _run_target_args'_v7 = v103 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : string = "\u001b[90m" let v105 : string = method16() let v106 : string = v104 + v6 let v107 : string = v106 + v105 let _run_target_args'_v7 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : string = "\u001b[90m" let v109 : string = method16() let v110 : string = v108 + v6 let v111 : string = v110 + v109 let _run_target_args'_v7 = v111 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v112 : string = "\u001b[90m" let v113 : string = method16() let v114 : string = v112 + v6 let v115 : string = v114 + v113 let _run_target_args'_v7 = v115 #endif #else let v116 : string = "\u001b[90m" let v117 : string = method16() let v118 : string = v116 + v6 let v119 : string = v118 + v117 let _run_target_args'_v7 = v119 #endif let v120 : string = _run_target_args'_v7 v120 and method18 (v0 : int32, v1 : string) : string = let v2 : string = method15() let v3 : Mut3 = {l0 = v2} : Mut3 let v4 : string = "{ " let v5 : string = $"{v4}" let v8 : unit = () let v9 : (unit -> unit) = closure7(v3, v5) let v10 : unit = (fun () -> v9 (); v8) () let v13 : string = "port" let v14 : string = $"{v13}" let v17 : unit = () let v18 : (unit -> unit) = closure7(v3, v14) let v19 : unit = (fun () -> v18 (); v17) () let v22 : string = " = " let v23 : string = $"{v22}" let v26 : unit = () let v27 : (unit -> unit) = closure7(v3, v23) let v28 : unit = (fun () -> v27 (); v26) () let v31 : string = $"{v0}" let v34 : unit = () let v35 : (unit -> unit) = closure7(v3, v31) let v36 : unit = (fun () -> v35 (); v34) () let v39 : string = "; " let v40 : string = $"{v39}" let v43 : unit = () let v44 : (unit -> unit) = closure7(v3, v40) let v45 : unit = (fun () -> v44 (); v43) () let v48 : string = "ex" let v49 : string = $"{v48}" let v52 : unit = () let v53 : (unit -> unit) = closure7(v3, v49) let v54 : unit = (fun () -> v53 (); v52) () let v57 : string = $"{v22}" let v60 : unit = () let v61 : (unit -> unit) = closure7(v3, v57) let v62 : unit = (fun () -> v61 (); v60) () let v65 : string = $"{v1}" let v68 : unit = () let v69 : (unit -> unit) = closure7(v3, v65) let v70 : unit = (fun () -> v69 (); v68) () let v73 : string = " }" let v74 : string = $"{v73}" let v77 : unit = () let v78 : (unit -> unit) = closure7(v3, v74) let v79 : unit = (fun () -> v78 (); v77) () let v82 : string = v3.l0 v82 and method19 (v0 : string) : string = let v1 : char list = [] let v2 : (char list -> (char [])) = List.toArray let v3 : (char []) = v2 v1 let v6 : string = v0.TrimStart v3 let v30 : char list = [] let v31 : char list = '/' :: v30 let v34 : char list = ' ' :: v31 let v37 : (char list -> (char [])) = List.toArray let v38 : (char []) = v37 v34 let v41 : string = v6.TrimEnd v38 v41 and method17 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string = let v10 : string = method18(v8, v9) let v11 : int64 = v0.l0 let v12 : string = "networking.test_port_open" let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}" method19(v13) and closure8 (v0 : Mut0) () : unit = let v1 : int64 = v0.l0 let v2 : int64 = v1 + 1L v0.l0 <- v2 () and closure10 (v0 : string) () : unit = let v1 : (string -> unit) = System.Console.WriteLine v1 v0 and closure9 () (v0 : string) : unit = let v1 : unit = () let v2 : (unit -> unit) = closure10(v0) let v3 : unit = (fun () -> v2 (); v1) () () and method20 (v0 : string) : unit = let v1 : unit = () let v2 : (unit -> unit) = closure0() let v3 : unit = (fun () -> v2 (); v1) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value let v35 : unit = () let v36 : (unit -> unit) = closure8(v17) let v37 : unit = (fun () -> v36 (); v35) () let v40 : (string -> unit) = closure9() let v41 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v42 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v0 v42 #endif #if FABLE_COMPILER_RUST && WASM let v43 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v0 v43 #endif #if FABLE_COMPILER_RUST && CONTRACT let v44 : string = v20.l0 let v45 : bool = v44 = "" let v53 : string = if v45 then v0 else let v46 : bool = v0 = "" if v46 then let v47 : string = v20.l0 v47 else let v48 : string = v20.l0 let v49 : string = "\n" let v50 : string = v48 + v49 let v51 : string = v50 + v0 v51 let v54 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v55 : string = "&*$0" let v56 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v55 let _run_target_args'_v54 = v56 #endif #if FABLE_COMPILER_RUST && WASM let v57 : string = "&*$0" let v58 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v57 let _run_target_args'_v54 = v58 #endif #if FABLE_COMPILER_RUST && CONTRACT let v59 : string = "&*$0" let v60 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v59 let _run_target_args'_v54 = v60 #endif #if FABLE_COMPILER_TYPESCRIPT let v61 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v61 #endif #if FABLE_COMPILER_PYTHON let v64 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v64 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v67 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v67 #endif #else let v70 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v70 #endif let v73 : Ref<Str> = _run_target_args'_v54 let v78 : string = $"$0.chars()" let v79 : Mut<_> = Fable.Core.RustInterop.emitRustExpr v73 v78 let v80 : string = "$0" let v81 : _ = Fable.Core.RustInterop.emitRustExpr v79 v80 let v82 : string = "$0.collect::<Vec<_>>()" let v83 : Vec<char> = Fable.Core.RustInterop.emitRustExpr v81 v82 let v84 : string = "$0.chunks(15000).map(|x| x.into_iter().map(|x| x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()" let v85 : Vec<Vec<char>> = Fable.Core.RustInterop.emitRustExpr v83 v84 let v86 : string = "true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //" let v87 : bool = Fable.Core.RustInterop.emitRustExpr v85 v86 let v88 : string = "x" let v89 : Vec<char> = Fable.Core.RustInterop.emitRustExpr () v88 let v90 : string = "String::from_iter($0)" let v91 : std_string_String = Fable.Core.RustInterop.emitRustExpr v89 v90 let v92 : string = "true; $0 }).collect::<Vec<_>>()" let v93 : bool = Fable.Core.RustInterop.emitRustExpr v91 v92 let v94 : string = "_vec_map" let v95 : Vec<std_string_String> = Fable.Core.RustInterop.emitRustExpr () v94 let v96 : string = "$0.len()" let v97 : unativeint = Fable.Core.RustInterop.emitRustExpr v95 v96 let v98 : int32 = v97 |> int32 let v105 : string = "" let v106 : bool = v0 <> v105 let v110 : bool = if v106 then let v109 : bool = v98 <= 1 v109 else false if v110 then v20.l0 <- v53 () else v20.l0 <- v105 let v111 : string = "true; $0.into_iter().for_each(|x| { //" let v112 : bool = Fable.Core.RustInterop.emitRustExpr v95 v111 let v113 : string = "x" let v114 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v113 let v115 : string = $"true; near_sdk::log!(\"{{}}\", $0)" let v116 : bool = Fable.Core.RustInterop.emitRustExpr v114 v115 let v117 : string = $"true" let v118 : bool = Fable.Core.RustInterop.emitRustExpr () v117 let v119 : string = "true; }); //" let v120 : bool = Fable.Core.RustInterop.emitRustExpr () v119 () #endif #if FABLE_COMPILER_TYPESCRIPT v40 v0 #endif #if FABLE_COMPILER_PYTHON v40 v0 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON v40 v0 #endif #else v40 v0 #endif // run_target_args' is_unit let v121 : (string -> unit) = v18.l0 v121 v0 and closure5 (v0 : int32, v1 : exn) () : unit = let v2 : US0 = US0_0 let v3 : bool = method8(v2) if v3 then let v4 : unit = () let v5 : (unit -> unit) = closure0() let v6 : unit = (fun () -> v5 (); v4) () let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value let v38 : string = method9(v20, v21, v22, v23, v24, v25) let v39 : string = method13() let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : string = $"%A{v1}" let _run_target_args'_v40 = v41 #endif #if FABLE_COMPILER_RUST && WASM let v44 : string = $"%A{v1}" let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = $"%A{v1}" let _run_target_args'_v40 = v47 #endif #if FABLE_COMPILER_TYPESCRIPT let v50 : string = $"%A{v1}" let _run_target_args'_v40 = v50 #endif #if FABLE_COMPILER_PYTHON let v53 : string = $"%A{v1}" let _run_target_args'_v40 = v53 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v56 : string = $"%A{v1}" let _run_target_args'_v40 = v56 #endif #else let v59 : string = $"{v1.GetType ()}: {v1.Message}" let _run_target_args'_v40 = v59 #endif let v60 : string = _run_target_args'_v40 let v65 : string = method17(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60) method20(v65) and method7 (v0 : string, v1 : int32) : Async<bool> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let v15 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v15 = v15 let v16 : System.Threading.CancellationToken = v15 let v17 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v18 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v18 #endif #if FABLE_COMPILER_RUST && WASM let v21 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v21 #endif #if FABLE_COMPILER_RUST && CONTRACT let v24 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v24 #endif #if FABLE_COMPILER_TYPESCRIPT let v27 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v27 #endif #if FABLE_COMPILER_PYTHON let v30 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v30 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v33 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v33 #endif #else let v36 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v17 = v36 #endif let v37 : System_Net_Sockets_TcpClient = _run_target_args'_v17 use v37 = v37 let v42 : System_Net_Sockets_TcpClient = v37 try let v43 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v44 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v47 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v47 #endif #if FABLE_COMPILER_RUST && CONTRACT let v50 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v50 #endif #if FABLE_COMPILER_TYPESCRIPT let v53 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v53 #endif #if FABLE_COMPILER_PYTHON let v56 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v56 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v59 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v59 #endif #else let v62 : System.Threading.Tasks.ValueTask = v42.ConnectAsync (v0, v1, v16) let _run_target_args'_v43 = v62 #endif let v63 : System.Threading.Tasks.ValueTask = _run_target_args'_v43 let v68 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v69 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v69 #endif #if FABLE_COMPILER_RUST && WASM let v72 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v72 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v78 #endif #if FABLE_COMPILER_PYTHON let v81 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v81 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v84 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v84 #endif #else let v87 : (unit -> System.Threading.Tasks.Task) = v63.AsTask let v88 : System.Threading.Tasks.Task = v87 () let _run_target_args'_v68 = v88 #endif let v89 : System.Threading.Tasks.Task = _run_target_args'_v68 let v94 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v95 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v95 #endif #if FABLE_COMPILER_RUST && WASM let v98 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v98 #endif #if FABLE_COMPILER_RUST && CONTRACT let v101 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v101 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v105 : Async<unit> = v104 v89 let _run_target_args'_v94 = v105 #endif #if FABLE_COMPILER_PYTHON let v106 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v107 : Async<unit> = v106 v89 let _run_target_args'_v94 = v107 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v108 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v109 : Async<unit> = v108 v89 let _run_target_args'_v94 = v109 #endif #else let v110 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v111 : Async<unit> = v110 v89 let _run_target_args'_v94 = v111 #endif let v112 : Async<unit> = _run_target_args'_v94 do! v112 return true (* indent () indent *) with ex -> let v191 : exn = ex let v192 : unit = () let v193 : (unit -> unit) = closure5(v1, v191) let v194 : unit = (fun () -> v193 (); v192) () return false (* indent () indent *) (* try_unit let v327 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v2535 : Async<bool> = _let'_v12 let _run_target_args'_v2 = v2535 #endif #if FABLE_COMPILER_PYTHON let v2536 : unit = () let _let'_v2536 = async { let v2539 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v2539 = v2539 let v2540 : System.Threading.CancellationToken = v2539 let v2541 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2542 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2542 #endif #if FABLE_COMPILER_RUST && WASM let v2545 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2545 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2548 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2548 #endif #if FABLE_COMPILER_TYPESCRIPT let v2551 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2551 #endif #if FABLE_COMPILER_PYTHON let v2554 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2554 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2557 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2557 #endif #else let v2560 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v2541 = v2560 #endif let v2561 : System_Net_Sockets_TcpClient = _run_target_args'_v2541 use v2561 = v2561 let v2566 : System_Net_Sockets_TcpClient = v2561 try let v2567 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2568 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2568 #endif #if FABLE_COMPILER_RUST && WASM let v2571 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2571 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2574 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2574 #endif #if FABLE_COMPILER_TYPESCRIPT let v2577 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2577 #endif #if FABLE_COMPILER_PYTHON let v2580 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2580 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2583 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2583 #endif #else let v2586 : System.Threading.Tasks.ValueTask = v2566.ConnectAsync (v0, v1, v2540) let _run_target_args'_v2567 = v2586 #endif let v2587 : System.Threading.Tasks.ValueTask = _run_target_args'_v2567 let v2592 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2593 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2593 #endif #if FABLE_COMPILER_RUST && WASM let v2596 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2596 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2599 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2599 #endif #if FABLE_COMPILER_TYPESCRIPT let v2602 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2602 #endif #if FABLE_COMPILER_PYTHON let v2605 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2605 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2608 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2608 #endif #else let v2611 : (unit -> System.Threading.Tasks.Task) = v2587.AsTask let v2612 : System.Threading.Tasks.Task = v2611 () let _run_target_args'_v2592 = v2612 #endif let v2613 : System.Threading.Tasks.Task = _run_target_args'_v2592 let v2618 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2619 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2619 #endif #if FABLE_COMPILER_RUST && WASM let v2622 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2622 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2625 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2625 #endif #if FABLE_COMPILER_TYPESCRIPT let v2628 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2629 : Async<unit> = v2628 v2613 let _run_target_args'_v2618 = v2629 #endif #if FABLE_COMPILER_PYTHON let v2630 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2631 : Async<unit> = v2630 v2613 let _run_target_args'_v2618 = v2631 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2632 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2633 : Async<unit> = v2632 v2613 let _run_target_args'_v2618 = v2633 #endif #else let v2634 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2635 : Async<unit> = v2634 v2613 let _run_target_args'_v2618 = v2635 #endif let v2636 : Async<unit> = _run_target_args'_v2618 do! v2636 return true (* indent () indent *) with ex -> let v2715 : exn = ex let v2716 : unit = () let v2717 : (unit -> unit) = closure5(v1, v2715) let v2718 : unit = (fun () -> v2717 (); v2716) () return false (* indent () indent *) (* try_unit let v2851 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v5059 : Async<bool> = _let'_v2536 let _run_target_args'_v2 = v5059 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5060 : unit = () let _let'_v5060 = async { let v5063 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v5063 = v5063 let v5064 : System.Threading.CancellationToken = v5063 let v5065 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5066 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5066 #endif #if FABLE_COMPILER_RUST && WASM let v5069 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5069 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5072 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5072 #endif #if FABLE_COMPILER_TYPESCRIPT let v5075 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5075 #endif #if FABLE_COMPILER_PYTHON let v5078 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5078 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5081 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5081 #endif #else let v5084 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v5065 = v5084 #endif let v5085 : System_Net_Sockets_TcpClient = _run_target_args'_v5065 use v5085 = v5085 let v5090 : System_Net_Sockets_TcpClient = v5085 try let v5091 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5092 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5092 #endif #if FABLE_COMPILER_RUST && WASM let v5095 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5095 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5098 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5098 #endif #if FABLE_COMPILER_TYPESCRIPT let v5101 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5101 #endif #if FABLE_COMPILER_PYTHON let v5104 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5104 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5107 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5107 #endif #else let v5110 : System.Threading.Tasks.ValueTask = v5090.ConnectAsync (v0, v1, v5064) let _run_target_args'_v5091 = v5110 #endif let v5111 : System.Threading.Tasks.ValueTask = _run_target_args'_v5091 let v5116 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5117 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5117 #endif #if FABLE_COMPILER_RUST && WASM let v5120 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5120 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5123 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5123 #endif #if FABLE_COMPILER_TYPESCRIPT let v5126 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5126 #endif #if FABLE_COMPILER_PYTHON let v5129 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5129 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5132 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5132 #endif #else let v5135 : (unit -> System.Threading.Tasks.Task) = v5111.AsTask let v5136 : System.Threading.Tasks.Task = v5135 () let _run_target_args'_v5116 = v5136 #endif let v5137 : System.Threading.Tasks.Task = _run_target_args'_v5116 let v5142 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5143 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5143 #endif #if FABLE_COMPILER_RUST && WASM let v5146 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5146 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5149 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5149 #endif #if FABLE_COMPILER_TYPESCRIPT let v5152 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5153 : Async<unit> = v5152 v5137 let _run_target_args'_v5142 = v5153 #endif #if FABLE_COMPILER_PYTHON let v5154 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5155 : Async<unit> = v5154 v5137 let _run_target_args'_v5142 = v5155 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5156 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5157 : Async<unit> = v5156 v5137 let _run_target_args'_v5142 = v5157 #endif #else let v5158 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5159 : Async<unit> = v5158 v5137 let _run_target_args'_v5142 = v5159 #endif let v5160 : Async<unit> = _run_target_args'_v5142 do! v5160 return true (* indent () indent *) with ex -> let v5239 : exn = ex let v5240 : unit = () let v5241 : (unit -> unit) = closure5(v1, v5239) let v5242 : unit = (fun () -> v5241 (); v5240) () return false (* indent () indent *) (* try_unit let v5375 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v7583 : Async<bool> = _let'_v5060 let _run_target_args'_v2 = v7583 #endif #else let v7584 : unit = () let _let'_v7584 = async { let v7587 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v7587 = v7587 let v7588 : System.Threading.CancellationToken = v7587 let v7589 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7590 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7590 #endif #if FABLE_COMPILER_RUST && WASM let v7593 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7593 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7596 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7596 #endif #if FABLE_COMPILER_TYPESCRIPT let v7599 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7599 #endif #if FABLE_COMPILER_PYTHON let v7602 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7602 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7605 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7605 #endif #else let v7608 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v7589 = v7608 #endif let v7609 : System_Net_Sockets_TcpClient = _run_target_args'_v7589 use v7609 = v7609 let v7614 : System_Net_Sockets_TcpClient = v7609 try let v7615 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7616 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7616 #endif #if FABLE_COMPILER_RUST && WASM let v7619 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7619 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7622 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7622 #endif #if FABLE_COMPILER_TYPESCRIPT let v7625 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7625 #endif #if FABLE_COMPILER_PYTHON let v7628 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7628 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7631 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7631 #endif #else let v7634 : System.Threading.Tasks.ValueTask = v7614.ConnectAsync (v0, v1, v7588) let _run_target_args'_v7615 = v7634 #endif let v7635 : System.Threading.Tasks.ValueTask = _run_target_args'_v7615 let v7640 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7641 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7641 #endif #if FABLE_COMPILER_RUST && WASM let v7644 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7644 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7647 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7647 #endif #if FABLE_COMPILER_TYPESCRIPT let v7650 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7650 #endif #if FABLE_COMPILER_PYTHON let v7653 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7653 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7656 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7656 #endif #else let v7659 : (unit -> System.Threading.Tasks.Task) = v7635.AsTask let v7660 : System.Threading.Tasks.Task = v7659 () let _run_target_args'_v7640 = v7660 #endif let v7661 : System.Threading.Tasks.Task = _run_target_args'_v7640 let v7666 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7667 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7667 #endif #if FABLE_COMPILER_RUST && WASM let v7670 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7670 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7673 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7673 #endif #if FABLE_COMPILER_TYPESCRIPT let v7676 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7677 : Async<unit> = v7676 v7661 let _run_target_args'_v7666 = v7677 #endif #if FABLE_COMPILER_PYTHON let v7678 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7679 : Async<unit> = v7678 v7661 let _run_target_args'_v7666 = v7679 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7680 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7681 : Async<unit> = v7680 v7661 let _run_target_args'_v7666 = v7681 #endif #else let v7682 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7683 : Async<unit> = v7682 v7661 let _run_target_args'_v7666 = v7683 #endif let v7684 : Async<unit> = _run_target_args'_v7666 do! v7684 return true (* indent () indent *) with ex -> let v7763 : exn = ex let v7764 : unit = () let v7765 : (unit -> unit) = closure5(v1, v7763) let v7766 : unit = (fun () -> v7765 (); v7764) () return false (* indent () indent *) (* try_unit let v7899 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v10107 : Async<bool> = _let'_v7584 let _run_target_args'_v2 = v10107 #endif let v10108 : Async<bool> = _run_target_args'_v2 v10108 and method6 (v0 : string, v1 : int32) : Async<bool> = method7(v0, v1) and closure4 (v0 : string) (v1 : int32) : Async<bool> = method6(v0, v1) and closure3 () (v0 : string) : (int32 -> Async<bool>) = closure4(v0) and closure14 () (v0 : bool) : US7 = US7_0(v0) and method26 () : (bool -> US7) = closure14() and closure15 () (v0 : exn) : US7 = US7_1(v0) and method27 () : (exn -> US7) = closure15() and method25 (v0 : Async<Choice<bool, exn>>) : Async<US7> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : unit = () let _let'_v11 = async { let! v0 = v0 let v14 : Choice<bool, exn> = v0 let v15 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v16 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v16 #endif #if FABLE_COMPILER_RUST && WASM let v19 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v19 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v22 #endif #if FABLE_COMPILER_TYPESCRIPT let v25 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v25 #endif #if FABLE_COMPILER_PYTHON let v28 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v28 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v31 : (bool -> US7) = method26() let v32 : (exn -> US7) = method27() let v33 : US7 = match v14 with Choice1Of2 x -> v31 x | Choice2Of2 x -> v32 x let _run_target_args'_v15 = v33 #endif #else let v34 : (bool -> US7) = method26() let v35 : (exn -> US7) = method27() let v36 : US7 = match v14 with Choice1Of2 x -> v34 x | Choice2Of2 x -> v35 x let _run_target_args'_v15 = v36 #endif let v37 : US7 = _run_target_args'_v15 return v37 (* indent () indent *) } (* indent () indent *) let v238 : Async<US7> = _let'_v11 let _run_target_args'_v1 = v238 #endif #if FABLE_COMPILER_PYTHON let v239 : unit = () let _let'_v239 = async { let! v0 = v0 let v242 : Choice<bool, exn> = v0 let v243 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v244 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v244 #endif #if FABLE_COMPILER_RUST && WASM let v247 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v247 #endif #if FABLE_COMPILER_RUST && CONTRACT let v250 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v250 #endif #if FABLE_COMPILER_TYPESCRIPT let v253 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v253 #endif #if FABLE_COMPILER_PYTHON let v256 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v256 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v259 : (bool -> US7) = method26() let v260 : (exn -> US7) = method27() let v261 : US7 = match v242 with Choice1Of2 x -> v259 x | Choice2Of2 x -> v260 x let _run_target_args'_v243 = v261 #endif #else let v262 : (bool -> US7) = method26() let v263 : (exn -> US7) = method27() let v264 : US7 = match v242 with Choice1Of2 x -> v262 x | Choice2Of2 x -> v263 x let _run_target_args'_v243 = v264 #endif let v265 : US7 = _run_target_args'_v243 return v265 (* indent () indent *) } (* indent () indent *) let v466 : Async<US7> = _let'_v239 let _run_target_args'_v1 = v466 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v467 : unit = () let _let'_v467 = async { let! v0 = v0 let v470 : Choice<bool, exn> = v0 let v471 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v472 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v472 #endif #if FABLE_COMPILER_RUST && WASM let v475 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v475 #endif #if FABLE_COMPILER_RUST && CONTRACT let v478 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v478 #endif #if FABLE_COMPILER_TYPESCRIPT let v481 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v481 #endif #if FABLE_COMPILER_PYTHON let v484 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v484 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v487 : (bool -> US7) = method26() let v488 : (exn -> US7) = method27() let v489 : US7 = match v470 with Choice1Of2 x -> v487 x | Choice2Of2 x -> v488 x let _run_target_args'_v471 = v489 #endif #else let v490 : (bool -> US7) = method26() let v491 : (exn -> US7) = method27() let v492 : US7 = match v470 with Choice1Of2 x -> v490 x | Choice2Of2 x -> v491 x let _run_target_args'_v471 = v492 #endif let v493 : US7 = _run_target_args'_v471 return v493 (* indent () indent *) } (* indent () indent *) let v694 : Async<US7> = _let'_v467 let _run_target_args'_v1 = v694 #endif #else let v695 : unit = () let _let'_v695 = async { let! v0 = v0 let v698 : Choice<bool, exn> = v0 let v699 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v700 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v700 #endif #if FABLE_COMPILER_RUST && WASM let v703 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v703 #endif #if FABLE_COMPILER_RUST && CONTRACT let v706 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v706 #endif #if FABLE_COMPILER_TYPESCRIPT let v709 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v709 #endif #if FABLE_COMPILER_PYTHON let v712 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v712 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v715 : (bool -> US7) = method26() let v716 : (exn -> US7) = method27() let v717 : US7 = match v698 with Choice1Of2 x -> v715 x | Choice2Of2 x -> v716 x let _run_target_args'_v699 = v717 #endif #else let v718 : (bool -> US7) = method26() let v719 : (exn -> US7) = method27() let v720 : US7 = match v698 with Choice1Of2 x -> v718 x | Choice2Of2 x -> v719 x let _run_target_args'_v699 = v720 #endif let v721 : US7 = _run_target_args'_v699 return v721 (* indent () indent *) } (* indent () indent *) let v922 : Async<US7> = _let'_v695 let _run_target_args'_v1 = v922 #endif let v923 : Async<US7> = _run_target_args'_v1 v923 and method28 (v0 : Async<US7>) : Async<US8> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : unit = () let _let'_v11 = async { let! v0 = v0 let v14 : US7 = v0 let v20 : US8 = match v14 with | US7_0(v15) -> (* C1of2 *) US8_0(v15) | US7_1(v17) -> (* C2of2 *) US8_1(v17) return v20 (* indent () indent *) } (* indent () indent *) let v70 : Async<US8> = _let'_v11 let _run_target_args'_v1 = v70 #endif #if FABLE_COMPILER_PYTHON let v71 : unit = () let _let'_v71 = async { let! v0 = v0 let v74 : US7 = v0 let v80 : US8 = match v74 with | US7_0(v75) -> (* C1of2 *) US8_0(v75) | US7_1(v77) -> (* C2of2 *) US8_1(v77) return v80 (* indent () indent *) } (* indent () indent *) let v130 : Async<US8> = _let'_v71 let _run_target_args'_v1 = v130 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v131 : unit = () let _let'_v131 = async { let! v0 = v0 let v134 : US7 = v0 let v140 : US8 = match v134 with | US7_0(v135) -> (* C1of2 *) US8_0(v135) | US7_1(v137) -> (* C2of2 *) US8_1(v137) return v140 (* indent () indent *) } (* indent () indent *) let v190 : Async<US8> = _let'_v131 let _run_target_args'_v1 = v190 #endif #else let v191 : unit = () let _let'_v191 = async { let! v0 = v0 let v194 : US7 = v0 let v200 : US8 = match v194 with | US7_0(v195) -> (* C1of2 *) US8_0(v195) | US7_1(v197) -> (* C2of2 *) US8_1(v197) return v200 (* indent () indent *) } (* indent () indent *) let v250 : Async<US8> = _let'_v191 let _run_target_args'_v1 = v250 #endif let v251 : Async<US8> = _run_target_args'_v1 v251 and method31 (v0 : int32) : string = let v1 : string = method15() let v2 : Mut3 = {l0 = v1} : Mut3 let v3 : string = "{ " let v4 : string = $"{v3}" let v7 : unit = () let v8 : (unit -> unit) = closure7(v2, v4) let v9 : unit = (fun () -> v8 (); v7) () let v12 : string = "timeout" let v13 : string = $"{v12}" let v16 : unit = () let v17 : (unit -> unit) = closure7(v2, v13) let v18 : unit = (fun () -> v17 (); v16) () let v21 : string = " = " let v22 : string = $"{v21}" let v25 : unit = () let v26 : (unit -> unit) = closure7(v2, v22) let v27 : unit = (fun () -> v26 (); v25) () let v30 : string = $"{v0}" let v33 : unit = () let v34 : (unit -> unit) = closure7(v2, v30) let v35 : unit = (fun () -> v34 (); v33) () let v38 : string = " }" let v39 : string = $"{v38}" let v42 : unit = () let v43 : (unit -> unit) = closure7(v2, v39) let v44 : unit = (fun () -> v43 (); v42) () let v47 : string = v2.l0 v47 and method30 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32) : string = let v9 : string = method31(v8) let v10 : int64 = v0.l0 let v11 : string = "async.run_with_timeout_async" let v12 : string = $"{v6} {v7} #{v10} %s{v11} / {v9}" method19(v12) and closure16 (v0 : int32) () : unit = let v1 : US0 = US0_0 let v2 : bool = method8(v1) if v2 then let v3 : unit = () let v4 : (unit -> unit) = closure0() let v5 : unit = (fun () -> v4 (); v3) () let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : Mut4, v24 : int64 option) = TraceState.trace_state.Value let v37 : string = method9(v19, v20, v21, v22, v23, v24) let v38 : string = method13() let v39 : string = method30(v19, v20, v21, v22, v23, v24, v37, v38, v0) method20(v39) and method32 () : string = let v0 : string = "Critical" let v1 : (unit -> string) = v0.ToLower let v2 : string = v1 () let v5 : char = v2.[int 0] let v6 : string = method14(v5) let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "inline_colorization::color_bright_red" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "&*$0" let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "&*$0" let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "&*$0" let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v23 #endif #else let v26 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v26 #endif let v29 : Ref<Str> = _run_target_args'_v10 let v34 : string = "inline_colorization::color_reset" let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 let v38 : string = "fable_library_rust::String_::fromString($0)" let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 let _run_target_args'_v7 = v39 #endif #if FABLE_COMPILER_RUST && WASM let v40 : string = "inline_colorization::color_bright_red" let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 let v42 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v43 : string = "&*$0" let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 let _run_target_args'_v42 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v45 : string = "&*$0" let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 let _run_target_args'_v42 = v46 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = "&*$0" let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 let _run_target_args'_v42 = v48 #endif #if FABLE_COMPILER_TYPESCRIPT let v49 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v49 #endif #if FABLE_COMPILER_PYTHON let v52 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v52 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v55 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v55 #endif #else let v58 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v58 #endif let v61 : Ref<Str> = _run_target_args'_v42 let v66 : string = "inline_colorization::color_reset" let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 let v70 : string = "fable_library_rust::String_::fromString($0)" let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 let _run_target_args'_v7 = v71 #endif #if FABLE_COMPILER_RUST && CONTRACT let v72 : string = "inline_colorization::color_bright_red" let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 let v74 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v75 : string = "&*$0" let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 let _run_target_args'_v74 = v76 #endif #if FABLE_COMPILER_RUST && WASM let v77 : string = "&*$0" let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 let _run_target_args'_v74 = v78 #endif #if FABLE_COMPILER_RUST && CONTRACT let v79 : string = "&*$0" let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 let _run_target_args'_v74 = v80 #endif #if FABLE_COMPILER_TYPESCRIPT let v81 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v81 #endif #if FABLE_COMPILER_PYTHON let v84 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v84 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v87 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v87 #endif #else let v90 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v90 #endif let v93 : Ref<Str> = _run_target_args'_v74 let v98 : string = "inline_colorization::color_reset" let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 let v102 : string = "fable_library_rust::String_::fromString($0)" let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 let _run_target_args'_v7 = v103 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : string = "\u001b[91m" let v105 : string = method16() let v106 : string = v104 + v6 let v107 : string = v106 + v105 let _run_target_args'_v7 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : string = "\u001b[91m" let v109 : string = method16() let v110 : string = v108 + v6 let v111 : string = v110 + v109 let _run_target_args'_v7 = v111 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v112 : string = "\u001b[91m" let v113 : string = method16() let v114 : string = v112 + v6 let v115 : string = v114 + v113 let _run_target_args'_v7 = v115 #endif #else let v116 : string = "\u001b[91m" let v117 : string = method16() let v118 : string = v116 + v6 let v119 : string = v118 + v117 let _run_target_args'_v7 = v119 #endif let v120 : string = _run_target_args'_v7 v120 and method34 (v0 : int32, v1 : string) : string = let v2 : string = method15() let v3 : Mut3 = {l0 = v2} : Mut3 let v4 : string = "{ " let v5 : string = $"{v4}" let v8 : unit = () let v9 : (unit -> unit) = closure7(v3, v5) let v10 : unit = (fun () -> v9 (); v8) () let v13 : string = "timeout" let v14 : string = $"{v13}" let v17 : unit = () let v18 : (unit -> unit) = closure7(v3, v14) let v19 : unit = (fun () -> v18 (); v17) () let v22 : string = " = " let v23 : string = $"{v22}" let v26 : unit = () let v27 : (unit -> unit) = closure7(v3, v23) let v28 : unit = (fun () -> v27 (); v26) () let v31 : string = $"{v0}" let v34 : unit = () let v35 : (unit -> unit) = closure7(v3, v31) let v36 : unit = (fun () -> v35 (); v34) () let v39 : string = "; " let v40 : string = $"{v39}" let v43 : unit = () let v44 : (unit -> unit) = closure7(v3, v40) let v45 : unit = (fun () -> v44 (); v43) () let v48 : string = "ex" let v49 : string = $"{v48}" let v52 : unit = () let v53 : (unit -> unit) = closure7(v3, v49) let v54 : unit = (fun () -> v53 (); v52) () let v57 : string = $"{v22}" let v60 : unit = () let v61 : (unit -> unit) = closure7(v3, v57) let v62 : unit = (fun () -> v61 (); v60) () let v65 : string = $"{v1}" let v68 : unit = () let v69 : (unit -> unit) = closure7(v3, v65) let v70 : unit = (fun () -> v69 (); v68) () let v73 : string = " }" let v74 : string = $"{v73}" let v77 : unit = () let v78 : (unit -> unit) = closure7(v3, v74) let v79 : unit = (fun () -> v78 (); v77) () let v82 : string = v3.l0 v82 and method33 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string = let v10 : string = method34(v8, v9) let v11 : int64 = v0.l0 let v12 : string = "async.run_with_timeout_async**" let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}" method19(v13) and closure17 (v0 : int32, v1 : exn) () : unit = let v2 : US0 = US0_4 let v3 : bool = method8(v2) if v3 then let v4 : unit = () let v5 : (unit -> unit) = closure0() let v6 : unit = (fun () -> v5 (); v4) () let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value let v38 : string = method9(v20, v21, v22, v23, v24, v25) let v39 : string = method32() let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : string = $"%A{v1}" let _run_target_args'_v40 = v41 #endif #if FABLE_COMPILER_RUST && WASM let v44 : string = $"%A{v1}" let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = $"%A{v1}" let _run_target_args'_v40 = v47 #endif #if FABLE_COMPILER_TYPESCRIPT let v50 : string = $"%A{v1}" let _run_target_args'_v40 = v50 #endif #if FABLE_COMPILER_PYTHON let v53 : string = $"%A{v1}" let _run_target_args'_v40 = v53 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v56 : string = $"%A{v1}" let _run_target_args'_v40 = v56 #endif #else let v59 : string = $"{v1.GetType ()}: {v1.Message}" let _run_target_args'_v40 = v59 #endif let v60 : string = _run_target_args'_v40 let v65 : string = method33(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60) method20(v65) and method29 (v0 : int32, v1 : Async<US8>) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let! v1 = v1 let v15 : US8 = v1 let v139 : US6 = match v15 with | US8_1(v18) -> (* Error *) let v19 : string = $"%A{v18}" let v22 : string = "System.TimeoutException" let v23 : bool = v19.Contains v22 if v23 then let v26 : unit = () let v27 : (unit -> unit) = closure16(v0) let v28 : unit = (fun () -> v27 (); v26) () US6_1 else let v69 : unit = () let v70 : (unit -> unit) = closure17(v0, v18) let v71 : unit = (fun () -> v70 (); v69) () US6_1 | US8_0(v16) -> (* Ok *) US6_0(v16) return v139 (* indent () indent *) } (* indent () indent *) let v1015 : Async<US6> = _let'_v12 let _run_target_args'_v2 = v1015 #endif #if FABLE_COMPILER_PYTHON let v1016 : unit = () let _let'_v1016 = async { let! v1 = v1 let v1019 : US8 = v1 let v1143 : US6 = match v1019 with | US8_1(v1022) -> (* Error *) let v1023 : string = $"%A{v1022}" let v1026 : string = "System.TimeoutException" let v1027 : bool = v1023.Contains v1026 if v1027 then let v1030 : unit = () let v1031 : (unit -> unit) = closure16(v0) let v1032 : unit = (fun () -> v1031 (); v1030) () US6_1 else let v1073 : unit = () let v1074 : (unit -> unit) = closure17(v0, v1022) let v1075 : unit = (fun () -> v1074 (); v1073) () US6_1 | US8_0(v1020) -> (* Ok *) US6_0(v1020) return v1143 (* indent () indent *) } (* indent () indent *) let v2019 : Async<US6> = _let'_v1016 let _run_target_args'_v2 = v2019 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2020 : unit = () let _let'_v2020 = async { let! v1 = v1 let v2023 : US8 = v1 let v2147 : US6 = match v2023 with | US8_1(v2026) -> (* Error *) let v2027 : string = $"%A{v2026}" let v2030 : string = "System.TimeoutException" let v2031 : bool = v2027.Contains v2030 if v2031 then let v2034 : unit = () let v2035 : (unit -> unit) = closure16(v0) let v2036 : unit = (fun () -> v2035 (); v2034) () US6_1 else let v2077 : unit = () let v2078 : (unit -> unit) = closure17(v0, v2026) let v2079 : unit = (fun () -> v2078 (); v2077) () US6_1 | US8_0(v2024) -> (* Ok *) US6_0(v2024) return v2147 (* indent () indent *) } (* indent () indent *) let v3023 : Async<US6> = _let'_v2020 let _run_target_args'_v2 = v3023 #endif #else let v3024 : unit = () let _let'_v3024 = async { let! v1 = v1 let v3027 : US8 = v1 let v3151 : US6 = match v3027 with | US8_1(v3030) -> (* Error *) let v3031 : string = $"%A{v3030}" let v3034 : string = "System.TimeoutException" let v3035 : bool = v3031.Contains v3034 if v3035 then let v3038 : unit = () let v3039 : (unit -> unit) = closure16(v0) let v3040 : unit = (fun () -> v3039 (); v3038) () US6_1 else let v3081 : unit = () let v3082 : (unit -> unit) = closure17(v0, v3030) let v3083 : unit = (fun () -> v3082 (); v3081) () US6_1 | US8_0(v3028) -> (* Ok *) US6_0(v3028) return v3151 (* indent () indent *) } (* indent () indent *) let v4027 : Async<US6> = _let'_v3024 let _run_target_args'_v2 = v4027 #endif let v4028 : Async<US6> = _run_target_args'_v2 v4028 and method24 (v0 : Async<bool>, v1 : int32) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let v15 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v16 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v16 #endif #if FABLE_COMPILER_RUST && WASM let v19 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v19 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v22 #endif #if FABLE_COMPILER_TYPESCRIPT let v25 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v25 #endif #if FABLE_COMPILER_PYTHON let v26 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v26 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v27 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v27 #endif #else let v28 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v28 #endif let v29 : Async<Async<bool>> = _run_target_args'_v15 let! v29 = v29 let v34 : Async<bool> = v29 let v35 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v36 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v36 #endif #if FABLE_COMPILER_RUST && WASM let v39 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v39 #endif #if FABLE_COMPILER_RUST && CONTRACT let v42 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v42 #endif #if FABLE_COMPILER_TYPESCRIPT let v45 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v46 : Async<Choice<bool, exn>> = v45 v34 let _run_target_args'_v35 = v46 #endif #if FABLE_COMPILER_PYTHON let v47 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v48 : Async<Choice<bool, exn>> = v47 v34 let _run_target_args'_v35 = v48 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v49 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v50 : Async<Choice<bool, exn>> = v49 v34 let _run_target_args'_v35 = v50 #endif #else let v51 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v52 : Async<Choice<bool, exn>> = v51 v34 let _run_target_args'_v35 = v52 #endif let v53 : Async<Choice<bool, exn>> = _run_target_args'_v35 let v58 : Async<US7> = method25(v53) let v59 : Async<US8> = method28(v58) let v60 : Async<US6> = method29(v1, v59) return! v60 (* indent () indent *) } (* indent () indent *) let v383 : Async<US6> = _let'_v12 let _run_target_args'_v2 = v383 #endif #if FABLE_COMPILER_PYTHON let v384 : unit = () let _let'_v384 = async { let v387 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v388 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v388 #endif #if FABLE_COMPILER_RUST && WASM let v391 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v391 #endif #if FABLE_COMPILER_RUST && CONTRACT let v394 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v394 #endif #if FABLE_COMPILER_TYPESCRIPT let v397 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v397 #endif #if FABLE_COMPILER_PYTHON let v398 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v398 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v399 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v399 #endif #else let v400 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v400 #endif let v401 : Async<Async<bool>> = _run_target_args'_v387 let! v401 = v401 let v406 : Async<bool> = v401 let v407 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v408 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v408 #endif #if FABLE_COMPILER_RUST && WASM let v411 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v411 #endif #if FABLE_COMPILER_RUST && CONTRACT let v414 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v414 #endif #if FABLE_COMPILER_TYPESCRIPT let v417 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v418 : Async<Choice<bool, exn>> = v417 v406 let _run_target_args'_v407 = v418 #endif #if FABLE_COMPILER_PYTHON let v419 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v420 : Async<Choice<bool, exn>> = v419 v406 let _run_target_args'_v407 = v420 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v421 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v422 : Async<Choice<bool, exn>> = v421 v406 let _run_target_args'_v407 = v422 #endif #else let v423 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v424 : Async<Choice<bool, exn>> = v423 v406 let _run_target_args'_v407 = v424 #endif let v425 : Async<Choice<bool, exn>> = _run_target_args'_v407 let v430 : Async<US7> = method25(v425) let v431 : Async<US8> = method28(v430) let v432 : Async<US6> = method29(v1, v431) return! v432 (* indent () indent *) } (* indent () indent *) let v755 : Async<US6> = _let'_v384 let _run_target_args'_v2 = v755 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v756 : unit = () let _let'_v756 = async { let v759 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v760 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v760 #endif #if FABLE_COMPILER_RUST && WASM let v763 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v763 #endif #if FABLE_COMPILER_RUST && CONTRACT let v766 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v766 #endif #if FABLE_COMPILER_TYPESCRIPT let v769 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v769 #endif #if FABLE_COMPILER_PYTHON let v770 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v770 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v771 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v771 #endif #else let v772 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v772 #endif let v773 : Async<Async<bool>> = _run_target_args'_v759 let! v773 = v773 let v778 : Async<bool> = v773 let v779 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v780 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v780 #endif #if FABLE_COMPILER_RUST && WASM let v783 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v783 #endif #if FABLE_COMPILER_RUST && CONTRACT let v786 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v786 #endif #if FABLE_COMPILER_TYPESCRIPT let v789 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v790 : Async<Choice<bool, exn>> = v789 v778 let _run_target_args'_v779 = v790 #endif #if FABLE_COMPILER_PYTHON let v791 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v792 : Async<Choice<bool, exn>> = v791 v778 let _run_target_args'_v779 = v792 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v793 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v794 : Async<Choice<bool, exn>> = v793 v778 let _run_target_args'_v779 = v794 #endif #else let v795 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v796 : Async<Choice<bool, exn>> = v795 v778 let _run_target_args'_v779 = v796 #endif let v797 : Async<Choice<bool, exn>> = _run_target_args'_v779 let v802 : Async<US7> = method25(v797) let v803 : Async<US8> = method28(v802) let v804 : Async<US6> = method29(v1, v803) return! v804 (* indent () indent *) } (* indent () indent *) let v1127 : Async<US6> = _let'_v756 let _run_target_args'_v2 = v1127 #endif #else let v1128 : unit = () let _let'_v1128 = async { let v1131 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1132 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1132 #endif #if FABLE_COMPILER_RUST && WASM let v1135 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1135 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1138 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1138 #endif #if FABLE_COMPILER_TYPESCRIPT let v1141 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1141 #endif #if FABLE_COMPILER_PYTHON let v1142 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1142 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1143 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1143 #endif #else let v1144 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1144 #endif let v1145 : Async<Async<bool>> = _run_target_args'_v1131 let! v1145 = v1145 let v1150 : Async<bool> = v1145 let v1151 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1152 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1152 #endif #if FABLE_COMPILER_RUST && WASM let v1155 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1155 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1158 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1158 #endif #if FABLE_COMPILER_TYPESCRIPT let v1161 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1162 : Async<Choice<bool, exn>> = v1161 v1150 let _run_target_args'_v1151 = v1162 #endif #if FABLE_COMPILER_PYTHON let v1163 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1164 : Async<Choice<bool, exn>> = v1163 v1150 let _run_target_args'_v1151 = v1164 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1165 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1166 : Async<Choice<bool, exn>> = v1165 v1150 let _run_target_args'_v1151 = v1166 #endif #else let v1167 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1168 : Async<Choice<bool, exn>> = v1167 v1150 let _run_target_args'_v1151 = v1168 #endif let v1169 : Async<Choice<bool, exn>> = _run_target_args'_v1151 let v1174 : Async<US7> = method25(v1169) let v1175 : Async<US8> = method28(v1174) let v1176 : Async<US6> = method29(v1, v1175) return! v1176 (* indent () indent *) } (* indent () indent *) let v1499 : Async<US6> = _let'_v1128 let _run_target_args'_v2 = v1499 #endif let v1500 : Async<US6> = _run_target_args'_v2 v1500 and method23 (v0 : int32, v1 : Async<bool>) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v4 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v5 #endif #if FABLE_COMPILER_TYPESCRIPT let v6 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_PYTHON let v7 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v7 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v8 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v8 #endif #else let v9 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v9 #endif let v10 : Async<US6> = _run_target_args'_v2 v10 and method22 (v0 : int32, v1 : string, v2 : int32) : Async<bool> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : unit = () let _let'_v13 = async { let v16 : Async<bool> = method6(v1, v2) let v17 : Async<US6> = method23(v0, v16) let! v17 = v17 let v18 : US6 = v17 let v21 : bool = match v18 with | US6_1 -> (* None *) false | US6_0(v19) -> (* Some *) v19 return v21 (* indent () indent *) } (* indent () indent *) let v64 : Async<bool> = _let'_v13 let _run_target_args'_v3 = v64 #endif #if FABLE_COMPILER_PYTHON let v65 : unit = () let _let'_v65 = async { let v68 : Async<bool> = method6(v1, v2) let v69 : Async<US6> = method23(v0, v68) let! v69 = v69 let v70 : US6 = v69 let v73 : bool = match v70 with | US6_1 -> (* None *) false | US6_0(v71) -> (* Some *) v71 return v73 (* indent () indent *) } (* indent () indent *) let v116 : Async<bool> = _let'_v65 let _run_target_args'_v3 = v116 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v117 : unit = () let _let'_v117 = async { let v120 : Async<bool> = method6(v1, v2) let v121 : Async<US6> = method23(v0, v120) let! v121 = v121 let v122 : US6 = v121 let v125 : bool = match v122 with | US6_1 -> (* None *) false | US6_0(v123) -> (* Some *) v123 return v125 (* indent () indent *) } (* indent () indent *) let v168 : Async<bool> = _let'_v117 let _run_target_args'_v3 = v168 #endif #else let v169 : unit = () let _let'_v169 = async { let v172 : Async<bool> = method6(v1, v2) let v173 : Async<US6> = method23(v0, v172) let! v173 = v173 let v174 : US6 = v173 let v177 : bool = match v174 with | US6_1 -> (* None *) false | US6_0(v175) -> (* Some *) v175 return v177 (* indent () indent *) } (* indent () indent *) let v220 : Async<bool> = _let'_v169 let _run_target_args'_v3 = v220 #endif let v221 : Async<bool> = _run_target_args'_v3 v221 and method21 (v0 : int32, v1 : string, v2 : int32) : Async<bool> = method22(v0, v1, v2) and closure13 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> = method21(v0, v1, v2) and closure12 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) = closure13(v0, v1) and closure11 () (v0 : int32) : (string -> (int32 -> Async<bool>)) = closure12(v0) and closure22 () (v0 : int32) : US9 = US9_0(v0) and method38 () : (int32 -> US9) = closure22() and method40 (v0 : int32, v1 : int64, v2 : int32 option, v3 : bool) : string = let v4 : string = method15() let v5 : Mut3 = {l0 = v4} : Mut3 let v6 : string = "{ " let v7 : string = $"{v6}" let v10 : unit = () let v11 : (unit -> unit) = closure7(v5, v7) let v12 : unit = (fun () -> v11 (); v10) () let v15 : string = "port" let v16 : string = $"{v15}" let v19 : unit = () let v20 : (unit -> unit) = closure7(v5, v16) let v21 : unit = (fun () -> v20 (); v19) () let v24 : string = " = " let v25 : string = $"{v24}" let v28 : unit = () let v29 : (unit -> unit) = closure7(v5, v25) let v30 : unit = (fun () -> v29 (); v28) () let v33 : string = $"{v0}" let v36 : unit = () let v37 : (unit -> unit) = closure7(v5, v33) let v38 : unit = (fun () -> v37 (); v36) () let v41 : string = "; " let v42 : string = $"{v41}" let v45 : unit = () let v46 : (unit -> unit) = closure7(v5, v42) let v47 : unit = (fun () -> v46 (); v45) () let v50 : string = "retry" let v51 : string = $"{v50}" let v54 : unit = () let v55 : (unit -> unit) = closure7(v5, v51) let v56 : unit = (fun () -> v55 (); v54) () let v59 : string = $"{v24}" let v62 : unit = () let v63 : (unit -> unit) = closure7(v5, v59) let v64 : unit = (fun () -> v63 (); v62) () let v67 : string = $"{v1}" let v70 : unit = () let v71 : (unit -> unit) = closure7(v5, v67) let v72 : unit = (fun () -> v71 (); v70) () let v75 : string = $"{v41}" let v78 : unit = () let v79 : (unit -> unit) = closure7(v5, v75) let v80 : unit = (fun () -> v79 (); v78) () let v83 : string = "timeout" let v84 : string = $"{v83}" let v87 : unit = () let v88 : (unit -> unit) = closure7(v5, v84) let v89 : unit = (fun () -> v88 (); v87) () let v92 : string = $"{v24}" let v95 : unit = () let v96 : (unit -> unit) = closure7(v5, v92) let v97 : unit = (fun () -> v96 (); v95) () let v100 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v101 : string = "format!(\"{:#?}\", $0)" let v102 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v101 let v103 : string = "fable_library_rust::String_::fromString($0)" let v104 : string = Fable.Core.RustInterop.emitRustExpr v102 v103 let _run_target_args'_v100 = v104 #endif #if FABLE_COMPILER_RUST && WASM let v105 : string = "format!(\"{:#?}\", $0)" let v106 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v105 let v107 : string = "fable_library_rust::String_::fromString($0)" let v108 : string = Fable.Core.RustInterop.emitRustExpr v106 v107 let _run_target_args'_v100 = v108 #endif #if FABLE_COMPILER_RUST && CONTRACT let v109 : string = "format!(\"{:#?}\", $0)" let v110 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v109 let v111 : string = "fable_library_rust::String_::fromString($0)" let v112 : string = Fable.Core.RustInterop.emitRustExpr v110 v111 let _run_target_args'_v100 = v112 #endif #if FABLE_COMPILER_TYPESCRIPT let v113 : string = $"%A{v2}" let _run_target_args'_v100 = v113 #endif #if FABLE_COMPILER_PYTHON let v116 : string = $"%A{v2}" let _run_target_args'_v100 = v116 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v119 : string = $"%A{v2}" let _run_target_args'_v100 = v119 #endif #else let v122 : string = $"%A{v2}" let _run_target_args'_v100 = v122 #endif let v125 : string = _run_target_args'_v100 let v130 : string = $"{v125}" let v133 : unit = () let v134 : (unit -> unit) = closure7(v5, v130) let v135 : unit = (fun () -> v134 (); v133) () let v138 : string = $"{v41}" let v141 : unit = () let v142 : (unit -> unit) = closure7(v5, v138) let v143 : unit = (fun () -> v142 (); v141) () let v146 : string = "status" let v147 : string = $"{v146}" let v150 : unit = () let v151 : (unit -> unit) = closure7(v5, v147) let v152 : unit = (fun () -> v151 (); v150) () let v155 : string = $"{v24}" let v158 : unit = () let v159 : (unit -> unit) = closure7(v5, v155) let v160 : unit = (fun () -> v159 (); v158) () let v165 : string = if v3 then let v163 : string = "true" v163 else let v164 : string = "false" v164 let v166 : string = $"{v165}" let v169 : unit = () let v170 : (unit -> unit) = closure7(v5, v166) let v171 : unit = (fun () -> v170 (); v169) () let v174 : string = " }" let v175 : string = $"{v174}" let v178 : unit = () let v179 : (unit -> unit) = closure7(v5, v175) let v180 : unit = (fun () -> v179 (); v178) () let v183 : string = v5.l0 v183 and method39 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : int64, v10 : int32 option, v11 : bool) : string = let v12 : string = method40(v8, v9, v10, v11) let v13 : int64 = v0.l0 let v14 : string = "networking.wait_for_port_access" let v15 : string = $"{v6} {v7} #{v13} %s{v14} / {v12}" method19(v15) and closure23 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit = let v4 : US0 = US0_0 let v5 : bool = method8(v4) if v5 then let v6 : unit = () let v7 : (unit -> unit) = closure0() let v8 : unit = (fun () -> v7 (); v6) () let struct (v22 : Mut0, v23 : Mut1, v24 : Mut2, v25 : Mut3, v26 : Mut4, v27 : int64 option) = TraceState.trace_state.Value let v40 : string = method9(v22, v23, v24, v25, v26, v27) let v41 : string = method13() let v42 : string = method39(v22, v23, v24, v25, v26, v27, v40, v41, v2, v3, v0, v1) method20(v42) and method37 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> = let v5 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v6 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v6 #endif #if FABLE_COMPILER_RUST && WASM let v9 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v9 #endif #if FABLE_COMPILER_RUST && CONTRACT let v12 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v12 #endif #if FABLE_COMPILER_TYPESCRIPT let v15 : unit = () let _let'_v15 = async { let v18 : (int32 -> US9) = method38() let v19 : US9 option = v0 |> Option.map v18 let v30 : US9 = US9_1 let v31 : US9 = v19 |> Option.defaultValue v30 let v39 : Async<bool> = match v31 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v36) -> (* Some *) method21(v36, v2, v3) let! v39 = v39 let v40 : bool = v39 let v41 : bool = v40 = v1 if v41 then return v4 (* fix_condition then () else fix_condition then *) else let v42 : int64 = v4 % 100L let v43 : bool = v42 = 0L if v43 then let v44 : unit = () let v45 : (unit -> unit) = closure23(v0, v1, v3, v4) let v46 : unit = (fun () -> v45 (); v44) () () let v86 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v87 : (int32 -> Async<unit>) = Async.Sleep let v88 : Async<unit> = v87 10 let _run_target_args'_v86 = v88 #endif #if FABLE_COMPILER_RUST && WASM let v89 : (int32 -> Async<unit>) = Async.Sleep let v90 : Async<unit> = v89 10 let _run_target_args'_v86 = v90 #endif #if FABLE_COMPILER_RUST && CONTRACT let v91 : (int32 -> Async<unit>) = Async.Sleep let v92 : Async<unit> = v91 10 let _run_target_args'_v86 = v92 #endif #if FABLE_COMPILER_TYPESCRIPT let v93 : (int32 -> Async<unit>) = Async.Sleep let v94 : Async<unit> = v93 10 let _run_target_args'_v86 = v94 #endif #if FABLE_COMPILER_PYTHON let v95 : (int32 -> Async<unit>) = Async.Sleep let v96 : Async<unit> = v95 10 let _run_target_args'_v86 = v96 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v97 : (int32 -> Async<unit>) = Async.Sleep let v98 : Async<unit> = v97 10 let _run_target_args'_v86 = v98 #endif #else let v99 : (int32 -> Async<unit>) = Async.Sleep let v100 : Async<unit> = v99 10 let _run_target_args'_v86 = v100 #endif let v101 : Async<unit> = _run_target_args'_v86 do! v101 let v104 : int64 = v4 + 1L let v105 : Async<int64> = method36(v0, v1, v2, v3, v104) return! v105 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v722 : Async<int64> = _let'_v15 let _run_target_args'_v5 = v722 #endif #if FABLE_COMPILER_PYTHON let v723 : unit = () let _let'_v723 = async { let v726 : (int32 -> US9) = method38() let v727 : US9 option = v0 |> Option.map v726 let v738 : US9 = US9_1 let v739 : US9 = v727 |> Option.defaultValue v738 let v747 : Async<bool> = match v739 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v744) -> (* Some *) method21(v744, v2, v3) let! v747 = v747 let v748 : bool = v747 let v749 : bool = v748 = v1 if v749 then return v4 (* fix_condition then () else fix_condition then *) else let v750 : int64 = v4 % 100L let v751 : bool = v750 = 0L if v751 then let v752 : unit = () let v753 : (unit -> unit) = closure23(v0, v1, v3, v4) let v754 : unit = (fun () -> v753 (); v752) () () let v794 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v795 : (int32 -> Async<unit>) = Async.Sleep let v796 : Async<unit> = v795 10 let _run_target_args'_v794 = v796 #endif #if FABLE_COMPILER_RUST && WASM let v797 : (int32 -> Async<unit>) = Async.Sleep let v798 : Async<unit> = v797 10 let _run_target_args'_v794 = v798 #endif #if FABLE_COMPILER_RUST && CONTRACT let v799 : (int32 -> Async<unit>) = Async.Sleep let v800 : Async<unit> = v799 10 let _run_target_args'_v794 = v800 #endif #if FABLE_COMPILER_TYPESCRIPT let v801 : (int32 -> Async<unit>) = Async.Sleep let v802 : Async<unit> = v801 10 let _run_target_args'_v794 = v802 #endif #if FABLE_COMPILER_PYTHON let v803 : (int32 -> Async<unit>) = Async.Sleep let v804 : Async<unit> = v803 10 let _run_target_args'_v794 = v804 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v805 : (int32 -> Async<unit>) = Async.Sleep let v806 : Async<unit> = v805 10 let _run_target_args'_v794 = v806 #endif #else let v807 : (int32 -> Async<unit>) = Async.Sleep let v808 : Async<unit> = v807 10 let _run_target_args'_v794 = v808 #endif let v809 : Async<unit> = _run_target_args'_v794 do! v809 let v812 : int64 = v4 + 1L let v813 : Async<int64> = method36(v0, v1, v2, v3, v812) return! v813 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v1430 : Async<int64> = _let'_v723 let _run_target_args'_v5 = v1430 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1431 : unit = () let _let'_v1431 = async { let v1434 : (int32 -> US9) = method38() let v1435 : US9 option = v0 |> Option.map v1434 let v1446 : US9 = US9_1 let v1447 : US9 = v1435 |> Option.defaultValue v1446 let v1455 : Async<bool> = match v1447 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v1452) -> (* Some *) method21(v1452, v2, v3) let! v1455 = v1455 let v1456 : bool = v1455 let v1457 : bool = v1456 = v1 if v1457 then return v4 (* fix_condition then () else fix_condition then *) else let v1458 : int64 = v4 % 100L let v1459 : bool = v1458 = 0L if v1459 then let v1460 : unit = () let v1461 : (unit -> unit) = closure23(v0, v1, v3, v4) let v1462 : unit = (fun () -> v1461 (); v1460) () () let v1502 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1503 : (int32 -> Async<unit>) = Async.Sleep let v1504 : Async<unit> = v1503 10 let _run_target_args'_v1502 = v1504 #endif #if FABLE_COMPILER_RUST && WASM let v1505 : (int32 -> Async<unit>) = Async.Sleep let v1506 : Async<unit> = v1505 10 let _run_target_args'_v1502 = v1506 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1507 : (int32 -> Async<unit>) = Async.Sleep let v1508 : Async<unit> = v1507 10 let _run_target_args'_v1502 = v1508 #endif #if FABLE_COMPILER_TYPESCRIPT let v1509 : (int32 -> Async<unit>) = Async.Sleep let v1510 : Async<unit> = v1509 10 let _run_target_args'_v1502 = v1510 #endif #if FABLE_COMPILER_PYTHON let v1511 : (int32 -> Async<unit>) = Async.Sleep let v1512 : Async<unit> = v1511 10 let _run_target_args'_v1502 = v1512 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1513 : (int32 -> Async<unit>) = Async.Sleep let v1514 : Async<unit> = v1513 10 let _run_target_args'_v1502 = v1514 #endif #else let v1515 : (int32 -> Async<unit>) = Async.Sleep let v1516 : Async<unit> = v1515 10 let _run_target_args'_v1502 = v1516 #endif let v1517 : Async<unit> = _run_target_args'_v1502 do! v1517 let v1520 : int64 = v4 + 1L let v1521 : Async<int64> = method36(v0, v1, v2, v3, v1520) return! v1521 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v2138 : Async<int64> = _let'_v1431 let _run_target_args'_v5 = v2138 #endif #else let v2139 : unit = () let _let'_v2139 = async { let v2142 : (int32 -> US9) = method38() let v2143 : US9 option = v0 |> Option.map v2142 let v2154 : US9 = US9_1 let v2155 : US9 = v2143 |> Option.defaultValue v2154 let v2163 : Async<bool> = match v2155 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v2160) -> (* Some *) method21(v2160, v2, v3) let! v2163 = v2163 let v2164 : bool = v2163 let v2165 : bool = v2164 = v1 if v2165 then return v4 (* fix_condition then () else fix_condition then *) else let v2166 : int64 = v4 % 100L let v2167 : bool = v2166 = 0L if v2167 then let v2168 : unit = () let v2169 : (unit -> unit) = closure23(v0, v1, v3, v4) let v2170 : unit = (fun () -> v2169 (); v2168) () () let v2210 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2211 : (int32 -> Async<unit>) = Async.Sleep let v2212 : Async<unit> = v2211 10 let _run_target_args'_v2210 = v2212 #endif #if FABLE_COMPILER_RUST && WASM let v2213 : (int32 -> Async<unit>) = Async.Sleep let v2214 : Async<unit> = v2213 10 let _run_target_args'_v2210 = v2214 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2215 : (int32 -> Async<unit>) = Async.Sleep let v2216 : Async<unit> = v2215 10 let _run_target_args'_v2210 = v2216 #endif #if FABLE_COMPILER_TYPESCRIPT let v2217 : (int32 -> Async<unit>) = Async.Sleep let v2218 : Async<unit> = v2217 10 let _run_target_args'_v2210 = v2218 #endif #if FABLE_COMPILER_PYTHON let v2219 : (int32 -> Async<unit>) = Async.Sleep let v2220 : Async<unit> = v2219 10 let _run_target_args'_v2210 = v2220 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2221 : (int32 -> Async<unit>) = Async.Sleep let v2222 : Async<unit> = v2221 10 let _run_target_args'_v2210 = v2222 #endif #else let v2223 : (int32 -> Async<unit>) = Async.Sleep let v2224 : Async<unit> = v2223 10 let _run_target_args'_v2210 = v2224 #endif let v2225 : Async<unit> = _run_target_args'_v2210 do! v2225 let v2228 : int64 = v4 + 1L let v2229 : Async<int64> = method36(v0, v1, v2, v3, v2228) return! v2229 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v2846 : Async<int64> = _let'_v2139 let _run_target_args'_v5 = v2846 #endif let v2847 : Async<int64> = _run_target_args'_v5 v2847 and method36 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> = method37(v0, v1, v2, v3, v4) and method35 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32) : Async<int64> = let v4 : int64 = 1L method36(v0, v1, v2, v3, v4) and closure21 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> = method35(v0, v1, v2, v3) and closure20 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) = closure21(v0, v1, v2) and closure19 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) = closure20(v0, v1) and closure18 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) = closure19(v0) and method43 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : unit = () let _let'_v13 = async { let v16 : (int32 -> US9) = method38() let v17 : US9 option = v0 |> Option.map v16 let v28 : US9 = US9_1 let v29 : US9 = v17 |> Option.defaultValue v28 let v37 : Async<bool> = match v29 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v34) -> (* Some *) method21(v34, v1, v2) let! v37 = v37 let v38 : bool = v37 let v39 : bool = v38 = false if v39 then return v2 (* fix_condition then () else fix_condition then *) else let v40 : int32 = v2 + 1 let v41 : Async<int32> = method42(v0, v1, v40) return! v41 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v224 : Async<int32> = _let'_v13 let _run_target_args'_v3 = v224 #endif #if FABLE_COMPILER_PYTHON let v225 : unit = () let _let'_v225 = async { let v228 : (int32 -> US9) = method38() let v229 : US9 option = v0 |> Option.map v228 let v240 : US9 = US9_1 let v241 : US9 = v229 |> Option.defaultValue v240 let v249 : Async<bool> = match v241 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v246) -> (* Some *) method21(v246, v1, v2) let! v249 = v249 let v250 : bool = v249 let v251 : bool = v250 = false if v251 then return v2 (* fix_condition then () else fix_condition then *) else let v252 : int32 = v2 + 1 let v253 : Async<int32> = method42(v0, v1, v252) return! v253 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v436 : Async<int32> = _let'_v225 let _run_target_args'_v3 = v436 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v437 : unit = () let _let'_v437 = async { let v440 : (int32 -> US9) = method38() let v441 : US9 option = v0 |> Option.map v440 let v452 : US9 = US9_1 let v453 : US9 = v441 |> Option.defaultValue v452 let v461 : Async<bool> = match v453 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v458) -> (* Some *) method21(v458, v1, v2) let! v461 = v461 let v462 : bool = v461 let v463 : bool = v462 = false if v463 then return v2 (* fix_condition then () else fix_condition then *) else let v464 : int32 = v2 + 1 let v465 : Async<int32> = method42(v0, v1, v464) return! v465 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v648 : Async<int32> = _let'_v437 let _run_target_args'_v3 = v648 #endif #else let v649 : unit = () let _let'_v649 = async { let v652 : (int32 -> US9) = method38() let v653 : US9 option = v0 |> Option.map v652 let v664 : US9 = US9_1 let v665 : US9 = v653 |> Option.defaultValue v664 let v673 : Async<bool> = match v665 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v670) -> (* Some *) method21(v670, v1, v2) let! v673 = v673 let v674 : bool = v673 let v675 : bool = v674 = false if v675 then return v2 (* fix_condition then () else fix_condition then *) else let v676 : int32 = v2 + 1 let v677 : Async<int32> = method42(v0, v1, v676) return! v677 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v860 : Async<int32> = _let'_v649 let _run_target_args'_v3 = v860 #endif let v861 : Async<int32> = _run_target_args'_v3 v861 and method42 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = method43(v0, v1, v2) and method41 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = method42(v0, v1, v2) and closure26 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib 00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / code.Length: 4638 00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DirTreeHtml" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 384 ms). 00:00:17 v #7 > DirTreeHtml -> C:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\linux-x64\DirTreeHtml.dll 00:00:18 v #8 > DirTreeHtml -> C:\home\git\polyglot\apps\dir-tree-html\dist\ 00:00:18 v #9 > 00:00:18 v #10 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:18 d #11 runtime.execute_with_options_async / { exit_code = 0; output_length = 554 } 00:00:18 d #12 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\DirTreeHtml" } } 00:00:19 v #13 > Determining projects to restore... 00:00:20 v #14 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:20 v #15 > The last full restore is still up to date. Nothing left to do. 00:00:20 v #16 > Total time taken: 0 milliseconds 00:00:20 v #17 > Restored C:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 366 ms). 00:00:35 v #18 > DirTreeHtml -> C:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\win-x64\DirTreeHtml.dll 00:00:36 v #19 > DirTreeHtml -> C:\home\git\polyglot\apps\dir-tree-html\dist\ 00:00:36 v #20 > 00:00:36 v #21 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:37 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 552 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path parsing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/parsing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/parsing.dib" --output-path "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # parsing │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 v #9 > > 00:00:05 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #11 > > //// test 00:00:05 v #12 > > 00:00:05 v #13 > > open testing 00:00:07 v #14 > > 00:00:07 v #15 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #16 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #17 > > │ ## fparsec │ 00:00:07 v #18 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #19 > > 00:00:07 v #20 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #21 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #22 > > │ <div><div></div><div><strong>Installing │ 00:00:07 v #23 > > │ Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></di │ 00:00:07 v #24 > > │ v> │ 00:00:07 v #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #26 > > 00:00:07 v #27 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #28 > > │ <div><div></div><div><strong>Installing │ 00:00:07 v #29 > > │ Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></d │ 00:00:07 v #30 > > │ iv> │ 00:00:07 v #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #32 > > 00:00:08 v #33 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #34 > > │ <div><div></div><div><strong>Installing │ 00:00:08 v #35 > > │ Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></ │ 00:00:08 v #36 > > │ div> │ 00:00:08 v #37 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #38 > > 00:00:08 v #39 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #40 > > │ <div><div></div><div><strong>Installing │ 00:00:08 v #41 > > │ Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div>< │ 00:00:08 v #42 > > │ /div> │ 00:00:08 v #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #44 > > 00:00:09 v #45 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #46 > > │ <div><div></div><div><strong>Installing │ 00:00:09 v #47 > > │ Packages</strong><ul><li><span>FParsec....</span></li></ul></div><div></div> │ 00:00:09 v #48 > > │ </div> │ 00:00:09 v #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #50 > > 00:00:09 v #51 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #52 > > │ <div><div></div><div><strong>Installing │ 00:00:09 v #53 > > │ Packages</strong><ul><li><span>FParsec.....</span></li></ul></div><div></div │ 00:00:09 v #54 > > │ ></div> │ 00:00:09 v #55 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #56 > > 00:00:10 v #57 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #58 > > │ <div><div></div><div><strong>Installing │ 00:00:10 v #59 > > │ Packages</strong><ul><li><span>FParsec......</span></li></ul></div><div></di │ 00:00:10 v #60 > > │ v></div> │ 00:00:10 v #61 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #62 > > 00:00:10 v #63 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #64 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #65 > > │ Package added: fsharp.core,4.3.4 │ 00:00:10 v #66 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #67 > > 00:00:10 v #68 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #69 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #70 > > │ Package added: FParsec,1.1.1 │ 00:00:10 v #71 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #72 > > 00:00:10 v #73 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #74 > > │ <div><div></div><div></div><div><strong>Installed │ 00:00:10 v #75 > > │ Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div> │ 00:00:10 v #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #77 > > 00:00:10 v #78 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #79 > > //// test 00:00:10 v #80 > > 00:00:10 v #81 > > nominal position_ = $'FParsec.Position' 00:00:10 v #82 > > nominal parser_error_ = $'FParsec.Error.ParserError' 00:00:10 v #83 > > 00:00:10 v #84 > > nominal reply_ t = $'FParsec.Reply<`t>' 00:00:10 v #85 > > 00:00:10 v #86 > > nominal char_stream_ t = $'FParsec.CharStream<`t>' 00:00:10 v #87 > > 00:00:10 v #88 > > // nominal parser t u = char_stream u -> reply t 00:00:10 v #89 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>' 00:00:10 v #90 > > 00:00:10 v #91 > > inl p_char_ forall t. (x : char) : parser_ char t = 00:00:10 v #92 > > x |> $'FParsec.CharParsers.pchar' 00:00:10 v #93 > > 00:00:10 v #94 > > inl p_string_ forall t. (x : string) : parser_ string t = 00:00:10 v #95 > > x |> $'FParsec.CharParsers.pstring' 00:00:10 v #96 > > 00:00:10 v #97 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v = 00:00:10 v #98 > > b |> $'FParsec.Primitives.(>>.)' a 00:00:10 v #99 > > 00:00:10 v #100 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v = 00:00:10 v #101 > > b |> $'FParsec.Primitives.(.>>)' a 00:00:10 v #102 > > 00:00:10 v #103 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t 00:00:10 v #104 > > u) v = 00:00:10 v #105 > > b |> $'FParsec.Primitives.(.>>.)' a 00:00:10 v #106 > > 00:00:10 v #107 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v = 00:00:10 v #108 > > b |> $'FParsec.Primitives.(>>%)' a 00:00:10 v #109 > > 00:00:10 v #110 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v 00:00:10 v #111 > > = 00:00:10 v #112 > > b |> $'FParsec.Primitives.(>>=)' a 00:00:10 v #113 > > 00:00:10 v #114 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v = 00:00:10 v #115 > > inl b = fun x => x |> b 00:00:10 v #116 > > b |> $'FParsec.Primitives.(|>>)' a 00:00:10 v #117 > > 00:00:10 v #118 > > inl any_char_ () : parser_ char _ = 00:00:10 v #119 > > $'FParsec.CharParsers.anyChar' 00:00:10 v #120 > > 00:00:10 v #121 > > inl any_string_ () : parser_ string _ = 00:00:10 v #122 > > $'FParsec.CharParsers.anyString' 00:00:10 v #123 > > 00:00:10 v #124 > > inl any_string__ (n : i32) : parser_ string _ = 00:00:10 v #125 > > n |> $'FParsec.CharParsers.anyString' 00:00:10 v #126 > > 00:00:10 v #127 > > inl eof_ () : parser_ () _ = 00:00:10 v #128 > > $'FParsec.CharParsers.eof' 00:00:10 v #129 > > 00:00:10 v #130 > > inl spaces_ () : parser_ () () = 00:00:10 v #131 > > $'FParsec.CharParsers.spaces' 00:00:10 v #132 > > 00:00:10 v #133 > > inl spaces1_ () : parser_ () () = 00:00:10 v #134 > > $'FParsec.CharParsers.spaces1' 00:00:10 v #135 > > 00:00:10 v #136 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u = 00:00:10 v #137 > > b |> $'FParsec.Primitives.(<|>)' a 00:00:10 v #138 > > 00:00:10 v #139 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:00:10 v #140 > > x |> $'FParsec.CharParsers.manySatisfy' 00:00:10 v #141 > > 00:00:10 v #142 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t = 00:00:10 v #143 > > x |> $'FParsec.CharParsers.satisfy' 00:00:10 v #144 > > 00:00:10 v #145 > > inl none_of_ (x : list char) : parser_ char () = 00:00:10 v #146 > > x 00:00:10 v #147 > > |> listm'.box 00:00:10 v #148 > > |> listm'.to_array' 00:00:10 v #149 > > |> $'FParsec.CharParsers.noneOf' 00:00:10 v #150 > > 00:00:10 v #151 > > inl any_of_ (x : list char) : parser_ char () = 00:00:10 v #152 > > x 00:00:10 v #153 > > |> listm'.box 00:00:10 v #154 > > |> listm'.to_array' 00:00:10 v #155 > > |> $'FParsec.CharParsers.anyOf' 00:00:10 v #156 > > 00:00:10 v #157 > > inl skip_any_of_ (x : list char) : parser_ () () = 00:00:10 v #158 > > x 00:00:10 v #159 > > |> listm'.box 00:00:10 v #160 > > |> listm'.to_array' 00:00:10 v #161 > > |> $'FParsec.CharParsers.skipAnyOf' 00:00:10 v #162 > > 00:00:10 v #163 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v 00:00:10 v #164 > > x) : parser_ v x = 00:00:10 v #165 > > c |> $'FParsec.Primitives.between' a b 00:00:10 v #166 > > 00:00:10 v #167 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:00:10 v #168 > > x |> $'FParsec.CharParsers.manyChars' 00:00:10 v #169 > > 00:00:10 v #170 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:00:10 v #171 > > x |> $'FParsec.CharParsers.many1Chars' 00:00:10 v #172 > > 00:00:10 v #173 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:00:10 v #174 > > x |> $'FParsec.CharParsers.manyStrings' 00:00:10 v #175 > > 00:00:10 v #176 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t = 00:00:10 v #177 > > n |> $'FParsec.CharParsers.skipAnyString' 00:00:10 v #178 > > 00:00:10 v #179 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:00:10 v #180 > > x |> $'FParsec.CharParsers.many1Strings' 00:00:10 v #181 > > 00:00:10 v #182 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u = 00:00:10 v #183 > > a |> $'FParsec.Primitives.opt' 00:00:10 v #184 > > 00:00:10 v #185 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u = 00:00:10 v #186 > > a 00:00:10 v #187 > > |> listm'.box 00:00:10 v #188 > > |> seq.of_list' 00:00:10 v #189 > > |> $'FParsec.Primitives.choice' 00:00:10 v #190 > > 00:00:10 v #191 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u = 00:00:10 v #192 > > fn |> $'FParsec.Primitives.parse.Delay' 00:00:10 v #193 > > 00:00:10 v #194 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u = 00:00:10 v #195 > > $'!a.Peek ()' 00:00:10 v #196 > > 00:00:10 v #197 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u = 00:00:10 v #198 > > a |> $'FParsec.Primitives.notFollowedBy' 00:00:10 v #199 > > 00:00:10 v #200 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:10 v #201 > > (listm'.list' t) v = 00:00:10 v #202 > > b |> $'FParsec.Primitives.sepBy' a 00:00:10 v #203 > > 00:00:10 v #204 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:10 v #205 > > (listm'.list' t) v = 00:00:10 v #206 > > b |> $'FParsec.Primitives.sepBy1' a 00:00:10 v #207 > > 00:00:10 v #208 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:10 v #209 > > (listm'.list' t) v = 00:00:10 v #210 > > b |> $'FParsec.Primitives.sepEndBy' a 00:00:10 v #211 > > 00:00:10 v #212 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:00:10 v #213 > > a |> $'FParsec.Primitives.many' 00:00:10 v #214 > > 00:00:10 v #215 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:00:10 v #216 > > a |> $'FParsec.Primitives.many1' 00:00:10 v #217 > > 00:00:10 v #218 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:00:10 v #219 > > x |> $'FParsec.CharParsers.many1Satisfy' 00:00:10 v #220 > > 00:00:10 v #221 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>' 00:00:10 v #222 > > 00:00:10 v #223 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () = 00:00:10 v #224 > > x |> $'FParsec.CharParsers.run' parser 00:00:10 v #225 > > 00:00:10 v #226 > > union parser_result_ t u = 00:00:10 v #227 > > | Success : t * u * position_ 00:00:10 v #228 > > | Failure : string * parser_error_ * u 00:00:10 v #229 > > 00:00:10 v #230 > > inl parser_result_ forall t u. = function 00:00:10 v #231 > > | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' : 00:00:10 v #232 > > parser_result'_ t u 00:00:10 v #233 > > | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' : 00:00:10 v #234 > > parser_result'_ t u 00:00:10 v #235 > > 00:00:10 v #236 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u = 00:00:10 v #237 > > $'let mutable _!x = None ' 00:00:10 v #238 > > $'match !x with' 00:00:10 v #239 > > $'| FParsec.CharParsers.Success (a, b, c) -> (' : () 00:00:10 v #240 > > $'(fun () ->' 00:00:10 v #241 > > $'(fun () ->' 00:00:10 v #242 > > (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:00:10 v #243 > > $')' 00:00:10 v #244 > > $'|> fun x -> x ()' 00:00:10 v #245 > > $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : () 00:00:10 v #246 > > $'(fun () ->' 00:00:10 v #247 > > $'(fun () ->' 00:00:10 v #248 > > (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:00:10 v #249 > > $')' 00:00:10 v #250 > > $'|> fun x -> x ()' 00:00:10 v #251 > > $') () )' : () 00:00:10 v #252 > > $'|> fun x -> _!x <- Some x' 00:00:10 v #253 > > $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"' 00:00:10 v #254 > > 00:00:10 v #255 > > inl parse_ parser input : result _ _ = 00:00:10 v #256 > > match input |> run_ parser |> parser_result'_ with 00:00:10 v #257 > > | Success (result, b, c) => Ok (result, c) 00:00:10 v #258 > > | Failure (error_msg, b, c) => Error (error_msg, b) 00:00:11 v #259 > > 00:00:11 v #260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #261 > > //// test 00:00:11 v #262 > > 00:00:11 v #263 > > inl split_args (args : string) : result (array_base (string * position_)) 00:00:11 v #264 > > (string * parser_error_) = 00:00:11 v #265 > > inl esc = [[ '\\'; '`' ]] 00:00:11 v #266 > > inl quotes = [[ '"' ]] 00:00:11 v #267 > > inl special = esc ++ quotes 00:00:11 v #268 > > inl p_esc_char c = 00:00:11 v #269 > > p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"' 00:00:11 v #270 > > inl p_word = special |> none_of_ |>>$ sm'.obj_to_string 00:00:11 v #271 > > inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_ 00:00:11 v #272 > > inl p_text = p_word |> many1_strings_ 00:00:11 v #273 > > inl p_esc = esc |> listm.map p_esc_char |> choice_ 00:00:11 v #274 > > inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat 00:00:11 v #275 > > "") 00:00:11 v #276 > > inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"') 00:00:11 v #277 > > inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$ 00:00:11 v #278 > > (seq.of_list' >> sm'.concat "") 00:00:11 v #279 > > inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root 00:00:11 v #280 > > inl p_args = spaces1_ () |> sep_by_ p_content 00:00:11 v #281 > > args 00:00:11 v #282 > > |> parse_ p_args 00:00:11 v #283 > > |> resultm.map fun (a', b') => 00:00:11 v #284 > > ( 00:00:11 v #285 > > ( 00:00:11 v #286 > > a' 00:00:11 v #287 > > |> listm'.to_array' 00:00:11 v #288 > > |> a 00:00:11 v #289 > > |> am.map fun x => x, b' 00:00:11 v #290 > > |> fun (a x : _ i32 _) => x 00:00:11 v #291 > > ) 00:00:11 v #292 > > ) 00:00:11 v #293 > > 00:00:11 v #294 > > [[ 00:00:11 v #295 > > "a b c", 00:00:11 v #296 > > ;[[ "a"; "b"; "c" ]] 00:00:11 v #297 > > 00:00:11 v #298 > > "e f \"g h\" i", 00:00:11 v #299 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:00:11 v #300 > > 00:00:11 v #301 > > "\"j k\" \"l\" \"m\"", 00:00:11 v #302 > > ;[[ "j k"; "l"; "m" ]] 00:00:11 v #303 > > 00:00:11 v #304 > > "s -t \"u \`\"v\`\" w\"", 00:00:11 v #305 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:00:11 v #306 > > 00:00:11 v #307 > > "n -o \"p \\\"q\\\" r\"", 00:00:11 v #308 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:00:11 v #309 > > 00:00:11 v #310 > > "r -s \"t \\\"u\\\"\"", 00:00:11 v #311 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:00:11 v #312 > > 00:00:11 v #313 > > $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] + 00:00:11 v #314 > > \`$d++ }}\\\""', 00:00:11 v #315 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:00:11 v #316 > > ]] 00:00:11 v #317 > > 00:00:11 v #318 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:00:11 v #319 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:00:11 v #320 > > ]] 00:00:11 v #321 > > 00:00:11 v #322 > > $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:00:11 v #323 > > ;[[ "--l"; "''' m '''" ]] 00:00:11 v #324 > > 00:00:11 v #325 > > $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:00:11 v #326 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""', 00:00:11 v #327 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:00:11 v #328 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:00:11 v #329 > > 00:00:11 v #330 > > $'\@$"l ""m n:\\o.p"""', 00:00:11 v #331 > > ;[[ "l"; "m n:\\o.p" ]] 00:00:11 v #332 > > ]] 00:00:11 v #333 > > |> listm.rev 00:00:11 v #334 > > |> listm.map fun input, expected => 00:00:11 v #335 > > input 00:00:11 v #336 > > |> split_args 00:00:11 v #337 > > |> fun x => 00:00:11 v #338 > > try 00:00:11 v #339 > > fun () => 00:00:11 v #340 > > ($'$"\ninput: {!input}"' : string) 00:00:11 v #341 > > |> console.write_line 00:00:11 v #342 > > x 00:00:11 v #343 > > |> resultm.get 00:00:11 v #344 > > |> am'.map_base fst 00:00:11 v #345 > > |> _assert_eq' expected 00:00:11 v #346 > > false 00:00:11 v #347 > > fun ex => 00:00:11 v #348 > > ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string) 00:00:11 v #349 > > |> console.write_line 00:00:11 v #350 > > Some true 00:00:11 v #351 > > |> optionm.value 00:00:11 v #352 > > |> listm'.filter id 00:00:11 v #353 > > |> function 00:00:11 v #354 > > | [[]] => () 00:00:11 v #355 > > | x => failwith $'$"{!x}"' 00:00:14 v #356 > > 00:00:14 v #357 > > ╭─[ 3.61s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:14 v #358 > > │ │ 00:00:14 v #359 > > │ input: a b c │ 00:00:14 v #360 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|] │ 00:00:14 v #361 > > │ │ 00:00:14 v #362 > > │ input: e f "g h" i │ 00:00:14 v #363 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g │ 00:00:14 v #364 > > │ h"; "i"|] │ 00:00:14 v #365 > > │ │ 00:00:14 v #366 > > │ input: "j k" "l" "m" │ 00:00:14 v #367 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|] │ 00:00:14 v #368 > > │ │ 00:00:14 v #369 > > │ input: s -t "u `"v`" w" │ 00:00:14 v #370 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t"; │ 00:00:14 v #371 > > │ "u `"v`" w"|] │ 00:00:14 v #372 > > │ │ 00:00:14 v #373 > > │ input: n -o "p \"q\" r" │ 00:00:14 v #374 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o"; │ 00:00:14 v #375 > > │ "p \"q\" r"|] │ 00:00:14 v #376 > > │ │ 00:00:14 v #377 > > │ input: r -s "t \"u\"" │ 00:00:14 v #378 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t │ 00:00:14 v #379 > > │ \"u\""|] │ 00:00:14 v #380 > > │ │ 00:00:14 v #381 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" │ 00:00:14 v #382 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { │ 00:00:14 v #383 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[ │ 00:00:14 v #384 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] │ 00:00:14 v #385 > > │ │ 00:00:14 v #386 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" │ 00:00:14 v #387 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { │ 00:00:14 v #388 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[ │ 00:00:14 v #389 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] │ 00:00:14 v #390 > > │ │ 00:00:14 v #391 > > │ input: --l \"''' m '''\" │ 00:00:14 v #392 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m │ 00:00:14 v #393 > > │ '''"|] │ 00:00:14 v #394 > > │ │ 00:00:14 v #395 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j │ 00:00:14 v #396 > > │ (k)" │ 00:00:14 v #397 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │ 00:00:14 v #398 > > │ "y:/z.a"; "--b"; "c.d"; │ 00:00:14 v #399 > > │ "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r"; │ 00:00:14 v #400 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; │ 00:00:14 v #401 > > │ "\e{f-g}"; "h.i"; "j (k)"|] │ 00:00:14 v #402 > > │ │ 00:00:14 v #403 > > │ input: l "m n:\o.p" │ 00:00:14 v #404 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|] │ 00:00:14 v #405 > > │ │ 00:00:14 v #406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #407 > > 00:00:14 v #408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #409 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #410 > > │ ## parsing │ 00:00:14 v #411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #412 > > 00:00:14 v #413 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #414 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #415 > > │ ### range │ 00:00:14 v #416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #417 > > 00:00:14 v #418 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #419 > > type range = 00:00:14 v #420 > > { 00:00:14 v #421 > > from : int 00:00:14 v #422 > > to : int 00:00:14 v #423 > > } 00:00:15 v #424 > > 00:00:15 v #425 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #426 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 v #427 > > │ ### position │ 00:00:15 v #428 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #429 > > 00:00:15 v #430 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #431 > > type position = 00:00:15 v #432 > > { 00:00:15 v #433 > > line : int 00:00:15 v #434 > > col : int 00:00:15 v #435 > > } 00:00:15 v #436 > > 00:00:15 v #437 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #438 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 v #439 > > │ ### parser_state │ 00:00:15 v #440 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #441 > > 00:00:15 v #442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #443 > > nominal parser_state = 00:00:15 v #444 > > { 00:00:15 v #445 > > line_text : sm'.string_builder 00:00:15 v #446 > > position : position 00:00:15 v #447 > > } 00:00:16 v #448 > > 00:00:16 v #449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #450 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 v #451 > > │ ### parser │ 00:00:16 v #452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 v #453 > > 00:00:16 v #454 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #455 > > type parser t = string * parser_state -> result (t * string * parser_state) 00:00:16 v #456 > > string 00:00:16 v #457 > > 00:00:16 v #458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 v #460 > > │ ### parse │ 00:00:16 v #461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 v #462 > > 00:00:16 v #463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #464 > > inl parse forall t. (p : parser t) (input : string) : result (t * string * 00:00:16 v #465 > > parser_state) string = 00:00:16 v #466 > > inl input = 00:00:16 v #467 > > input 00:00:16 v #468 > > |> optionm'.of_obj 00:00:16 v #469 > > |> optionm'.default_value' "" 00:00:16 v #470 > > p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col 00:00:16 v #471 > > = 1 } } |> parser_state) 00:00:17 v #472 > > 00:00:17 v #473 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #474 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #475 > > │ ### inc │ 00:00:17 v #476 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #477 > > 00:00:17 v #478 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 v #479 > > inl inc (parser_state s) = function 00:00:17 v #480 > > | '\n' => { line = s.position.line + 1; col = 1 } 00:00:17 v #481 > > | _ => { s.position with col = s.position.col + 1 }.position 00:00:17 v #482 > > 00:00:17 v #483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #484 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #485 > > │ ### update │ 00:00:17 v #486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #487 > > 00:00:17 v #488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 v #489 > > inl update result s = 00:00:17 v #490 > > (s, result |> sm'.to_char_array |> am'.to_list_base' |> listm'.unbox) 00:00:17 v #491 > > ||> listm.fold fun (parser_state s as s') c => 00:00:17 v #492 > > { s with 00:00:17 v #493 > > position = c |> inc s' 00:00:17 v #494 > > line_text = 00:00:17 v #495 > > match c with 00:00:17 v #496 > > | '\n' => s.line_text |> sm'.builder_clear 00:00:17 v #497 > > | c => s.line_text |> sm'.builder_append (c |> 00:00:17 v #498 > > sm'.obj_to_string) 00:00:17 v #499 > > } |> parser_state 00:00:18 v #500 > > 00:00:18 v #501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #502 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 v #503 > > │ ### any_char │ 00:00:18 v #504 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #505 > > 00:00:18 v #506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #507 > > inl any_char () : parser char = function 00:00:18 v #508 > > | "", s => 00:00:18 v #509 > > backend_switch { 00:00:18 v #510 > > Fsharp = fun () => $'$"parsing.any_char / unexpected end of input 00:00:18 v #511 > > s: %A{!s}"' : string 00:00:18 v #512 > > Python = fun () => $'f"parsing.any_char / unexpected end of input 00:00:18 v #513 > > s: {!s}"' : string 00:00:18 v #514 > > } 00:00:18 v #515 > > |> Error 00:00:18 v #516 > > | x, s => 00:00:18 v #517 > > inl first_char = x |> sm'.index 0i32 00:00:18 v #518 > > Ok ( 00:00:18 v #519 > > first_char, 00:00:18 v #520 > > x |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:18 v #521 > > s |> update (first_char |> sm'.obj_to_string) 00:00:18 v #522 > > ) 00:00:18 v #523 > > 00:00:18 v #524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #525 > > //// test 00:00:18 v #526 > > ///! fsharp 00:00:18 v #527 > > ///! cuda 00:00:18 v #528 > > ///! typescript 00:00:18 v #529 > > 00:00:18 v #530 > > "abc" 00:00:18 v #531 > > |> parse (any_char ()) 00:00:18 v #532 > > |> resultm.get 00:00:18 v #533 > > |> sm'.format_debug 00:00:18 v #534 > > |> _assert_eq ( 00:00:18 v #535 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:18 v #536 > > 1i32; col = 2i32 } }) 00:00:18 v #537 > > |> sm'.format_debug 00:00:18 v #538 > > ) 00:00:21 v #539 > > 00:00:21 v #540 > > ╭─[ 3.02s - return value ]─────────────────────────────────────────────────────╮ 00:00:21 v #541 > > │ .py output (Cuda): │ 00:00:21 v #542 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2) │ 00:00:21 v #543 > > │ │ 00:00:21 v #544 > > │ .ts output: │ 00:00:21 v #545 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 │ 00:00:21 v #546 > > │ │ 00:00:21 v #547 > > │ │ 00:00:21 v #548 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #549 > > 00:00:21 v #550 > > ╭─[ 3.02s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:21 v #551 > > │ .fsx output: │ 00:00:21 v #552 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:00:21 v #553 > > │ ('a', "bc", a, 1, 2)" │ 00:00:21 v #554 > > │ │ 00:00:21 v #555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:21 v #556 > > 00:00:21 v #557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:21 v #558 > > //// test 00:00:21 v #559 > > 00:00:21 v #560 > > "abc" 00:00:21 v #561 > > |> parse_ (any_char_ ()) 00:00:21 v #562 > > |> resultm.get 00:00:21 v #563 > > |> sm'.format_debug 00:00:21 v #564 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:21 v #565 > > sm'.format_debug) 00:00:22 v #566 > > 00:00:22 v #567 > > ╭─[ 504.52ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:22 v #568 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct │ 00:00:22 v #569 > > │ ('a', (Ln: 1, Col: 2))" │ 00:00:22 v #570 > > │ │ 00:00:22 v #571 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #572 > > 00:00:22 v #573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #575 > > │ ### p_char │ 00:00:22 v #576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #577 > > 00:00:22 v #578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #579 > > inl p_char (c : char) : parser char = function 00:00:22 v #580 > > | "", s => 00:00:22 v #581 > > backend_switch { 00:00:22 v #582 > > Fsharp = fun () => $'$"parsing.p_char / unexpected end of input / c: 00:00:22 v #583 > > \'{!c}\' / s: %A{!s}"' : string 00:00:22 v #584 > > Python = fun () => $'f"parsing.p_char / unexpected end of input / c: 00:00:22 v #585 > > \'{!c}\' / s: {!s}"' : string 00:00:22 v #586 > > } 00:00:22 v #587 > > |> Error 00:00:22 v #588 > > | input, (parser_state ({ line_text position = { line col } } as s) as s') 00:00:22 v #589 > > => 00:00:22 v #590 > > inl first_char = input |> sm'.index 0i32 00:00:22 v #591 > > if first_char = c then 00:00:22 v #592 > > Ok ( 00:00:22 v #593 > > first_char, 00:00:22 v #594 > > input |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:22 v #595 > > s' |> update (first_char |> sm'.obj_to_string) 00:00:22 v #596 > > ) 00:00:22 v #597 > > else 00:00:22 v #598 > > inl message : string = 00:00:22 v #599 > > inl rest = 00:00:22 v #600 > > input 00:00:22 v #601 > > |> sm'.range 00:00:22 v #602 > > (am'.Start 0i32) 00:00:22 v #603 > > (am'.End fun l => 00:00:22 v #604 > > match (input |> sm'.index_of "\n") - 1 with 00:00:22 v #605 > > | -2 => l () + 1 00:00:22 v #606 > > | i => i + 1 00:00:22 v #607 > > ) 00:00:22 v #608 > > backend_switch { 00:00:22 v #609 > > Fsharp = fun () => $'$"parsing.p_char / expected: \'{!c}\' 00:00:22 v #610 > > line: {!line} / col: {!col}\n{!line_text}{!rest}"' : string 00:00:22 v #611 > > Python = fun () => $'f"""parsing.p_char / expected: \'{!c}\' 00:00:22 v #612 > > / line: {!line} / col: {!col}\n{!line_text}{!rest}"""' : string 00:00:22 v #613 > > } 00:00:22 v #614 > > inl pointer_line = (sm'.replicate (col - 1) " ") +. "^" 00:00:22 v #615 > > backend_switch { 00:00:22 v #616 > > Fsharp = fun () => $'$"{!message}\n{!pointer_line}\n"' : string 00:00:22 v #617 > > Python = fun () => $'f"""{!message}\n{!pointer_line}\n"""' : 00:00:22 v #618 > > string 00:00:22 v #619 > > } 00:00:22 v #620 > > |> Error 00:00:22 v #621 > > 00:00:22 v #622 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #623 > > //// test 00:00:22 v #624 > > ///! fsharp 00:00:22 v #625 > > ///! cuda 00:00:22 v #626 > > ///! typescript 00:00:22 v #627 > > 00:00:22 v #628 > > "abc" 00:00:22 v #629 > > |> parse (p_char 'a') 00:00:22 v #630 > > |> resultm.get 00:00:22 v #631 > > |> sm'.format_debug 00:00:22 v #632 > > |> _assert_eq ( 00:00:22 v #633 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:22 v #634 > > 1i32; col = 2i32 } }) 00:00:22 v #635 > > |> sm'.format_debug 00:00:22 v #636 > > ) 00:00:24 v #637 > > 00:00:24 v #638 > > ╭─[ 2.29s - return value ]─────────────────────────────────────────────────────╮ 00:00:24 v #639 > > │ .py output (Cuda): │ 00:00:24 v #640 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2) │ 00:00:24 v #641 > > │ │ 00:00:24 v #642 > > │ .ts output: │ 00:00:24 v #643 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 │ 00:00:24 v #644 > > │ │ 00:00:24 v #645 > > │ │ 00:00:24 v #646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:24 v #647 > > 00:00:24 v #648 > > ╭─[ 2.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:24 v #649 > > │ .fsx output: │ 00:00:24 v #650 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:00:24 v #651 > > │ ('a', "bc", a, 1, 2)" │ 00:00:24 v #652 > > │ │ 00:00:24 v #653 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:24 v #654 > > 00:00:24 v #655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #656 > > //// test 00:00:24 v #657 > > 00:00:24 v #658 > > "abc" 00:00:24 v #659 > > |> parse_ (p_char_ 'a') 00:00:24 v #660 > > |> resultm.get 00:00:24 v #661 > > |> sm'.format_debug 00:00:24 v #662 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:24 v #663 > > sm'.format_debug) 00:00:25 v #664 > > 00:00:25 v #665 > > ╭─[ 496.27ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:25 v #666 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct │ 00:00:25 v #667 > > │ ('a', (Ln: 1, Col: 2))" │ 00:00:25 v #668 > > │ │ 00:00:25 v #669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:25 v #670 > > 00:00:25 v #671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #672 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:25 v #673 > > │ ### any_string │ 00:00:25 v #674 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:25 v #675 > > 00:00:25 v #676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #677 > > inl any_string length : parser string = fun input, s => 00:00:25 v #678 > > if sm'.length input < length then 00:00:25 v #679 > > backend_switch { 00:00:25 v #680 > > Fsharp = fun () => $'$"parsing.any_string / unexpected end of input 00:00:25 v #681 > > / s: %A{!s}"' : string 00:00:25 v #682 > > Python = fun () => $'f"parsing.any_string / unexpected end of input 00:00:25 v #683 > > / s: {!s}"' : string 00:00:25 v #684 > > } 00:00:25 v #685 > > |> Error 00:00:25 v #686 > > else 00:00:25 v #687 > > inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:00:25 v #688 > > length) 00:00:25 v #689 > > Ok ( 00:00:25 v #690 > > result, 00:00:25 v #691 > > input |> sm'.range (am'.Start length) (am'.End eval), 00:00:25 v #692 > > s |> update result 00:00:25 v #693 > > ) 00:00:25 v #694 > > 00:00:25 v #695 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #696 > > //// test 00:00:25 v #697 > > ///! fsharp 00:00:25 v #698 > > ///! cuda 00:00:25 v #699 > > ///! typescript 00:00:25 v #700 > > 00:00:25 v #701 > > "abcdef" 00:00:25 v #702 > > |> parse (any_string 3i32) 00:00:25 v #703 > > |> resultm.get 00:00:25 v #704 > > |> sm'.format_debug 00:00:25 v #705 > > |> _assert_eq ( 00:00:25 v #706 > > ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line 00:00:25 v #707 > > = 1i32; col = 4i32 } }) 00:00:25 v #708 > > |> sm'.format_debug 00:00:25 v #709 > > ) 00:00:28 v #710 > > 00:00:28 v #711 > > ╭─[ 2.28s - return value ]─────────────────────────────────────────────────────╮ 00:00:28 v #712 > > │ .py output (Cuda): │ 00:00:28 v #713 > > │ __assert_eq / actual: ('abc', 'def', abc, 1, 4) / expected: ('abc', 'def', │ 00:00:28 v #714 > > │ abc, 1, 4) │ 00:00:28 v #715 > > │ │ 00:00:28 v #716 > > │ .ts output: │ 00:00:28 v #717 > > │ __assert_eq / actual: abc,def,abc,1,4 / expected: abc,def,abc,1,4 │ 00:00:28 v #718 > > │ │ 00:00:28 v #719 > > │ │ 00:00:28 v #720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 v #721 > > 00:00:28 v #722 > > ╭─[ 2.28s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:28 v #723 > > │ .fsx output: │ 00:00:28 v #724 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)" / expected: "struct │ 00:00:28 v #725 > > │ ("abc", "def", abc, 1, 4)" │ 00:00:28 v #726 > > │ │ 00:00:28 v #727 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 v #728 > > 00:00:28 v #729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:28 v #730 > > //// test 00:00:28 v #731 > > 00:00:28 v #732 > > "abcdef" 00:00:28 v #733 > > |> parse_ (any_string__ 3) 00:00:28 v #734 > > |> resultm.get 00:00:28 v #735 > > |> sm'.obj_to_string 00:00:28 v #736 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |> 00:00:28 v #737 > > sm'.obj_to_string) 00:00:28 v #738 > > 00:00:28 v #739 > > ╭─[ 502.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:28 v #740 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected: "(abc, (Ln: 1, │ 00:00:28 v #741 > > │ Col: 4))" │ 00:00:28 v #742 > > │ │ 00:00:28 v #743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 v #744 > > 00:00:28 v #745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:28 v #746 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:28 v #747 > > │ ### skip_any_string │ 00:00:28 v #748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 v #749 > > 00:00:28 v #750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:28 v #751 > > inl skip_any_string length : parser () = fun input, s => 00:00:28 v #752 > > if sm'.length input < length then 00:00:28 v #753 > > backend_switch { 00:00:28 v #754 > > Fsharp = fun () => $'$"parsing.skip_any_string / unexpected end of 00:00:28 v #755 > > input / s: %A{!s}"' : string 00:00:28 v #756 > > Python = fun () => $'f"parsing.skip_any_string / unexpected end of 00:00:28 v #757 > > input / s: {!s}"' : string 00:00:28 v #758 > > } 00:00:28 v #759 > > |> Error 00:00:28 v #760 > > else 00:00:28 v #761 > > Ok ( 00:00:28 v #762 > > (), 00:00:28 v #763 > > input |> sm'.range (am'.Start length) (am'.End eval), 00:00:28 v #764 > > s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:00:28 v #765 > > length)) 00:00:28 v #766 > > ) 00:00:29 v #767 > > 00:00:29 v #768 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 v #769 > > //// test 00:00:29 v #770 > > ///! fsharp 00:00:29 v #771 > > ///! cuda 00:00:29 v #772 > > ///! typescript 00:00:29 v #773 > > 00:00:29 v #774 > > "abcdef" 00:00:29 v #775 > > |> parse (skip_any_string 3i32) 00:00:29 v #776 > > |> resultm.get 00:00:29 v #777 > > |> sm'.format_debug 00:00:29 v #778 > > |> _assert_eq ( 00:00:29 v #779 > > ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line = 00:00:29 v #780 > > 1i32; col = 4i32 } }) 00:00:29 v #781 > > |> sm'.format_debug 00:00:29 v #782 > > ) 00:00:31 v #783 > > 00:00:31 v #784 > > ╭─[ 2.10s - return value ]─────────────────────────────────────────────────────╮ 00:00:31 v #785 > > │ .py output (Cuda): │ 00:00:31 v #786 > > │ __assert_eq / actual: ('def', abc, 1, 4) / expected: ('def', abc, 1, 4) │ 00:00:31 v #787 > > │ │ 00:00:31 v #788 > > │ .ts output: │ 00:00:31 v #789 > > │ __assert_eq / actual: def,abc,1,4 / expected: def,abc,1,4 │ 00:00:31 v #790 > > │ │ 00:00:31 v #791 > > │ │ 00:00:31 v #792 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 v #793 > > 00:00:31 v #794 > > ╭─[ 2.11s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:31 v #795 > > │ .fsx output: │ 00:00:31 v #796 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected: "struct │ 00:00:31 v #797 > > │ ("def", abc, 1, 4)" │ 00:00:31 v #798 > > │ │ 00:00:31 v #799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 v #800 > > 00:00:31 v #801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 v #802 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 v #803 > > │ ### (>>.) │ 00:00:31 v #804 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 v #805 > > 00:00:31 v #806 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 v #807 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s => 00:00:31 v #808 > > match a (input, s) with 00:00:31 v #809 > > | Ok (_, rest, s) => b (rest, s) 00:00:31 v #810 > > | Error e => Error e 00:00:31 v #811 > > 00:00:31 v #812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 v #813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 v #814 > > │ ### (>>.) │ 00:00:31 v #815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 v #816 > > 00:00:31 v #817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 v #818 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s => 00:00:31 v #819 > > match a (input, s) with 00:00:31 v #820 > > | Ok (result, rest, s) => 00:00:31 v #821 > > b (rest, s) 00:00:31 v #822 > > |> resultm.map fun _, rest, s => 00:00:31 v #823 > > result, rest, s 00:00:31 v #824 > > | Error e => Error e 00:00:32 v #825 > > 00:00:32 v #826 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 v #827 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 v #828 > > │ ### (.>>.) │ 00:00:32 v #829 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 v #830 > > 00:00:32 v #831 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 v #832 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun 00:00:32 v #833 > > input, s => 00:00:32 v #834 > > match a (input, s) with 00:00:32 v #835 > > | Ok (result_a, rest, s) => 00:00:32 v #836 > > b (rest, s) 00:00:32 v #837 > > |> resultm.map fun result_b, rest, s => 00:00:32 v #838 > > (result_a, result_b), rest, s 00:00:32 v #839 > > | Error e => Error e 00:00:32 v #840 > > 00:00:32 v #841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 v #842 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 v #843 > > │ ### (>>%) │ 00:00:32 v #844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 v #845 > > 00:00:32 v #846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 v #847 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u = 00:00:32 v #848 > > a >> resultm.map fun _, rest, s => 00:00:32 v #849 > > b, rest, s 00:00:32 v #850 > > 00:00:32 v #851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 v #852 > > //// test 00:00:32 v #853 > > ///! fsharp 00:00:32 v #854 > > ///! cuda 00:00:32 v #855 > > ///! typescript 00:00:32 v #856 > > 00:00:32 v #857 > > "abc" 00:00:32 v #858 > > |> parse (p_char 'a' >>. p_char 'b') 00:00:32 v #859 > > |> resultm.get 00:00:32 v #860 > > |> sm'.format_debug 00:00:32 v #861 > > |> _assert_eq ( 00:00:32 v #862 > > ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line = 00:00:32 v #863 > > 1i32; col = 3i32 } }) 00:00:32 v #864 > > |> sm'.format_debug 00:00:32 v #865 > > ) 00:00:32 v #866 > > 00:00:32 v #867 > > "abc\ndef\nghi" 00:00:32 v #868 > > |> parse (skip_any_string 5i32 >>. p_char 'a') 00:00:32 v #869 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n 00:00:32 v #870 > > ^\n") 00:00:35 v #871 > > 00:00:35 v #872 > > ╭─[ 2.28s - return value ]─────────────────────────────────────────────────────╮ 00:00:35 v #873 > > │ │ 00:00:35 v #874 > > │ .py output (Cuda): │ 00:00:35 v #875 > > │ __assert_eq / actual: ('b', 'c', ab, 1, 3) / expected: ('b', 'c', ab, 1, 3) │ 00:00:35 v #876 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 'a' / line: 2 / │ 00:00:35 v #877 > > │ col: 2\ndef\n ^\n") / expected: US0_1(v0="parsing.p_char / expected: 'a' / │ 00:00:35 v #878 > > │ line: 2 / col: 2\ndef\n ^\n") │ 00:00:35 v #879 > > │ │ 00:00:35 v #880 > > │ │ 00:00:35 v #881 > > │ .ts output: │ 00:00:35 v #882 > > │ __assert_eq / actual: b,c,ab,1,3 / expected: b,c,ab,1,3 │ 00:00:35 v #883 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'a' / line: 2 / col: │ 00:00:35 v #884 > > │ 2 │ 00:00:35 v #885 > > │ def │ 00:00:35 v #886 > > │ ^ │ 00:00:35 v #887 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'a' / line: 2 / col: 2 │ 00:00:35 v #888 > > │ def │ 00:00:35 v #889 > > │ ^ │ 00:00:35 v #890 > > │ ) │ 00:00:35 v #891 > > │ │ 00:00:35 v #892 > > │ │ 00:00:35 v #893 > > │ │ 00:00:35 v #894 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 v #895 > > 00:00:35 v #896 > > ╭─[ 2.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:35 v #897 > > │ .fsx output: │ 00:00:35 v #898 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)" / expected: "struct │ 00:00:35 v #899 > > │ ('b', "c", ab, 1, 3)" │ 00:00:35 v #900 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: │ 00:00:35 v #901 > > │ 2 │ 00:00:35 v #902 > > │ def │ 00:00:35 v #903 > > │ ^ │ 00:00:35 v #904 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: 2 │ 00:00:35 v #905 > > │ def │ 00:00:35 v #906 > > │ ^ │ 00:00:35 v #907 > > │ " │ 00:00:35 v #908 > > │ │ 00:00:35 v #909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 v #910 > > 00:00:35 v #911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 v #912 > > //// test 00:00:35 v #913 > > 00:00:35 v #914 > > "abc" 00:00:35 v #915 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b') 00:00:35 v #916 > > |> resultm.get 00:00:35 v #917 > > |> sm'.obj_to_string 00:00:35 v #918 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |> 00:00:35 v #919 > > sm'.obj_to_string) 00:00:35 v #920 > > 00:00:35 v #921 > > ╭─[ 476.52ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:35 v #922 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected: "(b, (Ln: 1, Col: │ 00:00:35 v #923 > > │ 3))" │ 00:00:35 v #924 > > │ │ 00:00:35 v #925 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 v #926 > > 00:00:35 v #927 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 v #928 > > //// test 00:00:35 v #929 > > 00:00:35 v #930 > > "abc\ndef\nghi" 00:00:35 v #931 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a') 00:00:35 v #932 > > |> resultm.unwrap_err 00:00:35 v #933 > > |> sm'.obj_to_string 00:00:35 v #934 > > |> sm'.replace "\r\n" "\n" 00:00:35 v #935 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2 00:00:35 v #936 > > Col: 2\nExpecting: 'a'\n)" 00:00:36 v #937 > > 00:00:36 v #938 > > ╭─[ 511.28ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:36 v #939 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2 │ 00:00:36 v #940 > > │ def │ 00:00:36 v #941 > > │ ^ │ 00:00:36 v #942 > > │ Expecting: 'a' │ 00:00:36 v #943 > > │ , Error in Ln: 2 Col: 2 │ 00:00:36 v #944 > > │ Expecting: 'a' │ 00:00:36 v #945 > > │ )" / expected: "(Error in Ln: 2 Col: 2 │ 00:00:36 v #946 > > │ def │ 00:00:36 v #947 > > │ ^ │ 00:00:36 v #948 > > │ Expecting: 'a' │ 00:00:36 v #949 > > │ , Error in Ln: 2 Col: 2 │ 00:00:36 v #950 > > │ Expecting: 'a' │ 00:00:36 v #951 > > │ )" │ 00:00:36 v #952 > > │ │ 00:00:36 v #953 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 v #954 > > 00:00:36 v #955 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 v #956 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 v #957 > > │ ### none_of │ 00:00:36 v #958 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 v #959 > > 00:00:36 v #960 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 v #961 > > inl none_of (chars : list char) : parser char = function 00:00:36 v #962 > > | "", s => 00:00:36 v #963 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:00:36 v #964 > > backend_switch { 00:00:36 v #965 > > Fsharp = fun () => $'$"parsing.none_of / unexpected end of input 00:00:36 v #966 > > chars: %A{!chars} / s: %A{!s}"' : string 00:00:36 v #967 > > Python = fun () => $'f"parsing.none_of / unexpected end of input 00:00:36 v #968 > > chars: {!chars} / s: {!s}"' : string 00:00:36 v #969 > > } 00:00:36 v #970 > > |> Error 00:00:36 v #971 > > | x, s => 00:00:36 v #972 > > inl first_char = x |> sm'.index 0i32 00:00:36 v #973 > > if chars |> listm'.exists' ((=) first_char) |> not then 00:00:36 v #974 > > Ok ( 00:00:36 v #975 > > first_char, 00:00:36 v #976 > > x |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:36 v #977 > > s |> update (first_char |> sm'.obj_to_string) 00:00:36 v #978 > > ) 00:00:36 v #979 > > else 00:00:36 v #980 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:00:36 v #981 > > backend_switch { 00:00:36 v #982 > > Fsharp = fun () => $'$"parsing.none_of / unexpected char: 00:00:36 v #983 > > \'{!first_char}\' / chars: %A{!chars} / s: %A{!s}"' : string 00:00:36 v #984 > > Python = fun () => $'f"parsing.none_of / unexpected char: 00:00:36 v #985 > > \'{!first_char}\' / chars: {!chars} / s: {!s}"' : string 00:00:36 v #986 > > } 00:00:36 v #987 > > |> Error 00:00:36 v #988 > > 00:00:36 v #989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 v #990 > > //// test 00:00:36 v #991 > > ///! fsharp 00:00:36 v #992 > > ///! cuda 00:00:36 v #993 > > ///! typescript 00:00:36 v #994 > > 00:00:36 v #995 > > "abc" 00:00:36 v #996 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:00:36 v #997 > > |> _assert_eq ( 00:00:36 v #998 > > backend_switch { 00:00:36 v #999 > > Fsharp = fun () => 00:00:36 v #1000 > > run_target function 00:00:36 v #1001 > > | TypeScript _ => fun () => "parsing.none_of / unexpected char: 00:00:36 v #1002 > > \'a\' / chars: a,b,c / s: ,1,1" : string 00:00:36 v #1003 > > | _ => fun () => join "parsing.none_of / unexpected char: \'a\' 00:00:36 v #1004 > > chars: [[|'a'; 'b'; 'c'|]] / s: struct (, 1, 1)" : string 00:00:36 v #1005 > > Python = fun () => "parsing.none_of / unexpected char: \'a\' / chars: 00:00:36 v #1006 > > [['a' 'b' 'c']] / s: (, 1, 1)" : string 00:00:36 v #1007 > > } 00:00:36 v #1008 > > |> Error 00:00:36 v #1009 > > ) 00:00:36 v #1010 > > 00:00:36 v #1011 > > "def" 00:00:36 v #1012 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:00:36 v #1013 > > |> resultm.get 00:00:36 v #1014 > > |> sm'.format_debug 00:00:36 v #1015 > > |> _assert_eq ( 00:00:36 v #1016 > > ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line = 00:00:36 v #1017 > > 1i32; col = 2i32 } }) 00:00:36 v #1018 > > |> sm'.format_debug 00:00:36 v #1019 > > ) 00:00:38 v #1020 > > 00:00:38 v #1021 > > ╭─[ 2.30s - return value ]─────────────────────────────────────────────────────╮ 00:00:38 v #1022 > > │ │ 00:00:38 v #1023 > > │ .py output (Cuda): │ 00:00:38 v #1024 > > │ __assert_eq / actual: US0_1(v0="parsing.none_of / unexpected char: 'a' / │ 00:00:38 v #1025 > > │ chars: ['a' 'b' 'c'] / s: (, 1, 1)") / expected: US0_1(v0="parsing.none_of / │ 00:00:38 v #1026 > > │ unexpected char: 'a' / chars: ['a' 'b' 'c'] / s: (, 1, 1)") │ 00:00:38 v #1027 > > │ __assert_eq / actual: ('d', 'ef', d, 1, 2) / expected: ('d', 'ef', d, 1, 2) │ 00:00:38 v #1028 > > │ │ 00:00:38 v #1029 > > │ │ 00:00:38 v #1030 > > │ .ts output: │ 00:00:38 v #1031 > > │ __assert_eq / actual: US0_1 (parsing.none_of / unexpected char: 'a' / chars: │ 00:00:38 v #1032 > > │ a,b,c / s: ,1,1) / expected: US0_1 (parsing.none_of / unexpected char: 'a' / │ 00:00:38 v #1033 > > │ chars: a,b,c / s: ,1,1) │ 00:00:38 v #1034 > > │ __assert_eq / actual: d,ef,d,1,2 / expected: d,ef,d,1,2 │ 00:00:38 v #1035 > > │ │ 00:00:38 v #1036 > > │ │ 00:00:38 v #1037 > > │ │ 00:00:38 v #1038 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:38 v #1039 > > 00:00:38 v #1040 > > ╭─[ 2.31s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:38 v #1041 > > │ .fsx output: │ 00:00:38 v #1042 > > │ __assert_eq / actual: US0_1 │ 00:00:38 v #1043 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s: │ 00:00:38 v #1044 > > │ struct (, 1, 1)" / expected: US0_1 │ 00:00:38 v #1045 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s: │ 00:00:38 v #1046 > > │ struct (, 1, 1)" │ 00:00:38 v #1047 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)" / expected: "struct │ 00:00:38 v #1048 > > │ ('d', "ef", d, 1, 2)" │ 00:00:38 v #1049 > > │ │ 00:00:38 v #1050 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:38 v #1051 > > 00:00:38 v #1052 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:38 v #1053 > > //// test 00:00:38 v #1054 > > 00:00:38 v #1055 > > "abc" 00:00:38 v #1056 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:00:38 v #1057 > > |> resultm.unwrap_err 00:00:38 v #1058 > > |> sm'.obj_to_string 00:00:38 v #1059 > > |> sm'.replace "\r\n" "\n" 00:00:38 v #1060 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in 00:00:38 v #1061 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"') 00:00:38 v #1062 > > 00:00:38 v #1063 > > "def" 00:00:38 v #1064 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:00:38 v #1065 > > |> resultm.get 00:00:38 v #1066 > > |> sm'.obj_to_string 00:00:38 v #1067 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:38 v #1068 > > sm'.obj_to_string) 00:00:39 v #1069 > > 00:00:39 v #1070 > > ╭─[ 566.85ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:39 v #1071 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1 │ 00:00:39 v #1072 > > │ abc │ 00:00:39 v #1073 > > │ ^ │ 00:00:39 v #1074 > > │ Expecting: any char not in ‘abc’ │ 00:00:39 v #1075 > > │ , Error in Ln: 1 Col: 1 │ 00:00:39 v #1076 > > │ Expecting: any char not in ‘abc’ │ 00:00:39 v #1077 > > │ )" / expected: "(Error in Ln: 1 Col: 1 │ 00:00:39 v #1078 > > │ abc │ 00:00:39 v #1079 > > │ ^ │ 00:00:39 v #1080 > > │ Expecting: any char not in ‘abc’ │ 00:00:39 v #1081 > > │ , Error in Ln: 1 Col: 1 │ 00:00:39 v #1082 > > │ Expecting: any char not in ‘abc’ │ 00:00:39 v #1083 > > │ )" │ 00:00:39 v #1084 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected: "(d, (Ln: 1, Col: │ 00:00:39 v #1085 > > │ 2))" │ 00:00:39 v #1086 > > │ │ 00:00:39 v #1087 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:39 v #1088 > > 00:00:39 v #1089 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:39 v #1090 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:39 v #1091 > > │ ### (<|>) │ 00:00:39 v #1092 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:39 v #1093 > > 00:00:39 v #1094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:39 v #1095 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s => 00:00:39 v #1096 > > match a (input, s) with 00:00:39 v #1097 > > | Ok _ as result => result 00:00:39 v #1098 > > | Error _ => b (input, s) 00:00:39 v #1099 > > 00:00:39 v #1100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:39 v #1101 > > //// test 00:00:39 v #1102 > > ///! fsharp 00:00:39 v #1103 > > ///! cuda 00:00:39 v #1104 > > ///! typescript 00:00:39 v #1105 > > 00:00:39 v #1106 > > "abc" 00:00:39 v #1107 > > |> parse (p_char 'a' <|> p_char 'b') 00:00:39 v #1108 > > |> resultm.get 00:00:39 v #1109 > > |> sm'.format_debug 00:00:39 v #1110 > > |> _assert_eq ( 00:00:39 v #1111 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:39 v #1112 > > 1i32; col = 2i32 } }) 00:00:39 v #1113 > > |> sm'.format_debug 00:00:39 v #1114 > > ) 00:00:39 v #1115 > > 00:00:39 v #1116 > > "cba" 00:00:39 v #1117 > > |> parse (p_char 'a' <|> p_char 'b') 00:00:39 v #1118 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:00:39 v #1119 > > 1\ncba\n^\n") 00:00:42 v #1120 > > 00:00:42 v #1121 > > ╭─[ 2.26s - return value ]─────────────────────────────────────────────────────╮ 00:00:42 v #1122 > > │ │ 00:00:42 v #1123 > > │ .py output (Cuda): │ 00:00:42 v #1124 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 'bc', a, 1, 2) │ 00:00:42 v #1125 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 'b' / line: 1 / │ 00:00:42 v #1126 > > │ col: 1\ncba\n^\n") / expected: US0_1(v0="parsing.p_char / expected: 'b' / │ 00:00:42 v #1127 > > │ line: 1 / col: 1\ncba\n^\n") │ 00:00:42 v #1128 > > │ │ 00:00:42 v #1129 > > │ │ 00:00:42 v #1130 > > │ .ts output: │ 00:00:42 v #1131 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 │ 00:00:42 v #1132 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'b' / line: 1 / col: │ 00:00:42 v #1133 > > │ 1 │ 00:00:42 v #1134 > > │ cba │ 00:00:42 v #1135 > > │ ^ │ 00:00:42 v #1136 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:00:42 v #1137 > > │ cba │ 00:00:42 v #1138 > > │ ^ │ 00:00:42 v #1139 > > │ ) │ 00:00:42 v #1140 > > │ │ 00:00:42 v #1141 > > │ │ 00:00:42 v #1142 > > │ │ 00:00:42 v #1143 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 v #1144 > > 00:00:42 v #1145 > > ╭─[ 2.26s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:42 v #1146 > > │ .fsx output: │ 00:00:42 v #1147 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:00:42 v #1148 > > │ ('a', "bc", a, 1, 2)" │ 00:00:42 v #1149 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: │ 00:00:42 v #1150 > > │ 1 │ 00:00:42 v #1151 > > │ cba │ 00:00:42 v #1152 > > │ ^ │ 00:00:42 v #1153 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:00:42 v #1154 > > │ cba │ 00:00:42 v #1155 > > │ ^ │ 00:00:42 v #1156 > > │ " │ 00:00:42 v #1157 > > │ │ 00:00:42 v #1158 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 v #1159 > > 00:00:42 v #1160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #1161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:42 v #1162 > > │ ### (|>>) │ 00:00:42 v #1163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 v #1164 > > 00:00:42 v #1165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #1166 > > inl (|>>) p f : parser _ = 00:00:42 v #1167 > > p >> resultm.map fun result, rest => 00:00:42 v #1168 > > f result, rest 00:00:42 v #1169 > > 00:00:42 v #1170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #1171 > > //// test 00:00:42 v #1172 > > ///! fsharp 00:00:42 v #1173 > > ///! cuda 00:00:42 v #1174 > > ///! typescript 00:00:42 v #1175 > > 00:00:42 v #1176 > > "abc" 00:00:42 v #1177 > > |> parse (p_char 'a' |>> sm'.char_to_upper) 00:00:42 v #1178 > > |> resultm.get 00:00:42 v #1179 > > |> sm'.format_debug 00:00:42 v #1180 > > |> _assert_eq ( 00:00:42 v #1181 > > ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:42 v #1182 > > 1i32; col = 2i32 } }) 00:00:42 v #1183 > > |> sm'.format_debug 00:00:42 v #1184 > > ) 00:00:44 v #1185 > > 00:00:44 v #1186 > > ╭─[ 2.19s - return value ]─────────────────────────────────────────────────────╮ 00:00:44 v #1187 > > │ .py output (Cuda): │ 00:00:44 v #1188 > > │ __assert_eq / actual: ('A', 'bc', a, 1, 2) / expected: ('A', 'bc', a, 1, 2) │ 00:00:44 v #1189 > > │ │ 00:00:44 v #1190 > > │ .ts output: │ 00:00:44 v #1191 > > │ __assert_eq / actual: A,bc,a,1,2 / expected: A,bc,a,1,2 │ 00:00:44 v #1192 > > │ │ 00:00:44 v #1193 > > │ │ 00:00:44 v #1194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 v #1195 > > 00:00:44 v #1196 > > ╭─[ 2.19s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:44 v #1197 > > │ .fsx output: │ 00:00:44 v #1198 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)" / expected: "struct │ 00:00:44 v #1199 > > │ ('A', "bc", a, 1, 2)" │ 00:00:44 v #1200 > > │ │ 00:00:44 v #1201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 v #1202 > > 00:00:44 v #1203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 v #1204 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 v #1205 > > │ ### many │ 00:00:44 v #1206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 v #1207 > > 00:00:44 v #1208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 v #1209 > > inl many p : parser (list _) = fun input => 00:00:44 v #1210 > > let rec loop acc input = 00:00:44 v #1211 > > match p input with 00:00:44 v #1212 > > | Ok (result, rest) => loop (result :: acc) rest 00:00:44 v #1213 > > | Error _ => Ok (acc |> listm.rev, input) 00:00:44 v #1214 > > loop [[]] input 00:00:45 v #1215 > > 00:00:45 v #1216 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 v #1217 > > //// test 00:00:45 v #1218 > > ///! fsharp 00:00:45 v #1219 > > ///! cuda 00:00:45 v #1220 > > ///! typescript 00:00:45 v #1221 > > 00:00:45 v #1222 > > "aaabbc" 00:00:45 v #1223 > > |> parse (many (p_char 'a' <|> p_char 'b')) 00:00:45 v #1224 > > |> resultm.get 00:00:45 v #1225 > > |> sm'.format_debug 00:00:45 v #1226 > > |> _assert_eq ( 00:00:45 v #1227 > > ( 00:00:45 v #1228 > > [['a'; 'a'; 'a'; 'b'; 'b']], 00:00:45 v #1229 > > "c", 00:00:45 v #1230 > > { line_text = "aaabb" |> sm'.string_builder; position = { line = 1i32; 00:00:45 v #1231 > > col = 6i32 } } 00:00:45 v #1232 > > ) 00:00:45 v #1233 > > |> sm'.format_debug 00:00:45 v #1234 > > ) 00:00:47 v #1235 > > 00:00:47 v #1236 > > ╭─[ 2.21s - return value ]─────────────────────────────────────────────────────╮ 00:00:47 v #1237 > > │ .py output (Cuda): │ 00:00:47 v #1238 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', │ 00:00:47 v #1239 > > │ v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) / │ 00:00:47 v #1240 > > │ expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='b', │ 00:00:47 v #1241 > > │ v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) │ 00:00:47 v #1242 > > │ │ 00:00:47 v #1243 > > │ .ts output: │ 00:00:47 v #1244 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, UH0_1 (b, │ 00:00:47 v #1245 > > │ UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, │ 00:00:47 v #1246 > > │ UH0_1 (b, UH0_0))))),c,aaabb,1,6 │ 00:00:47 v #1247 > > │ │ 00:00:47 v #1248 > > │ │ 00:00:47 v #1249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:47 v #1250 > > 00:00:47 v #1251 > > ╭─[ 2.21s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:47 v #1252 > > │ .fsx output: │ 00:00:47 v #1253 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1 │ 00:00:47 v #1254 > > │ ('b', UH0_1 ('b', UH0_0))))), │ 00:00:47 v #1255 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a', │ 00:00:47 v #1256 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), │ 00:00:47 v #1257 > > │ "c", aaabb, 1, 6)" │ 00:00:47 v #1258 > > │ │ 00:00:47 v #1259 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:47 v #1260 > > 00:00:47 v #1261 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:47 v #1262 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:47 v #1263 > > │ ### many1_chars │ 00:00:47 v #1264 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:47 v #1265 > > 00:00:47 v #1266 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:47 v #1267 > > inl many1_chars p : parser string = 00:00:47 v #1268 > > p >> resultm.map fun first_result, rest => 00:00:47 v #1269 > > let rec loop acc input = 00:00:47 v #1270 > > match p input with 00:00:47 v #1271 > > | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest 00:00:47 v #1272 > > | Error _ => acc, input 00:00:47 v #1273 > > loop (first_result |> sm'.obj_to_string) rest 00:00:48 v #1274 > > 00:00:48 v #1275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:48 v #1276 > > //// test 00:00:48 v #1277 > > ///! fsharp 00:00:48 v #1278 > > ///! cuda 00:00:48 v #1279 > > ///! typescript 00:00:48 v #1280 > > 00:00:48 v #1281 > > "aaabbc" 00:00:48 v #1282 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b')) 00:00:48 v #1283 > > |> resultm.get 00:00:48 v #1284 > > |> sm'.format_debug 00:00:48 v #1285 > > |> _assert_eq ( 00:00:48 v #1286 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:00:48 v #1287 > > line = 1i32; col = 6i32 } }) 00:00:48 v #1288 > > |> sm'.format_debug 00:00:48 v #1289 > > ) 00:00:50 v #1290 > > 00:00:50 v #1291 > > ╭─[ 2.21s - return value ]─────────────────────────────────────────────────────╮ 00:00:50 v #1292 > > │ .py output (Cuda): │ 00:00:50 v #1293 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: ('aaabb', 'c', │ 00:00:50 v #1294 > > │ aaabb, 1, 6) │ 00:00:50 v #1295 > > │ │ 00:00:50 v #1296 > > │ .ts output: │ 00:00:50 v #1297 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: aaabb,c,aaabb,1,6 │ 00:00:50 v #1298 > > │ │ 00:00:50 v #1299 > > │ │ 00:00:50 v #1300 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 v #1301 > > 00:00:50 v #1302 > > ╭─[ 2.21s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:50 v #1303 > > │ .fsx output: │ 00:00:50 v #1304 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected: │ 00:00:50 v #1305 > > │ "struct ("aaabb", "c", aaabb, 1, 6)" │ 00:00:50 v #1306 > > │ │ 00:00:50 v #1307 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 v #1308 > > 00:00:50 v #1309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:50 v #1310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:50 v #1311 > > │ ### many_chars │ 00:00:50 v #1312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 v #1313 > > 00:00:50 v #1314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:50 v #1315 > > inl many_chars p : parser string = fun input => 00:00:50 v #1316 > > match many1_chars p input with 00:00:50 v #1317 > > | Ok (result, rest) => Ok (result, rest) 00:00:50 v #1318 > > | Error e => Ok ("", input) 00:00:50 v #1319 > > 00:00:50 v #1320 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:50 v #1321 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:50 v #1322 > > │ ### many_chars_till │ 00:00:50 v #1323 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 v #1324 > > 00:00:50 v #1325 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:50 v #1326 > > inl many_chars_till p end_p : parser string = fun input => 00:00:50 v #1327 > > match end_p input with 00:00:50 v #1328 > > | Ok _ => Ok ("", input) 00:00:50 v #1329 > > | Error _ => many_chars p input 00:00:51 v #1330 > > 00:00:51 v #1331 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:51 v #1332 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:51 v #1333 > > │ ### many1 │ 00:00:51 v #1334 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:51 v #1335 > > 00:00:51 v #1336 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:51 v #1337 > > inl many1 p : parser (list _) = 00:00:51 v #1338 > > p >> resultm.map fun first_result, rest => 00:00:51 v #1339 > > let rec loop acc input = 00:00:51 v #1340 > > match p input with 00:00:51 v #1341 > > | Ok (result, rest) => loop (result :: acc) rest 00:00:51 v #1342 > > | Error _ => acc |> listm.rev, input 00:00:51 v #1343 > > loop [[ first_result ]] rest 00:00:51 v #1344 > > 00:00:51 v #1345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:51 v #1346 > > //// test 00:00:51 v #1347 > > ///! fsharp 00:00:51 v #1348 > > ///! cuda 00:00:51 v #1349 > > ///! typescript 00:00:51 v #1350 > > 00:00:51 v #1351 > > "aaabbc" 00:00:51 v #1352 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:00:51 v #1353 > > |> resultm.get 00:00:51 v #1354 > > |> sm'.format_debug 00:00:51 v #1355 > > |> _assert_eq ( 00:00:51 v #1356 > > ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |> 00:00:51 v #1357 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } }) 00:00:51 v #1358 > > |> sm'.format_debug 00:00:51 v #1359 > > ) 00:00:51 v #1360 > > 00:00:51 v #1361 > > "bcc" 00:00:51 v #1362 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:00:51 v #1363 > > |> resultm.get 00:00:51 v #1364 > > |> sm'.format_debug 00:00:51 v #1365 > > |> _assert_eq ( 00:00:51 v #1366 > > ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line = 00:00:51 v #1367 > > 1i32; col = 2i32 } }) 00:00:51 v #1368 > > |> sm'.format_debug 00:00:51 v #1369 > > ) 00:00:51 v #1370 > > 00:00:51 v #1371 > > "cba" 00:00:51 v #1372 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:00:51 v #1373 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:00:51 v #1374 > > 1\ncba\n^\n") 00:00:54 v #1375 > > 00:00:54 v #1376 > > ╭─[ 2.39s - return value ]─────────────────────────────────────────────────────╮ 00:00:54 v #1377 > > │ │ 00:00:54 v #1378 > > │ .py output (Cuda): │ 00:00:54 v #1379 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', │ 00:00:54 v #1380 > > │ v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) / │ 00:00:54 v #1381 > > │ expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='b', │ 00:00:54 v #1382 > > │ v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) │ 00:00:54 v #1383 > > │ __assert_eq / actual: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2) / expected: │ 00:00:54 v #1384 > > │ (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2) │ 00:00:54 v #1385 > > │ __assert_eq / actual: US1_1(v0="parsing.p_char / expected: 'b' / line: 1 / │ 00:00:54 v #1386 > > │ col: 1\ncba\n^\n") / expected: US1_1(v0="parsing.p_char / expected: 'b' / │ 00:00:54 v #1387 > > │ line: 1 / col: 1\ncba\n^\n") │ 00:00:54 v #1388 > > │ │ 00:00:54 v #1389 > > │ │ 00:00:54 v #1390 > > │ .ts output: │ 00:00:54 v #1391 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, UH0_1 (b, │ 00:00:54 v #1392 > > │ UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, │ 00:00:54 v #1393 > > │ UH0_1 (b, UH0_0))))),c,aaabb,1,6 │ 00:00:54 v #1394 > > │ __assert_eq / actual: UH0_1 (b, UH0_0),cc,b,1,2 / expected: UH0_1 (b, │ 00:00:54 v #1395 > > │ UH0_0),cc,b,1,2 │ 00:00:54 v #1396 > > │ __assert_eq / actual: US1_1 (parsing.p_char / expected: 'b' / line: 1 / col: │ 00:00:54 v #1397 > > │ 1 │ 00:00:54 v #1398 > > │ cba │ 00:00:54 v #1399 > > │ ^ │ 00:00:54 v #1400 > > │ ) / expected: US1_1 (parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:00:54 v #1401 > > │ cba │ 00:00:54 v #1402 > > │ ^ │ 00:00:54 v #1403 > > │ ) │ 00:00:54 v #1404 > > │ │ 00:00:54 v #1405 > > │ │ 00:00:54 v #1406 > > │ │ 00:00:54 v #1407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:54 v #1408 > > 00:00:54 v #1409 > > ╭─[ 2.39s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:54 v #1410 > > │ .fsx output: │ 00:00:54 v #1411 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1 │ 00:00:54 v #1412 > > │ ('b', UH0_1 ('b', UH0_0))))), │ 00:00:54 v #1413 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a', │ 00:00:54 v #1414 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), │ 00:00:54 v #1415 > > │ "c", aaabb, 1, 6)" │ 00:00:54 v #1416 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" / │ 00:00:54 v #1417 > > │ expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" │ 00:00:54 v #1418 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: │ 00:00:54 v #1419 > > │ 1 │ 00:00:54 v #1420 > > │ cba │ 00:00:54 v #1421 > > │ ^ │ 00:00:54 v #1422 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:00:54 v #1423 > > │ cba │ 00:00:54 v #1424 > > │ ^ │ 00:00:54 v #1425 > > │ " │ 00:00:54 v #1426 > > │ │ 00:00:54 v #1427 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:54 v #1428 > > 00:00:54 v #1429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:54 v #1430 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:54 v #1431 > > │ ### many1_strings │ 00:00:54 v #1432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:54 v #1433 > > 00:00:54 v #1434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:54 v #1435 > > inl many1_strings p : parser string = 00:00:54 v #1436 > > many1 p >> resultm.map fun results, rest => 00:00:54 v #1437 > > results 00:00:54 v #1438 > > |> listm.map sm'.obj_to_string 00:00:54 v #1439 > > |> listm'.box 00:00:54 v #1440 > > |> seq.of_list' 00:00:54 v #1441 > > |> sm'.concat "", 00:00:54 v #1442 > > rest 00:00:54 v #1443 > > 00:00:54 v #1444 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:54 v #1445 > > //// test 00:00:54 v #1446 > > ///! fsharp 00:00:54 v #1447 > > ///! cuda 00:00:54 v #1448 > > ///! typescript 00:00:54 v #1449 > > 00:00:54 v #1450 > > "aaabbc" 00:00:54 v #1451 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b')) 00:00:54 v #1452 > > |> resultm.get 00:00:54 v #1453 > > |> sm'.format_debug 00:00:54 v #1454 > > |> _assert_eq ( 00:00:54 v #1455 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:00:54 v #1456 > > line = 1i32; col = 6i32 } }) 00:00:54 v #1457 > > |> sm'.format_debug 00:00:54 v #1458 > > ) 00:00:56 v #1459 > > 00:00:56 v #1460 > > ╭─[ 2.39s - return value ]─────────────────────────────────────────────────────╮ 00:00:56 v #1461 > > │ .py output (Cuda): │ 00:00:56 v #1462 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: ('aaabb', 'c', │ 00:00:56 v #1463 > > │ aaabb, 1, 6) │ 00:00:56 v #1464 > > │ │ 00:00:56 v #1465 > > │ .ts output: │ 00:00:56 v #1466 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: aaabb,c,aaabb,1,6 │ 00:00:56 v #1467 > > │ │ 00:00:56 v #1468 > > │ │ 00:00:56 v #1469 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:56 v #1470 > > 00:00:56 v #1471 > > ╭─[ 2.39s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:56 v #1472 > > │ .fsx output: │ 00:00:56 v #1473 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected: │ 00:00:56 v #1474 > > │ "struct ("aaabb", "c", aaabb, 1, 6)" │ 00:00:56 v #1475 > > │ │ 00:00:56 v #1476 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:56 v #1477 > > 00:00:56 v #1478 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:56 v #1479 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:56 v #1480 > > │ ### many_strings │ 00:00:56 v #1481 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:56 v #1482 > > 00:00:56 v #1483 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:56 v #1484 > > inl many_strings p : parser string = fun input => 00:00:56 v #1485 > > match many p input with 00:00:56 v #1486 > > | Ok (results, rest) => 00:00:56 v #1487 > > Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list' 00:00:56 v #1488 > > |> sm'.concat "", rest) 00:00:56 v #1489 > > | Error e => Ok ("", input) 00:00:57 v #1490 > > 00:00:57 v #1491 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:57 v #1492 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:57 v #1493 > > │ ### choice │ 00:00:57 v #1494 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:57 v #1495 > > 00:00:57 v #1496 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:57 v #1497 > > inl choice parsers : parser _ = fun input => 00:00:57 v #1498 > > let rec loop = function 00:00:57 v #1499 > > | [[]] => Error "parsing.choice / no parsers succeeded" 00:00:57 v #1500 > > | p :: ps => 00:00:57 v #1501 > > match p input with 00:00:57 v #1502 > > | Ok _ as result => result 00:00:57 v #1503 > > | Error _ => loop ps 00:00:57 v #1504 > > loop parsers 00:00:57 v #1505 > > 00:00:57 v #1506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:57 v #1507 > > //// test 00:00:57 v #1508 > > ///! fsharp 00:00:57 v #1509 > > ///! cuda 00:00:57 v #1510 > > ///! typescript 00:00:57 v #1511 > > 00:00:57 v #1512 > > "bca" 00:00:57 v #1513 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]]) 00:00:57 v #1514 > > |> resultm.get 00:00:57 v #1515 > > |> sm'.format_debug 00:00:57 v #1516 > > |> _assert_eq ( 00:00:57 v #1517 > > ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line = 00:00:57 v #1518 > > 1i32; col = 2i32 } }) 00:00:57 v #1519 > > |> sm'.format_debug 00:00:57 v #1520 > > ) 00:00:57 v #1521 > > 00:00:57 v #1522 > > "cba" 00:00:57 v #1523 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]]) 00:00:57 v #1524 > > |> resultm.get 00:00:57 v #1525 > > |> sm'.format_debug 00:00:57 v #1526 > > |> _assert_eq ( 00:00:57 v #1527 > > ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line = 00:00:57 v #1528 > > 1i32; col = 2i32 } }) 00:00:57 v #1529 > > |> sm'.format_debug 00:00:57 v #1530 > > ) 00:01:00 v #1531 > > 00:01:00 v #1532 > > ╭─[ 2.37s - return value ]─────────────────────────────────────────────────────╮ 00:01:00 v #1533 > > │ │ 00:01:00 v #1534 > > │ .py output (Cuda): │ 00:01:00 v #1535 > > │ __assert_eq / actual: ('b', 'ca', b, 1, 2) / expected: ('b', 'ca', b, 1, 2) │ 00:01:00 v #1536 > > │ __assert_eq / actual: ('c', 'ba', c, 1, 2) / expected: ('c', 'ba', c, 1, 2) │ 00:01:00 v #1537 > > │ │ 00:01:00 v #1538 > > │ │ 00:01:00 v #1539 > > │ .ts output: │ 00:01:00 v #1540 > > │ __assert_eq / actual: b,ca,b,1,2 / expected: b,ca,b,1,2 │ 00:01:00 v #1541 > > │ __assert_eq / actual: c,ba,c,1,2 / expected: c,ba,c,1,2 │ 00:01:00 v #1542 > > │ │ 00:01:00 v #1543 > > │ │ 00:01:00 v #1544 > > │ │ 00:01:00 v #1545 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #1546 > > 00:01:00 v #1547 > > ╭─[ 2.37s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:00 v #1548 > > │ .fsx output: │ 00:01:00 v #1549 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)" / expected: "struct │ 00:01:00 v #1550 > > │ ('b', "ca", b, 1, 2)" │ 00:01:00 v #1551 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)" / expected: "struct │ 00:01:00 v #1552 > > │ ('c', "ba", c, 1, 2)" │ 00:01:00 v #1553 > > │ │ 00:01:00 v #1554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #1555 > > 00:01:00 v #1556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:00 v #1557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:00 v #1558 > > │ ### between │ 00:01:00 v #1559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:00 v #1560 > > 00:01:00 v #1561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:00 v #1562 > > inl between p_open p_close p_content : parser _ = fun input => 00:01:00 v #1563 > > match p_open input with 00:01:00 v #1564 > > | Ok (_, rest1) => 00:01:00 v #1565 > > match p_content rest1 with 00:01:00 v #1566 > > | Ok (result, rest2) => 00:01:00 v #1567 > > match p_close rest2 with 00:01:00 v #1568 > > | Ok (_, rest3) => Ok (result, rest3) 00:01:00 v #1569 > > | Error e => 00:01:00 v #1570 > > backend_switch { 00:01:00 v #1571 > > Fsharp = fun () => $'$"parsing.between / expected closing 00:01:00 v #1572 > > delimiter / e: %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2: 00:01:00 v #1573 > > %A{!rest2}"' : string 00:01:00 v #1574 > > Python = fun () => $'f"parsing.between / expected closing 00:01:00 v #1575 > > delimiter / e: {!e} / input: {!input} / rest1: {!rest1} / rest2: {!rest2}"' : 00:01:00 v #1576 > > string 00:01:00 v #1577 > > } 00:01:00 v #1578 > > |> Error 00:01:00 v #1579 > > | Error _ => Error "parsing.between / expected content" 00:01:00 v #1580 > > | Error e => Error e 00:01:00 v #1581 > > 00:01:00 v #1582 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:00 v #1583 > > //// test 00:01:00 v #1584 > > 00:01:00 v #1585 > > "[[aaabb" 00:01:00 v #1586 > > |> parse_ (between_ (p_char_ '[[') (p_char_ ']]') (many1_chars_ (p_char_ 'a' 00:01:00 v #1587 > > <|>$ p_char_ 'b'))) 00:01:00 v #1588 > > |> resultm.unwrap_err 00:01:00 v #1589 > > |> sm'.format_debug 00:01:01 v #1590 > > 00:01:01 v #1591 > > ╭─[ 572.20ms - return value ]──────────────────────────────────────────────────╮ 00:01:01 v #1592 > > │ struct ("Error in Ln: 1 Col: 7 │ 00:01:01 v #1593 > > │ [aaabb │ 00:01:01 v #1594 > > │ ^ │ 00:01:01 v #1595 > > │ Note: The error occurred at the end of the input stream. │ 00:01:01 v #1596 > > │ Expecting: ']', 'a' or 'b' │ 00:01:01 v #1597 > > │ ", │ 00:01:01 v #1598 > > │ Error in Ln: 1 Col: 7 │ 00:01:01 v #1599 > > │ Expecting: ']', 'a' or 'b' │ 00:01:01 v #1600 > > │ ) │ 00:01:01 v #1601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:01 v #1602 > > 00:01:01 v #1603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:01 v #1604 > > //// test 00:01:01 v #1605 > > ///! fsharp 00:01:01 v #1606 > > ///! cuda 00:01:01 v #1607 > > ///! typescript 00:01:01 v #1608 > > 00:01:01 v #1609 > > "[[aaabb]]" 00:01:01 v #1610 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:01:01 v #1611 > > p_char 'b'))) 00:01:01 v #1612 > > |> resultm.get 00:01:01 v #1613 > > |> sm'.format_debug 00:01:01 v #1614 > > |> _assert_eq ( 00:01:01 v #1615 > > ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = { 00:01:01 v #1616 > > line = 1i32; col = 8i32 } }) 00:01:01 v #1617 > > |> sm'.format_debug 00:01:01 v #1618 > > ) 00:01:01 v #1619 > > 00:01:01 v #1620 > > "[[aaabb" 00:01:01 v #1621 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:01:01 v #1622 > > p_char 'b'))) 00:01:01 v #1623 > > |> resultm.unwrap_err 00:01:01 v #1624 > > |> sm'.format_debug 00:01:01 v #1625 > > |> _assert_eq ( 00:01:01 v #1626 > > backend_switch { 00:01:01 v #1627 > > Fsharp = fun () => 00:01:01 v #1628 > > run_target function 00:01:01 v #1629 > > | TypeScript _ => fun () => "parsing.between / expected closing 00:01:01 v #1630 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']]' / s: 00:01:01 v #1631 > > [[aaabb,1,7 / input: [[aaabb,[[aaabb,1,1 / rest1: aaabb,[[aaabb,1,2 / rest2: 00:01:01 v #1632 > > ,[[aaabb,1,7" : string 00:01:01 v #1633 > > | _ => fun () => join "\"parsing.between / expected closing 00:01:01 v #1634 > > delimiter / e: \"parsing.p_char / unexpected end of input / c: ']]' / s: struct 00:01:01 v #1635 > > ([[aaabb, 1, 7)\" / input: struct (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct 00:01:01 v #1636 > > (\"aaabb\", [[aaabb, 1, 2) / rest2: struct (\"\", [[aaabb, 1, 7)\"" : string 00:01:01 v #1637 > > Python = fun () => "parsing.between / expected closing delimiter / e: 00:01:01 v #1638 > > parsing.p_char / unexpected end of input / c: ']]' / s: ([[aaabb, 1, 7) / input: 00:01:01 v #1639 > > ('[[aaabb', [[aaabb, 1, 1) / rest1: ('aaabb', [[aaabb, 1, 2) / rest2: ('', 00:01:01 v #1640 > > [[aaabb, 1, 7)" : string 00:01:01 v #1641 > > } 00:01:01 v #1642 > > ) 00:01:03 v #1643 > > 00:01:03 v #1644 > > ╭─[ 2.48s - return value ]─────────────────────────────────────────────────────╮ 00:01:03 v #1645 > > │ │ 00:01:03 v #1646 > > │ .py output (Cuda): │ 00:01:03 v #1647 > > │ __assert_eq / actual: ('aaabb', '', [aaabb], 1, 8) / expected: ('aaabb', '', │ 00:01:03 v #1648 > > │ [aaabb], 1, 8) │ 00:01:03 v #1649 > > │ __assert_eq / actual: parsing.between / expected closing delimiter / e: │ 00:01:03 v #1650 > > │ parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 1, 7) / │ 00:01:03 v #1651 > > │ input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) / rest2: │ 00:01:03 v #1652 > > │ ('', [aaabb, 1, 7) / expected: parsing.between / expected closing delimiter │ 00:01:03 v #1653 > > │ / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 1, 7) / │ 00:01:03 v #1654 > > │ input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) / rest2: │ 00:01:03 v #1655 > > │ ('', [aaabb, 1, 7) │ 00:01:03 v #1656 > > │ │ 00:01:03 v #1657 > > │ │ 00:01:03 v #1658 > > │ .ts output: │ 00:01:03 v #1659 > > │ __assert_eq / actual: aaabb,,[aaabb],1,8 / expected: aaabb,,[aaabb],1,8 │ 00:01:03 v #1660 > > │ __assert_eq / actual: parsing.between / expected closing delimiter / e: │ 00:01:03 v #1661 > > │ parsing.p_char / unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [ │ 00:01:03 v #1662 > > │ aaabb,[aaabb,1,1 / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7 / expected: │ 00:01:03 v #1663 > > │ parsing.between / expected closing delimiter / e: parsing.p_char / │ 00:01:03 v #1664 > > │ unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [aaabb,[aaabb,1,1 │ 00:01:03 v #1665 > > │ / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7 │ 00:01:03 v #1666 > > │ │ 00:01:03 v #1667 > > │ │ 00:01:03 v #1668 > > │ │ 00:01:03 v #1669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1670 > > 00:01:03 v #1671 > > ╭─[ 2.48s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:03 v #1672 > > │ .fsx output: │ 00:01:03 v #1673 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)" / expected: │ 00:01:03 v #1674 > > │ "struct ("aaabb", "", [aaabb], 1, 8)" │ 00:01:03 v #1675 > > │ __assert_eq / actual: ""parsing.between / expected closing delimiter / e: │ 00:01:03 v #1676 > > │ "parsing.p_char / unexpected end of input / c: ']' / s: struct ([aaabb, 1, │ 00:01:03 v #1677 > > │ 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [ │ 00:01:03 v #1678 > > │ aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected: │ 00:01:03 v #1679 > > │ ""parsing.between / expected closing delimiter / e: "parsing.p_char / │ 00:01:03 v #1680 > > │ unexpected end of input / c: ']' / s: struct ([aaabb, 1, 7)" / input: struct │ 00:01:03 v #1681 > > │ ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1, 2) / rest2: │ 00:01:03 v #1682 > > │ struct ("", [aaabb, 1, 7)"" │ 00:01:03 v #1683 > > │ │ 00:01:03 v #1684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1685 > > 00:01:03 v #1686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #1687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:03 v #1688 > > │ ### sep_by │ 00:01:03 v #1689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 v #1690 > > 00:01:03 v #1691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:03 v #1692 > > inl sep_by p sep : parser (list _) = fun input, s => 00:01:03 v #1693 > > let rec loop acc input s = 00:01:03 v #1694 > > match p (input, s) with 00:01:03 v #1695 > > | Ok (result, rest, s) => 00:01:03 v #1696 > > match sep (rest, s) with 00:01:03 v #1697 > > | Ok (_, rest, s) => loop (result :: acc) rest s 00:01:03 v #1698 > > | Error _ => Ok ((result :: acc) |> listm.rev, rest, s) 00:01:03 v #1699 > > | Error _ => Ok (acc |> listm.rev, input, s) 00:01:03 v #1700 > > loop [[]] input s 00:01:04 v #1701 > > 00:01:04 v #1702 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:04 v #1703 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:04 v #1704 > > │ ### span │ 00:01:04 v #1705 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:04 v #1706 > > 00:01:04 v #1707 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:04 v #1708 > > inl span pred str = 00:01:04 v #1709 > > let rec loop i = 00:01:04 v #1710 > > if i >= sm'.length str 00:01:04 v #1711 > > then i 00:01:04 v #1712 > > elif pred (str |> sm'.index i) 00:01:04 v #1713 > > then loop (i + 1) 00:01:04 v #1714 > > else i 00:01:04 v #1715 > > loop 0 00:01:04 v #1716 > > 00:01:04 v #1717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:04 v #1718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:04 v #1719 > > │ ### spaces1 │ 00:01:04 v #1720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:04 v #1721 > > 00:01:04 v #1722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:04 v #1723 > > inl spaces1 () : parser () = fun input, s => 00:01:04 v #1724 > > match input |> span ((=) ' ') with 00:01:04 v #1725 > > | 0i32 => Error "parsing.spaces1 / expected at least one space" 00:01:04 v #1726 > > | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s) 00:01:05 v #1727 > > 00:01:05 v #1728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:05 v #1729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:05 v #1730 > > │ ### spaces │ 00:01:05 v #1731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:05 v #1732 > > 00:01:05 v #1733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:05 v #1734 > > inl spaces () : parser () = fun input, s => 00:01:05 v #1735 > > input 00:01:05 v #1736 > > |> span ((=) ' ') 00:01:05 v #1737 > > |> fun (n : i32) => 00:01:05 v #1738 > > Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s) 00:01:05 v #1739 > > 00:01:05 v #1740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:05 v #1741 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:05 v #1742 > > │ ### p_digit │ 00:01:05 v #1743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:05 v #1744 > > 00:01:05 v #1745 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:05 v #1746 > > inl p_digit () : parser char = fun input, s => 00:01:05 v #1747 > > match input |> sm'.index 0i32 with 00:01:05 v #1748 > > | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c => 00:01:05 v #1749 > > Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End eval), s) 00:01:05 v #1750 > > | c => 00:01:05 v #1751 > > backend_switch { 00:01:05 v #1752 > > Fsharp = fun () => $'$"parsing.p_digit / unexpected char: {!c}"' : 00:01:05 v #1753 > > string 00:01:05 v #1754 > > Python = fun () => $'f"parsing.p_digit / unexpected char: {!c}"' : 00:01:05 v #1755 > > string 00:01:05 v #1756 > > } 00:01:05 v #1757 > > |> Error 00:01:06 v #1758 > > 00:01:06 v #1759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:06 v #1760 > > //// test 00:01:06 v #1761 > > ///! fsharp 00:01:06 v #1762 > > ///! cuda 00:01:06 v #1763 > > ///! typescript 00:01:06 v #1764 > > 00:01:06 v #1765 > > "1 2 3" 00:01:06 v #1766 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:01:06 v #1767 > > |> resultm.get 00:01:06 v #1768 > > |> sm'.format_debug 00:01:06 v #1769 > > |> _assert_eq ( 00:01:06 v #1770 > > ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = { 00:01:06 v #1771 > > col = 1i32; line = 1i32 } }) 00:01:06 v #1772 > > |> sm'.format_debug 00:01:06 v #1773 > > ) 00:01:08 v #1774 > > 00:01:08 v #1775 > > ╭─[ 2.22s - return value ]─────────────────────────────────────────────────────╮ 00:01:08 v #1776 > > │ .py output (Cuda): │ 00:01:08 v #1777 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3', │ 00:01:08 v #1778 > > │ v1=UH0_0()))), '', , 1, 1) / expected: (UH0_1(v0='1', v1=UH0_1(v0='2', │ 00:01:08 v #1779 > > │ v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1) │ 00:01:08 v #1780 > > │ │ 00:01:08 v #1781 > > │ .ts output: │ 00:01:08 v #1782 > > │ __assert_eq / actual: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1 / │ 00:01:08 v #1783 > > │ expected: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1 │ 00:01:08 v #1784 > > │ │ 00:01:08 v #1785 > > │ │ 00:01:08 v #1786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 v #1787 > > 00:01:08 v #1788 > > ╭─[ 2.22s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:08 v #1789 > > │ .fsx output: │ 00:01:08 v #1790 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', UH0_0))), │ 00:01:08 v #1791 > > │ "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', │ 00:01:08 v #1792 > > │ UH0_0))), "", , 1, 1)" │ 00:01:08 v #1793 > > │ │ 00:01:08 v #1794 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 v #1795 > > 00:01:08 v #1796 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 v #1797 > > //// test 00:01:08 v #1798 > > ///! fsharp 00:01:08 v #1799 > > ///! cuda 00:01:08 v #1800 > > ///! typescript 00:01:08 v #1801 > > 00:01:08 v #1802 > > "1 a 2" 00:01:08 v #1803 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:01:08 v #1804 > > |> resultm.get 00:01:08 v #1805 > > |> sm'.format_debug 00:01:08 v #1806 > > |> _assert_eq ( 00:01:08 v #1807 > > ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col = 00:01:08 v #1808 > > 1i32; line = 1i32 } }) 00:01:08 v #1809 > > |> sm'.format_debug 00:01:08 v #1810 > > ) 00:01:10 v #1811 > > 00:01:10 v #1812 > > ╭─[ 2.13s - return value ]─────────────────────────────────────────────────────╮ 00:01:10 v #1813 > > │ .py output (Cuda): │ 00:01:10 v #1814 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1) / expected: │ 00:01:10 v #1815 > > │ (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1) │ 00:01:10 v #1816 > > │ │ 00:01:10 v #1817 > > │ .ts output: │ 00:01:10 v #1818 > > │ __assert_eq / actual: UH0_1 (1, UH0_0),a 2,,1,1 / expected: UH0_1 (1, │ 00:01:10 v #1819 > > │ UH0_0),a 2,,1,1 │ 00:01:10 v #1820 > > │ │ 00:01:10 v #1821 > > │ │ 00:01:10 v #1822 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:10 v #1823 > > 00:01:10 v #1824 > > ╭─[ 2.13s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:10 v #1825 > > │ .fsx output: │ 00:01:10 v #1826 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" / │ 00:01:10 v #1827 > > │ expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" │ 00:01:10 v #1828 > > │ │ 00:01:10 v #1829 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:10 v #1830 > > 00:01:10 v #1831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:10 v #1832 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:10 v #1833 > > │ ### opt │ 00:01:10 v #1834 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:10 v #1835 > > 00:01:10 v #1836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:10 v #1837 > > inl opt p : parser (option _) = fun input, s => 00:01:10 v #1838 > > match p (input, s) with 00:01:10 v #1839 > > | Ok (result, rest, s) => Ok (Some result, rest, s) 00:01:10 v #1840 > > | Error _ => Ok (None, input, s) 00:01:11 v #1841 > > 00:01:11 v #1842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:11 v #1843 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:11 v #1844 > > │ ### rest_of_line │ 00:01:11 v #1845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:11 v #1846 > > 00:01:11 v #1847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:11 v #1848 > > inl rest_of_line () : parser string = fun input, s => 00:01:11 v #1849 > > inl i : i32 = input |> span ((<>) '\n') 00:01:11 v #1850 > > inl result = input |> sm'.range (am'.Start i) (am'.End eval) 00:01:11 v #1851 > > Ok (result, result, s) 00:01:11 v #1852 > > 00:01:11 v #1853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:11 v #1854 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:11 v #1855 > > │ ### eof │ 00:01:11 v #1856 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:11 v #1857 > > 00:01:11 v #1858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:11 v #1859 > > inl eof () : parser () = fun input, s => 00:01:11 v #1860 > > if sm'.length input = 0i32 00:01:11 v #1861 > > then Ok ((), input, s) 00:01:11 v #1862 > > else 00:01:11 v #1863 > > backend_switch { 00:01:11 v #1864 > > Fsharp = fun () => $'$"parsing.eof / expected end of input / input: 00:01:11 v #1865 > > %A{!input}"' : string 00:01:11 v #1866 > > Python = fun () => $'f"parsing.eof / expected end of input / input: 00:01:11 v #1867 > > {!input}"' : string 00:01:11 v #1868 > > } 00:01:11 v #1869 > > |> Error 00:01:12 v #1870 > 00:01:11 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 90611 } 00:01:12 v #1871 > 00:01:11 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:13 v #1872 > 00:01:12 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/parsing.dib.ipynb to html 00:01:13 v #1873 > 00:01:12 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:13 v #1874 > 00:01:12 v #7 ! validate(nb) 00:01:14 v #1875 > 00:01:13 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:14 v #1876 > 00:01:13 v #9 ! return _pygments_highlight( 00:01:15 v #1877 > 00:01:14 v #10 ! [NbConvertApp] Writing 503656 bytes to c:\home\git\polyglot\lib\spiral\parsing.dib.html 00:01:15 v #1878 > 00:01:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:01:15 v #1879 > 00:01:14 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:01:15 v #1880 > 00:01:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:16 v #1881 > 00:01:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:16 v #1882 > 00:01:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:16 v #1883 > 00:01:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 91526 } 00:01:16 d #1884 runtime.execute_with_options_async / { exit_code = 0; output_length = 97834 } 00:01:16 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path parsing.dib --retries 3 00:01:16 d #1885 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path sm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:16 v #1886 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) } 00:01:16 v #1887 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/sm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/sm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:18 v #1888 > > 00:01:18 v #1889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:18 v #1890 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:18 v #1891 > > │ # sm' │ 00:01:18 v #1892 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 v #1893 > > 00:01:21 v #1894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 v #1895 > > //// test 00:01:21 v #1896 > > 00:01:21 v #1897 > > open testing 00:01:22 v #1898 > > 00:01:22 v #1899 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #1900 > > open rust 00:01:22 v #1901 > > open rust_operators 00:01:22 v #1902 > > open sm'_real 00:01:22 v #1903 > > 00:01:22 v #1904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 v #1905 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 v #1906 > > │ ## rust │ 00:01:22 v #1907 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 v #1908 > > 00:01:22 v #1909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 v #1910 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 v #1911 > > │ ### std_string │ 00:01:22 v #1912 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 v #1913 > > 00:01:22 v #1914 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #1915 > > //// real 00:01:22 v #1916 > > 00:01:22 v #1917 > > nominal std_string = 00:01:22 v #1918 > > `( 00:01:22 v #1919 > > backend_switch `(()) `({}) { 00:01:22 v #1920 > > Fsharp = 00:01:22 v #1921 > > (fun () => 00:01:22 v #1922 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 v #1923 > > Fable.Core.Emit(\"std::string::String\")>]]\ntype std_string_String = class 00:01:22 v #1924 > > end\n#else\ntype std_string_String = string\n#endif\n" 00:01:22 v #1925 > > ) : () -> () 00:01:22 v #1926 > > } 00:01:22 v #1927 > > $'' : $'std_string_String' 00:01:22 v #1928 > > ) 00:01:23 v #1929 > > 00:01:23 v #1930 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 v #1931 > > type std_string = sm'_real.std_string 00:01:23 v #1932 > > 00:01:23 v #1933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 v #1934 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 v #1935 > > │ ### to_string' │ 00:01:23 v #1936 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 v #1937 > > 00:01:23 v #1938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 v #1939 > > inl to_string' forall t. (x : t) : std_string = 00:01:23 v #1940 > > !\($'$"!x.to_string()"') 00:01:24 v #1941 > > 00:01:24 v #1942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 v #1943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 v #1944 > > │ ### from_std_string │ 00:01:24 v #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 v #1946 > > 00:01:24 v #1947 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 v #1948 > > //// real 00:01:24 v #1949 > > 00:01:24 v #1950 > > inl from_std_string (str : std_string) : string = 00:01:24 v #1951 > > open rust 00:01:24 v #1952 > > rust.emit_expr `std_string `string str 00:01:24 v #1953 > > ($'"fable_library_rust::String_::fromString($0)"' : string) 00:01:24 v #1954 > > 00:01:24 v #1955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 v #1956 > > inl from_std_string (str : std_string) : string = 00:01:24 v #1957 > > real sm'_real.from_std_string str 00:01:25 v #1958 > > 00:01:25 v #1959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 v #1960 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 v #1961 > > │ ## sm' │ 00:01:25 v #1962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 v #1963 > > 00:01:25 v #1964 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 v #1965 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 v #1966 > > │ ### symbol_to_string │ 00:01:25 v #1967 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 v #1968 > > 00:01:25 v #1969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 v #1970 > > //// real 00:01:25 v #1971 > > 00:01:25 v #1972 > > inl symbol_to_string forall t {symbol}. : string = 00:01:25 v #1973 > > // inl x = real_core.type_lit_to_lit `t 00:01:25 v #1974 > > // inl x = real_core.type_to_symbol `t 00:01:25 v #1975 > > // inl x = real_core.type_lit_to_lit `t 00:01:25 v #1976 > > // !!!!SymbolToString (`(`t)) 00:01:25 v #1977 > > inl x = real_core.type_to_symbol `t 00:01:25 v #1978 > > !!!!SymbolToString (x) 00:01:25 v #1979 > > 00:01:25 v #1980 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 v #1981 > > inl symbol_to_string forall t {symbol}. (x : t) : string = 00:01:25 v #1982 > > real symbol_to_string `t 00:01:25 v #1983 > > 00:01:25 v #1984 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 v #1985 > > //// test 00:01:25 v #1986 > > ///! fsharp 00:01:25 v #1987 > > ///! cuda 00:01:25 v #1988 > > 00:01:25 v #1989 > > .test 00:01:25 v #1990 > > |> symbol_to_string 00:01:25 v #1991 > > |> _assert_eq "test" 00:01:27 v #1992 > > 00:01:27 v #1993 > > ╭─[ 1.93s - return value ]─────────────────────────────────────────────────────╮ 00:01:27 v #1994 > > │ .py output (Cuda): │ 00:01:27 v #1995 > > │ __assert_eq / actual: test / expected: test │ 00:01:27 v #1996 > > │ │ 00:01:27 v #1997 > > │ │ 00:01:27 v #1998 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 v #1999 > > 00:01:27 v #2000 > > ╭─[ 1.94s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:27 v #2001 > > │ .fsx output: │ 00:01:27 v #2002 > > │ __assert_eq / actual: "test" / expected: "test" │ 00:01:27 v #2003 > > │ │ 00:01:27 v #2004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 v #2005 > > 00:01:27 v #2006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 v #2007 > > //// test 00:01:27 v #2008 > > //// real 00:01:27 v #2009 > > ///! fsharp 00:01:27 v #2010 > > ///! cuda 00:01:27 v #2011 > > 00:01:27 v #2012 > > open testing 00:01:27 v #2013 > > inl x = .test 00:01:27 v #2014 > > inl x = symbol_to_string `(`x) 00:01:27 v #2015 > > _assert_eq `string "test" x 00:01:29 v #2016 > > 00:01:29 v #2017 > > ╭─[ 1.20s - return value ]─────────────────────────────────────────────────────╮ 00:01:29 v #2018 > > │ .py output (Cuda): │ 00:01:29 v #2019 > > │ __assert_eq / actual: test / expected: test │ 00:01:29 v #2020 > > │ │ 00:01:29 v #2021 > > │ │ 00:01:29 v #2022 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 v #2023 > > 00:01:29 v #2024 > > ╭─[ 1.20s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:29 v #2025 > > │ .fsx output: │ 00:01:29 v #2026 > > │ __assert_eq / actual: "test" / expected: "test" │ 00:01:29 v #2027 > > │ │ 00:01:29 v #2028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 v #2029 > > 00:01:29 v #2030 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 v #2031 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 v #2032 > > │ ### index │ 00:01:29 v #2033 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 v #2034 > > 00:01:29 v #2035 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #2036 > > inl index i (str : string) : char = 00:01:29 v #2037 > > sm.index str i 00:01:29 v #2038 > > 00:01:29 v #2039 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 v #2040 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 v #2041 > > │ ### length │ 00:01:29 v #2042 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 v #2043 > > 00:01:29 v #2044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #2045 > > inl length forall dim {int}. (input : string) : dim = 00:01:29 v #2046 > > input |> sm.length 00:01:29 v #2047 > > 00:01:29 v #2048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #2049 > > //// test 00:01:29 v #2050 > > ///! fsharp 00:01:29 v #2051 > > ///! cuda 00:01:29 v #2052 > > 00:01:29 v #2053 > > "abc" 00:01:29 v #2054 > > |> length 00:01:29 v #2055 > > |> _assert_eq 3i32 00:01:31 v #2056 > > 00:01:31 v #2057 > > ╭─[ 1.18s - return value ]─────────────────────────────────────────────────────╮ 00:01:31 v #2058 > > │ .py output (Cuda): │ 00:01:31 v #2059 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:01:31 v #2060 > > │ │ 00:01:31 v #2061 > > │ │ 00:01:31 v #2062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:31 v #2063 > > 00:01:31 v #2064 > > ╭─[ 1.18s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:31 v #2065 > > │ .fsx output: │ 00:01:31 v #2066 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:01:31 v #2067 > > │ │ 00:01:31 v #2068 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:31 v #2069 > > 00:01:31 v #2070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:31 v #2071 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:31 v #2072 > > │ ### to_char_array │ 00:01:31 v #2073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:31 v #2074 > > 00:01:31 v #2075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:31 v #2076 > > inl to_char_array (str : string) : array_base char = 00:01:31 v #2077 > > am.init (str |> length) (fun i => str |> index i) 00:01:31 v #2078 > > |> fun (a x : _ int _) => x 00:01:31 v #2079 > > 00:01:31 v #2080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:31 v #2081 > > //// test 00:01:31 v #2082 > > ///! fsharp 00:01:31 v #2083 > > ///! cuda 00:01:31 v #2084 > > 00:01:31 v #2085 > > "abc" 00:01:31 v #2086 > > |> to_char_array 00:01:31 v #2087 > > |> sm'.format 00:01:31 v #2088 > > |> _assert_eq (;[[ 'a'; 'b'; 'c' ]] |> sm'.format) 00:01:33 v #2089 > > 00:01:33 v #2090 > > ╭─[ 1.72s - return value ]─────────────────────────────────────────────────────╮ 00:01:33 v #2091 > > │ .py output (Cuda): │ 00:01:33 v #2092 > > │ __assert_eq / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c'] │ 00:01:33 v #2093 > > │ │ 00:01:33 v #2094 > > │ │ 00:01:33 v #2095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:33 v #2096 > > 00:01:33 v #2097 > > ╭─[ 1.72s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:33 v #2098 > > │ .fsx output: │ 00:01:33 v #2099 > > │ __assert_eq / actual: "[|'a'; 'b'; 'c'|]" / expected: "[|'a'; 'b'; 'c'|]" │ 00:01:33 v #2100 > > │ │ 00:01:33 v #2101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:33 v #2102 > > 00:01:33 v #2103 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:33 v #2104 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:33 v #2105 > > │ ### to_char_list │ 00:01:33 v #2106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:33 v #2107 > > 00:01:33 v #2108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:33 v #2109 > > inl to_char_list (str : string) : list char = 00:01:33 v #2110 > > listm.init (str |> length) (fun (i : i64) => str |> index i) 00:01:33 v #2111 > > 00:01:33 v #2112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:33 v #2113 > > //// test 00:01:33 v #2114 > > ///! fsharp 00:01:33 v #2115 > > ///! cuda 00:01:33 v #2116 > > 00:01:33 v #2117 > > "abc" 00:01:33 v #2118 > > |> to_char_list 00:01:33 v #2119 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]] 00:01:35 v #2120 > > 00:01:35 v #2121 > > ╭─[ 1.35s - return value ]─────────────────────────────────────────────────────╮ 00:01:35 v #2122 > > │ .py output (Cuda): │ 00:01:35 v #2123 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='c', │ 00:01:35 v #2124 > > │ v1=UH0_0()))) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='c', │ 00:01:35 v #2125 > > │ v1=UH0_0()))) │ 00:01:35 v #2126 > > │ │ 00:01:35 v #2127 > > │ │ 00:01:35 v #2128 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2129 > > 00:01:35 v #2130 > > ╭─[ 1.35s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:35 v #2131 > > │ .fsx output: │ 00:01:35 v #2132 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) / │ 00:01:35 v #2133 > > │ expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) │ 00:01:35 v #2134 > > │ │ 00:01:35 v #2135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2136 > > 00:01:35 v #2137 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #2138 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 v #2139 > > │ ### is_empty │ 00:01:35 v #2140 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2141 > > 00:01:35 v #2142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #2143 > > inl is_empty (input : string) : bool = 00:01:35 v #2144 > > length input = 0i32 00:01:35 v #2145 > > 00:01:35 v #2146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #2147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 v #2148 > > │ ### slice │ 00:01:35 v #2149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 v #2150 > > 00:01:35 v #2151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #2152 > > inl slice forall t {number; int}. (from : t) (to : t) s : string = 00:01:35 v #2153 > > backend_switch { 00:01:35 v #2154 > > Fsharp = fun () => sm.slice s { from to } : string 00:01:35 v #2155 > > Python = fun () => sm.slice s { from to = if var_is s || var_is to then 00:01:35 v #2156 > > to + 1 else to } : string 00:01:35 v #2157 > > } 00:01:35 v #2158 > > 00:01:35 v #2159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #2160 > > //// test 00:01:35 v #2161 > > ///! fsharp 00:01:35 v #2162 > > ///! cuda 00:01:35 v #2163 > > 00:01:35 v #2164 > > "abcdef" 00:01:35 v #2165 > > |> slice 1i32 3i32 00:01:35 v #2166 > > |> _assert_eq "bcd" 00:01:35 v #2167 > > 00:01:35 v #2168 > > (join "abcde") 00:01:35 v #2169 > > |> slice 1i32 3i32 00:01:35 v #2170 > > |> _assert_eq "bcd" 00:01:35 v #2171 > > 00:01:35 v #2172 > > "abcde" 00:01:35 v #2173 > > |> slice 1i32 (join 3i32) 00:01:35 v #2174 > > |> _assert_eq "bcd" 00:01:35 v #2175 > > 00:01:35 v #2176 > > (join "abcde") 00:01:35 v #2177 > > |> slice 1i32 (join 3i32) 00:01:35 v #2178 > > |> _assert_eq "bcd" 00:01:37 v #2179 > > 00:01:37 v #2180 > > ╭─[ 1.27s - return value ]─────────────────────────────────────────────────────╮ 00:01:37 v #2181 > > │ │ 00:01:37 v #2182 > > │ .py output (Cuda): │ 00:01:37 v #2183 > > │ __assert_eq / actual: bcd / expected: bcd │ 00:01:37 v #2184 > > │ __assert_eq / actual: bcd / expected: bcd │ 00:01:37 v #2185 > > │ __assert_eq / actual: bcd / expected: bcd │ 00:01:37 v #2186 > > │ __assert_eq / actual: bcd / expected: bcd │ 00:01:37 v #2187 > > │ │ 00:01:37 v #2188 > > │ │ 00:01:37 v #2189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:37 v #2190 > > 00:01:37 v #2191 > > ╭─[ 1.27s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:37 v #2192 > > │ .fsx output: │ 00:01:37 v #2193 > > │ __assert_eq / actual: "bcd" / expected: "bcd" │ 00:01:37 v #2194 > > │ __assert_eq / actual: "bcd" / expected: "bcd" │ 00:01:37 v #2195 > > │ __assert_eq / actual: "bcd" / expected: "bcd" │ 00:01:37 v #2196 > > │ __assert_eq / actual: "bcd" / expected: "bcd" │ 00:01:37 v #2197 > > │ │ 00:01:37 v #2198 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:37 v #2199 > > 00:01:37 v #2200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:37 v #2201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:37 v #2202 > > │ ### format_debug │ 00:01:37 v #2203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:37 v #2204 > > 00:01:37 v #2205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:37 v #2206 > > //// real 00:01:37 v #2207 > > 00:01:37 v #2208 > > inl format_debug forall t. (x : t) : string = 00:01:37 v #2209 > > backend_switch `string `({}) { 00:01:37 v #2210 > > Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string 00:01:37 v #2211 > > Python = (fun () => $'f"{!x}"' : string) : () -> string 00:01:37 v #2212 > > } 00:01:37 v #2213 > > 00:01:37 v #2214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:37 v #2215 > > inl format_debug forall t. (x : t) : string = 00:01:37 v #2216 > > real format_debug `t x 00:01:38 v #2217 > > 00:01:38 v #2218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:38 v #2219 > > //// test 00:01:38 v #2220 > > ///! fsharp 00:01:38 v #2221 > > ///! cuda 00:01:38 v #2222 > > 00:01:38 v #2223 > > { c = "1"; a = "2"; b = "3" } 00:01:38 v #2224 > > |> format_debug 00:01:38 v #2225 > > |> _assert_eq ( 00:01:38 v #2226 > > backend_switch { 00:01:38 v #2227 > > Fsharp = fun () => "struct (\"1\", \"2\", \"3\")" : string 00:01:38 v #2228 > > Python = fun () => "('1', '2', '3')" : string 00:01:38 v #2229 > > } 00:01:38 v #2230 > > ) 00:01:39 v #2231 > > 00:01:39 v #2232 > > ╭─[ 1.31s - return value ]─────────────────────────────────────────────────────╮ 00:01:39 v #2233 > > │ .py output (Cuda): │ 00:01:39 v #2234 > > │ __assert_eq / actual: ('1', '2', '3') / expected: ('1', '2', '3') │ 00:01:39 v #2235 > > │ │ 00:01:39 v #2236 > > │ │ 00:01:39 v #2237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:39 v #2238 > > 00:01:39 v #2239 > > ╭─[ 1.31s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:39 v #2240 > > │ .fsx output: │ 00:01:39 v #2241 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected: "struct ("1", │ 00:01:39 v #2242 > > │ "2", "3")" │ 00:01:39 v #2243 > > │ │ 00:01:39 v #2244 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:39 v #2245 > > 00:01:39 v #2246 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:39 v #2247 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:39 v #2248 > > │ ### format_pretty │ 00:01:39 v #2249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:39 v #2250 > > 00:01:39 v #2251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:39 v #2252 > > //// real 00:01:39 v #2253 > > 00:01:39 v #2254 > > inl format_pretty forall t. (x : t) : string = 00:01:39 v #2255 > > run_target_args `string `t (fun () => x) function 00:01:39 v #2256 > > | Rust _ => fun x => 00:01:39 v #2257 > > open rust 00:01:39 v #2258 > > inl result = rust.emit_expr `t `std_string x 00:01:39 v #2259 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string) 00:01:39 v #2260 > > from_std_string result 00:01:39 v #2261 > > | _ => fun _ => format_debug `t x 00:01:39 v #2262 > > 00:01:39 v #2263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:39 v #2264 > > inl format_pretty forall t. (x : t) : string = 00:01:39 v #2265 > > real sm'_real.format_pretty `t x 00:01:40 v #2266 > > 00:01:40 v #2267 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:40 v #2268 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:40 v #2269 > > │ ### prim │ 00:01:40 v #2270 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:40 v #2271 > > 00:01:40 v #2272 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:40 v #2273 > > inl prim x = real 00:01:40 v #2274 > > match x with 00:01:40 v #2275 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x 00:01:40 v #2276 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x 00:01:40 v #2277 > > | (x : f32) | (x : f64) => "%f", x 00:01:40 v #2278 > > | (x : string) => "%s", x 00:01:40 v #2279 > > | (x : char) => "%c", x 00:01:40 v #2280 > > 00:01:40 v #2281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:40 v #2282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:40 v #2283 > > │ ### printable │ 00:01:40 v #2284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:40 v #2285 > > 00:01:40 v #2286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:40 v #2287 > > //// real 00:01:40 v #2288 > > 00:01:40 v #2289 > > prototype printable t : t -> () 00:01:41 v #2290 > > 00:01:41 v #2291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:41 v #2292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:41 v #2293 > > │ ### format_real │ 00:01:41 v #2294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:41 v #2295 > > 00:01:41 v #2296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:41 v #2297 > > //// real 00:01:41 v #2298 > > 00:01:41 v #2299 > > let format_real forall t. (x : t) : string = 00:01:41 v #2300 > > inl result = mut `string (join "") 00:01:41 v #2301 > > inl rec write x = 00:01:41 v #2302 > > inl p ((a : string), b) = 00:01:41 v #2303 > > inl s : string = 00:01:41 v #2304 > > backend_switch `string `({}) { 00:01:41 v #2305 > > Fsharp = 00:01:41 v #2306 > > (fun () => 00:01:41 v #2307 > > match b with 00:01:41 v #2308 > > | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string 00:01:41 v #2309 > > | _ => $'$"{!b}"' : string 00:01:41 v #2310 > > ) : () -> string 00:01:41 v #2311 > > Python = 00:01:41 v #2312 > > (fun () => 00:01:41 v #2313 > > match b with 00:01:41 v #2314 > > | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' : 00:01:41 v #2315 > > string 00:01:41 v #2316 > > | _ => $'f"{!b}"' : string 00:01:41 v #2317 > > ) : () -> string 00:01:41 v #2318 > > } 00:01:41 v #2319 > > exec_unit ((fun () => result <- (+.) `string ((~*) `string result) 00:01:41 v #2320 > > s) : () -> ()) 00:01:41 v #2321 > > 00:01:41 v #2322 > > match x with // According to Bing it shouldn't matter whether these are 00:01:41 v #2323 > > %d or %lld in printf. 00:01:41 v #2324 > > | () => () 00:01:41 v #2325 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x) 00:01:41 v #2326 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x) 00:01:41 v #2327 > > | (x : f32) | (x : f64) => p ("%f", x) 00:01:41 v #2328 > > | (x : string) => p ("%s", x) 00:01:41 v #2329 > > | (x : char) => p ("%c", x) 00:01:41 v #2330 > > | (x : bool) => p ("%s", if x then "true" else "false") 00:01:41 v #2331 > > | (a,b) => write a . write ", " . write b 00:01:41 v #2332 > > | {} as x => 00:01:41 v #2333 > > write "{ " 00:01:41 v #2334 > > inl _result = 00:01:41 v #2335 > > real_core.record_fold 00:01:41 v #2336 > > fun { state = separator key value } => 00:01:41 v #2337 > > write separator 00:01:41 v #2338 > > write (symbol_to_string `(`key)) . write " = " . write 00:01:41 v #2339 > > value 00:01:41 v #2340 > > "; " 00:01:41 v #2341 > > () x 00:01:41 v #2342 > > write " }" 00:01:41 v #2343 > > | x when real_core.symbol_is x => write (symbol_to_string `(`x)) 00:01:41 v #2344 > > | x when real_core.function_is x => write (x ()) 00:01:41 v #2345 > > | x when real_core.union_is x => 00:01:41 v #2346 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:01:41 v #2347 > > else 00:01:41 v #2348 > > write (format_debug `(`x) x) 00:01:41 v #2349 > > // real_core.unbox x (fun (k, v) => 00:01:41 v #2350 > > // write k 00:01:41 v #2351 > > // match v with 00:01:41 v #2352 > > // | () => () 00:01:41 v #2353 > > // | _ => write "(" . write v . write ")" 00:01:41 v #2354 > > // ) 00:01:41 v #2355 > > | x when real_core.nominal_is x => 00:01:41 v #2356 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:01:41 v #2357 > > // elif layout_is x then write *x // TODO: Deal with all the layout 00:01:41 v #2358 > > type cases. 00:01:41 v #2359 > > else write (format_pretty `(`x) x) 00:01:41 v #2360 > > | x => write (format_debug `(`x) x) 00:01:41 v #2361 > > write x 00:01:41 v #2362 > > (~*) `string result 00:01:41 v #2363 > > 00:01:41 v #2364 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:41 v #2365 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:41 v #2366 > > │ ### format │ 00:01:41 v #2367 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:41 v #2368 > > 00:01:41 v #2369 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:41 v #2370 > > inl format forall t. (x : t) : string = 00:01:41 v #2371 > > real format_real `t x 00:01:41 v #2372 > > 00:01:41 v #2373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:41 v #2374 > > //// test 00:01:41 v #2375 > > ///! fsharp 00:01:41 v #2376 > > ////! cuda 00:01:41 v #2377 > > ////! rust 00:01:41 v #2378 > > ////! typescript 00:01:41 v #2379 > > ////! python 00:01:41 v #2380 > > 00:01:41 v #2381 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" }) 00:01:41 v #2382 > > |> format 00:01:41 v #2383 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7 00:01:41 v #2384 > > }" 00:01:42 v #2385 > > 00:01:42 v #2386 > > ╭─[ 521.62ms - stdout ]────────────────────────────────────────────────────────╮ 00:01:42 v #2387 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │ 00:01:42 v #2388 > > │ 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │ 00:01:42 v #2389 > > │ 6; a = 7 }" │ 00:01:42 v #2390 > > │ │ 00:01:42 v #2391 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:42 v #2392 > > 00:01:42 v #2393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:42 v #2394 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:42 v #2395 > > │ ### concat_array │ 00:01:42 v #2396 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:42 v #2397 > > 00:01:42 v #2398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:42 v #2399 > > inl concat_array (separator : string) (input : a int string) = 00:01:42 v #2400 > > (input, { acc = ""; sep = "" }) 00:01:42 v #2401 > > ||> am.foldBack fun (x : string) { acc sep } => 00:01:42 v #2402 > > { acc = $'!x + !sep + !acc + ""' : string; sep = separator } 00:01:42 v #2403 > > |> fun { acc } => acc 00:01:42 v #2404 > > 00:01:42 v #2405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:42 v #2406 > > //// test 00:01:42 v #2407 > > ///! fsharp 00:01:42 v #2408 > > ////! cuda // AttributeError: 'str' object has no attribute 'item' 00:01:42 v #2409 > > ///! rust 00:01:42 v #2410 > > ///! typescript 00:01:42 v #2411 > > ///! python 00:01:42 v #2412 > > //// print_code 00:01:42 v #2413 > > 00:01:42 v #2414 > > ;[[ 00:01:42 v #2415 > > "1" 00:01:42 v #2416 > > "2" 00:01:42 v #2417 > > "3" 00:01:42 v #2418 > > ]] 00:01:42 v #2419 > > |> fun x => 00:01:42 v #2420 > > inl code = (a x : _ int _) |> concat_array "\n" 00:01:42 v #2421 > > code 00:01:42 v #2422 > > |> _assert_eq "1\n2\n3" 00:01:48 v #2423 > > 00:01:48 v #2424 > > ╭─[ 5.53s - return value ]─────────────────────────────────────────────────────╮ 00:01:48 v #2425 > > │ │ 00:01:48 v #2426 > > │ .rs output: │ 00:01:48 v #2427 > > │ __assert_eq / actual: "1 │ 00:01:48 v #2428 > > │ 2 │ 00:01:48 v #2429 > > │ 3" / expected: "1 │ 00:01:48 v #2430 > > │ 2 │ 00:01:48 v #2431 > > │ 3" │ 00:01:48 v #2432 > > │ │ 00:01:48 v #2433 > > │ │ 00:01:48 v #2434 > > │ .ts output: │ 00:01:48 v #2435 > > │ __assert_eq / actual: 1 │ 00:01:48 v #2436 > > │ 2 │ 00:01:48 v #2437 > > │ 3 / expected: 1 │ 00:01:48 v #2438 > > │ 2 │ 00:01:48 v #2439 > > │ 3 │ 00:01:48 v #2440 > > │ │ 00:01:48 v #2441 > > │ │ 00:01:48 v #2442 > > │ .py output: │ 00:01:48 v #2443 > > │ __assert_eq / actual: 1 │ 00:01:48 v #2444 > > │ 2 │ 00:01:48 v #2445 > > │ 3 / expected: 1 │ 00:01:48 v #2446 > > │ 2 │ 00:01:48 v #2447 > > │ 3 │ 00:01:48 v #2448 > > │ │ 00:01:48 v #2449 > > │ │ 00:01:48 v #2450 > > │ │ 00:01:48 v #2451 > > │ │ 00:01:48 v #2452 > > │ │ 00:01:48 v #2453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:48 v #2454 > > 00:01:48 v #2455 > > ╭─[ 5.53s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:48 v #2456 > > │ .fsx: │ 00:01:48 v #2457 > > │ type Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string} │ 00:01:48 v #2458 > > │ let rec method1 (v0 : int32, v1 : Mut0) : bool = │ 00:01:48 v #2459 > > │ let v2 : int32 = v1.l0 │ 00:01:48 v #2460 > > │ let v3 : bool = v2 < v0 │ 00:01:48 v #2461 > > │ v3 │ 00:01:48 v #2462 > > │ and method2 (v0 : bool) : bool = │ 00:01:48 v #2463 > > │ v0 │ 00:01:48 v #2464 > > │ and closure0 (v0 : string) () : unit = │ 00:01:48 v #2465 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:01:48 v #2466 > > │ v1 v0 │ 00:01:48 v #2467 > > │ and method0 () : unit = │ 00:01:48 v #2468 > > │ let v0 : string = "1" │ 00:01:48 v #2469 > > │ let v1 : string = "2" │ 00:01:48 v #2470 > > │ let v2 : string = "3" │ 00:01:48 v #2471 > > │ let v3 : (string []) = [|v0; v1; v2|] │ 00:01:48 v #2472 > > │ let v4 : int32 = v3.Length │ 00:01:48 v #2473 > > │ let v5 : string = "" │ 00:01:48 v #2474 > > │ let v6 : Mut0 = {l0 = 0; l1 = v5; l2 = v5} : Mut0 │ 00:01:48 v #2475 > > │ while method1(v4, v6) do │ 00:01:48 v #2476 > > │ let v8 : int32 = v6.l0 │ 00:01:48 v #2477 > > │ let v9 : int32 = -v8 │ 00:01:48 v #2478 > > │ let v10 : int32 = v9 + v4 │ 00:01:48 v #2479 > > │ let v11 : int32 = v10 - 1 │ 00:01:48 v #2480 > > │ let struct (v12 : string, v13 : string) = v6.l1, v6.l2 │ 00:01:48 v #2481 > > │ let v14 : string = v3.[int v11] │ 00:01:48 v #2482 > > │ let v15 : string = v14 + v13 + v12 + "" │ 00:01:48 v #2483 > > │ let v16 : int32 = v8 + 1 │ 00:01:48 v #2484 > > │ let v17 : string = "\n" │ 00:01:48 v #2485 > > │ v6.l0 <- v16 │ 00:01:48 v #2486 > > │ v6.l1 <- v15 │ 00:01:48 v #2487 > > │ v6.l2 <- v17 │ 00:01:48 v #2488 > > │ () │ 00:01:48 v #2489 > > │ let struct (v18 : string, v19 : string) = v6.l1, v6.l2 │ 00:01:48 v #2490 > > │ let v20 : bool = v18 = "1\n2\n3" │ 00:01:48 v #2491 > > │ let v22 : bool = │ 00:01:48 v #2492 > > │ if v20 then │ 00:01:48 v #2493 > > │ true │ 00:01:48 v #2494 > > │ else │ 00:01:48 v #2495 > > │ method2(v20) │ 00:01:48 v #2496 > > │ let v23 : string = "__assert_eq" │ 00:01:48 v #2497 > > │ let v24 : string = "1\n2\n3" │ 00:01:48 v #2498 > > │ let v25 : string = $"{v23} / actual: %A{v18} / expected: %A{v24}" │ 00:01:48 v #2499 > > │ let v28 : unit = () │ 00:01:48 v #2500 > > │ let v29 : (unit -> unit) = closure0(v25) │ 00:01:48 v #2501 > > │ let v30 : unit = (fun () -> v29 (); v28) () │ 00:01:48 v #2502 > > │ let v32 : bool = v22 = false │ 00:01:48 v #2503 > > │ if v32 then │ 00:01:48 v #2504 > > │ failwith<unit> v25 │ 00:01:48 v #2505 > > │ method0() │ 00:01:48 v #2506 > > │ │ 00:01:48 v #2507 > > │ │ 00:01:48 v #2508 > > │ .rs: │ 00:01:48 v #2509 > > │ #![allow(dead_code)] │ 00:01:48 v #2510 > > │ #![allow(non_camel_case_types)] │ 00:01:48 v #2511 > > │ #![allow(non_snake_case)] │ 00:01:48 v #2512 > > │ #![allow(non_upper_case_globals)] │ 00:01:48 v #2513 > > │ #![allow(unreachable_code)] │ 00:01:48 v #2514 > > │ #![allow(unused_attributes)] │ 00:01:48 v #2515 > > │ #![allow(unused_imports)] │ 00:01:48 v #2516 > > │ #![allow(unused_macros)] │ 00:01:48 v #2517 > > │ #![allow(unused_parens)] │ 00:01:48 v #2518 > > │ #![allow(unused_variables)] │ 00:01:48 v #2519 > > │ #![allow(unused_assignments)] │ 00:01:48 v #2520 > > │ mod module_74821680 { │ 00:01:48 v #2521 > > │ pub mod Spiral_builder { │ 00:01:48 v #2522 > > │ use super::*; │ 00:01:48 v #2523 > > │ use fable_library_rust::NativeArray_::get_Count; │ 00:01:48 v #2524 > > │ use fable_library_rust::NativeArray_::new_array; │ 00:01:48 v #2525 > > │ use fable_library_rust::NativeArray_::Array; │ 00:01:48 v #2526 > > │ use fable_library_rust::Native_::on_startup; │ 00:01:48 v #2527 > > │ use fable_library_rust::Native_::LrcPtr; │ 00:01:48 v #2528 > > │ use fable_library_rust::Native_::MutCell; │ 00:01:48 v #2529 > > │ use fable_library_rust::String_::append; │ 00:01:48 v #2530 > > │ use fable_library_rust::String_::printfn; │ 00:01:48 v #2531 > > │ use fable_library_rust::String_::sprintf; │ 00:01:48 v #2532 > > │ use fable_library_rust::String_::string; │ 00:01:48 v #2533 > > │ #[derive(Clone, Debug, Hash, PartialEq, PartialOrd)] │ 00:01:48 v #2534 > > │ pub struct Mut0 { │ 00:01:48 v #2535 > > │ pub l0: MutCell<i32>, │ 00:01:48 v #2536 > > │ pub l1: MutCell<string>, │ 00:01:48 v #2537 > > │ pub l2: MutCell<string>, │ 00:01:48 v #2538 > > │ } │ 00:01:48 v #2539 > > │ impl core::fmt::Display for Mut0 { │ 00:01:48 v #2540 > > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result │ 00:01:48 v #2541 > > │ { │ 00:01:48 v #2542 > > │ write!(f, "{}", core::any::type_name::<Self>()) │ 00:01:48 v #2543 > > │ } │ 00:01:48 v #2544 > > │ } │ 00:01:48 v #2545 > > │ pub fn method1(v0: i32, v1: LrcPtr<Spiral_builder::Mut0>) -> bool { │ 00:01:48 v #2546 > > │ (v1.l0.get().clone()) < (v0) │ 00:01:48 v #2547 > > │ } │ 00:01:48 v #2548 > > │ pub fn method2(v0: bool) -> bool { │ 00:01:48 v #2549 > > │ v0 │ 00:01:48 v #2550 > > │ } │ 00:01:48 v #2551 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:01:48 v #2552 > > │ printfn!("{0}", v0); │ 00:01:48 v #2553 > > │ } │ 00:01:48 v #2554 > > │ pub fn method0() { │ 00:01:48 v #2555 > > │ let v3: Array<string> = new_array(&[string("1"), string("2"), │ 00:01:48 v #2556 > > │ string("3")]); │ 00:01:48 v #2557 > > │ let v4: i32 = get_Count(v3.clone()); │ 00:01:48 v #2558 > > │ let v6: LrcPtr<Spiral_builder::Mut0> = │ 00:01:48 v #2559 > > │ LrcPtr::new(Spiral_builder::Mut0 { │ 00:01:48 v #2560 > > │ l0: MutCell::new(0_i32), │ 00:01:48 v #2561 > > │ l1: MutCell::new(string("")), │ 00:01:48 v #2562 > > │ l2: MutCell::new(string("")), │ 00:01:48 v #2563 > > │ }); │ 00:01:48 v #2564 > > │ while Spiral_builder::method1(v4, v6.clone()) { │ 00:01:48 v #2565 > > │ let v8: i32 = v6.l0.get().clone(); │ 00:01:48 v #2566 > > │ let v11: i32 = ((v8.wrapping_neg()) + (v4)) - 1_i32; │ 00:01:48 v #2567 > > │ let matchValue: string = v6.l1.get().clone(); │ 00:01:48 v #2568 > > │ let matchValue_1: string = v6.l2.get().clone(); │ 00:01:48 v #2569 > > │ let v15: string = append( │ 00:01:48 v #2570 > > │ (append((append((v3[v11].clone()), (matchValue_1))), │ 00:01:48 v #2571 > > │ (matchValue))), │ 00:01:48 v #2572 > > │ string(""), │ 00:01:48 v #2573 > > │ ); │ 00:01:48 v #2574 > > │ let v16: i32 = (v8) + 1_i32; │ 00:01:48 v #2575 > > │ v6.l0.set(v16); │ 00:01:48 v #2576 > > │ v6.l1.set(v15); │ 00:01:48 v #2577 > > │ v6.l2.set(string("\n")); │ 00:01:48 v #2578 > > │ () │ 00:01:48 v #2579 > > │ } │ 00:01:48 v #2580 > > │ { │ 00:01:48 v #2581 > > │ let matchValue_2: string = v6.l1.get().clone(); │ 00:01:48 v #2582 > > │ let matchValue_3: string = v6.l2.get().clone(); │ 00:01:48 v #2583 > > │ let v18: string = matchValue_2; │ 00:01:48 v #2584 > > │ let v20: bool = (v18.clone()) == string("1\n2\n3"); │ 00:01:48 v #2585 > > │ let v22: bool = if v20 { │ 00:01:48 v #2586 > > │ true │ 00:01:48 v #2587 > > │ } else { │ 00:01:48 v #2588 > > │ Spiral_builder::method2(v20) │ 00:01:48 v #2589 > > │ }; │ 00:01:48 v #2590 > > │ let v25: string = sprintf!( │ 00:01:48 v #2591 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:01:48 v #2592 > > │ string("__assert_eq"), │ 00:01:48 v #2593 > > │ v18, │ 00:01:48 v #2594 > > │ string("1\n2\n3") │ 00:01:48 v #2595 > > │ ); │ 00:01:48 v #2596 > > │ let v30: () = { │ 00:01:48 v #2597 > > │ Spiral_builder::closure0(v25.clone(), ()); │ 00:01:48 v #2598 > > │ () │ 00:01:48 v #2599 > > │ }; │ 00:01:48 v #2600 > > │ if (v22) == false { │ 00:01:48 v #2601 > > │ panic!("{}", v25,); │ 00:01:48 v #2602 > > │ } │ 00:01:48 v #2603 > > │ } │ 00:01:48 v #2604 > > │ } │ 00:01:48 v #2605 > > │ // on_startup!(Spiral_builder::method0()); │ 00:01:48 v #2606 > > │ } │ 00:01:48 v #2607 > > │ } │ 00:01:48 v #2608 > > │ pub use module_74821680::*; │ 00:01:48 v #2609 > > │ │ 00:01:48 v #2610 > > │ pub fn main() -> Result<(), String> { │ 00:01:48 v #2611 > > │ Ok(Spiral_builder::method0()) │ 00:01:48 v #2612 > > │ } │ 00:01:48 v #2613 > > │ │ 00:01:48 v #2614 > > │ .ts: │ 00:01:48 v #2615 > > │ import { Record } from │ 00:01:48 v #2616 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Types.js"; │ 00:01:48 v #2617 > > │ import { op_UnaryNegation_Int32, int32 } from │ 00:01:48 v #2618 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; │ 00:01:48 v #2619 > > │ import { IComparable, IEquatable } from │ 00:01:48 v #2620 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Util.js"; │ 00:01:48 v #2621 > > │ import { record_type, string_type, int32_type, TypeInfo } from │ 00:01:48 v #2622 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Reflection.js"; │ 00:01:48 v #2623 > > │ import { item } from │ 00:01:48 v #2624 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Array.js"; │ 00:01:48 v #2625 > > │ import { interpolate, toText } from │ 00:01:48 v #2626 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:01:48 v #2627 > > │ │ 00:01:48 v #2628 > > │ export class Mut0 extends Record implements IEquatable<Mut0>, │ 00:01:48 v #2629 > > │ IComparable<Mut0> { │ 00:01:48 v #2630 > > │ l0: int32; │ 00:01:48 v #2631 > > │ l1: string; │ 00:01:48 v #2632 > > │ l2: string; │ 00:01:48 v #2633 > > │ constructor(l0: int32, l1: string, l2: string) { │ 00:01:48 v #2634 > > │ super(); │ 00:01:48 v #2635 > > │ this.l0 = (l0 | 0); │ 00:01:48 v #2636 > > │ this.l1 = l1; │ 00:01:48 v #2637 > > │ this.l2 = l2; │ 00:01:48 v #2638 > > │ } │ 00:01:48 v #2639 > > │ } │ 00:01:48 v #2640 > > │ │ 00:01:48 v #2641 > > │ export function Mut0_$reflection(): TypeInfo { │ 00:01:48 v #2642 > > │ return record_type("Spiral_builder.Mut0", [], Mut0, () => [["l0", │ 00:01:48 v #2643 > > │ int32_type], ["l1", string_type], ["l2", string_type]]); │ 00:01:48 v #2644 > > │ } │ 00:01:48 v #2645 > > │ │ 00:01:48 v #2646 > > │ export function method1(v0: int32, v1: Mut0): boolean { │ 00:01:48 v #2647 > > │ return v1.l0 < v0; │ 00:01:48 v #2648 > > │ } │ 00:01:48 v #2649 > > │ │ 00:01:48 v #2650 > > │ export function method2(v0: boolean): boolean { │ 00:01:48 v #2651 > > │ return v0; │ 00:01:48 v #2652 > > │ } │ 00:01:48 v #2653 > > │ │ 00:01:48 v #2654 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:01:48 v #2655 > > │ console.log(v0); │ 00:01:48 v #2656 > > │ } │ 00:01:48 v #2657 > > │ │ 00:01:48 v #2658 > > │ export function method0(): void { │ 00:01:48 v #2659 > > │ const v3: string[] = ["1", "2", "3"]; │ 00:01:48 v #2660 > > │ const v4: int32 = v3.length | 0; │ 00:01:48 v #2661 > > │ const v6: Mut0 = new Mut0(0, "", ""); │ 00:01:48 v #2662 > > │ while (method1(v4, v6)) { │ 00:01:48 v #2663 > > │ const v8: int32 = v6.l0 | 0; │ 00:01:48 v #2664 > > │ const v11: int32 = ((op_UnaryNegation_Int32(v8) + v4) - 1) | 0; │ 00:01:48 v #2665 > > │ const matchValue: string = v6.l1; │ 00:01:48 v #2666 > > │ const matchValue_1: string = v6.l2; │ 00:01:48 v #2667 > > │ const v15: string = ((item(v11, v3) + matchValue_1) + matchValue) + │ 00:01:48 v #2668 > > │ ""; │ 00:01:48 v #2669 > > │ const v16: int32 = (v8 + 1) | 0; │ 00:01:48 v #2670 > > │ v6.l0 = (v16 | 0); │ 00:01:48 v #2671 > > │ v6.l1 = v15; │ 00:01:48 v #2672 > > │ v6.l2 = "\n"; │ 00:01:48 v #2673 > > │ } │ 00:01:48 v #2674 > > │ const matchValue_2: string = v6.l1; │ 00:01:48 v #2675 > > │ const matchValue_3: string = v6.l2; │ 00:01:48 v #2676 > > │ const v18: string = matchValue_2; │ 00:01:48 v #2677 > > │ const v20: boolean = v18 === "1\n2\n3"; │ 00:01:48 v #2678 > > │ const v22: boolean = v20 ? true : method2(v20); │ 00:01:48 v #2679 > > │ const v25: string = toText(interpolate("%P() / actual: %A%P() / │ 00:01:48 v #2680 > > │ expected: %A%P()", ["__assert_eq", v18, "1\n2\n3"])); │ 00:01:48 v #2681 > > │ let v30: any; │ 00:01:48 v #2682 > > │ closure0(v25, undefined); │ 00:01:48 v #2683 > > │ v30 = undefined; │ 00:01:48 v #2684 > > │ if (v22 === false) { │ 00:01:48 v #2685 > > │ throw new Error(v25); │ 00:01:48 v #2686 > > │ } │ 00:01:48 v #2687 > > │ } │ 00:01:48 v #2688 > > │ │ 00:01:48 v #2689 > > │ method0(); │ 00:01:48 v #2690 > > │ │ 00:01:48 v #2691 > > │ │ 00:01:48 v #2692 > > │ │ 00:01:48 v #2693 > > │ // spiral_builder.process_typescript │ 00:01:48 v #2694 > > │ │ 00:01:48 v #2695 > > │ .py: │ 00:01:48 v #2696 > > │ from __future__ import annotations │ 00:01:48 v #2697 > > │ from fable_modules.fable_library.int32 import op_unary_negation_int32 │ 00:01:48 v #2698 > > │ from fable_modules.fable_library.reflection import (TypeInfo, int32_type, │ 00:01:48 v #2699 > > │ string_type, record_type) │ 00:01:48 v #2700 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:01:48 v #2701 > > │ from fable_modules.fable_library.types import (Record, Array) │ 00:01:48 v #2702 > > │ from dataclasses import dataclass │ 00:01:48 v #2703 > > │ │ 00:01:48 v #2704 > > │ def _expr0() -> TypeInfo: │ 00:01:48 v #2705 > > │ return record_type("Spiral_builder.Mut0", [], Mut0, lambda: [("l0", │ 00:01:48 v #2706 > > │ int32_type), ("l1", string_type), ("l2", string_type)]) │ 00:01:48 v #2707 > > │ │ 00:01:48 v #2708 > > │ │ 00:01:48 v #2709 > > │ @dataclass(eq = False, repr = False, slots = True) │ 00:01:48 v #2710 > > │ class Mut0(Record): │ 00:01:48 v #2711 > > │ l0: int │ 00:01:48 v #2712 > > │ l1: str │ 00:01:48 v #2713 > > │ l2: str │ 00:01:48 v #2714 > > │ │ 00:01:48 v #2715 > > │ Mut0_reflection = _expr0 │ 00:01:48 v #2716 > > │ │ 00:01:48 v #2717 > > │ def method1(v0: int, v1: Mut0) -> bool: │ 00:01:48 v #2718 > > │ return v1.l0 < v0 │ 00:01:48 v #2719 > > │ │ 00:01:48 v #2720 > > │ │ 00:01:48 v #2721 > > │ def method2(v0: bool) -> bool: │ 00:01:48 v #2722 > > │ return v0 │ 00:01:48 v #2723 > > │ │ 00:01:48 v #2724 > > │ │ 00:01:48 v #2725 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:01:48 v #2726 > > │ print(v0) │ 00:01:48 v #2727 > > │ │ 00:01:48 v #2728 > > │ │ 00:01:48 v #2729 > > │ def method0(__unit: None=None) -> None: │ 00:01:48 v #2730 > > │ v3: Array[str] = ["1", "2", "3"] │ 00:01:48 v #2731 > > │ v4: int = len(v3) or 0 │ 00:01:48 v #2732 > > │ v6: Mut0 = Mut0(0, "", "") │ 00:01:48 v #2733 > > │ while method1(v4, v6): │ 00:01:48 v #2734 > > │ v8: int = v6.l0 or 0 │ 00:01:48 v #2735 > > │ v11: int = ((op_unary_negation_int32(v8) + v4) - 1) or 0 │ 00:01:48 v #2736 > > │ match_value: str = v6.l1 │ 00:01:48 v #2737 > > │ match_value_1: str = v6.l2 │ 00:01:48 v #2738 > > │ v15: str = ((v3[v11] + match_value_1) + match_value) + "" │ 00:01:48 v #2739 > > │ v16: int = (v8 + 1) or 0 │ 00:01:48 v #2740 > > │ v6.l0 = v16 or 0 │ 00:01:48 v #2741 > > │ v6.l1 = v15 │ 00:01:48 v #2742 > > │ v6.l2 = "\n" │ 00:01:48 v #2743 > > │ match_value_2: str = v6.l1 │ 00:01:48 v #2744 > > │ match_value_3: str = v6.l2 │ 00:01:48 v #2745 > > │ v18: str = match_value_2 │ 00:01:48 v #2746 > > │ v20: bool = v18 == "1\n2\n3" │ 00:01:48 v #2747 > > │ v22: bool = True if v20 else method2(v20) │ 00:01:48 v #2748 > > │ v25: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:01:48 v #2749 > > │ %A%P()", ["__assert_eq", v18, "1\n2\n3"])) │ 00:01:48 v #2750 > > │ v30: None │ 00:01:48 v #2751 > > │ closure0(v25, None) │ 00:01:48 v #2752 > > │ v30 = None │ 00:01:48 v #2753 > > │ if v22 == False: │ 00:01:48 v #2754 > > │ raise Exception(v25) │ 00:01:48 v #2755 > > │ │ 00:01:48 v #2756 > > │ │ 00:01:48 v #2757 > > │ │ 00:01:48 v #2758 > > │ method0() │ 00:01:48 v #2759 > > │ │ 00:01:48 v #2760 > > │ │ 00:01:48 v #2761 > > │ │ 00:01:48 v #2762 > > │ # spiral_builder.process_python │ 00:01:48 v #2763 > > │ │ 00:01:48 v #2764 > > │ .fsx output: │ 00:01:48 v #2765 > > │ __assert_eq / actual: "1 │ 00:01:48 v #2766 > > │ 2 │ 00:01:48 v #2767 > > │ 3" / expected: "1 │ 00:01:48 v #2768 > > │ 2 │ 00:01:48 v #2769 > > │ 3" │ 00:01:48 v #2770 > > │ │ 00:01:48 v #2771 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:48 v #2772 > > 00:01:48 v #2773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:48 v #2774 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:48 v #2775 > > │ ### concat_list │ 00:01:48 v #2776 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:48 v #2777 > > 00:01:48 v #2778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:48 v #2779 > > inl concat_list separator input = 00:01:48 v #2780 > > (input, { acc = ""; sep = "" }) 00:01:48 v #2781 > > ||> listm.foldBack fun (x : string) { acc sep } => 00:01:48 v #2782 > > { acc = $'!x + !sep + !acc + ""' : string; sep = separator } 00:01:48 v #2783 > > |> fun { acc } => acc 00:01:48 v #2784 > > 00:01:48 v #2785 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:48 v #2786 > > //// test 00:01:48 v #2787 > > ///! fsharp 00:01:48 v #2788 > > ///! cuda 00:01:48 v #2789 > > ///! rust 00:01:48 v #2790 > > ///! typescript 00:01:48 v #2791 > > ///! python 00:01:48 v #2792 > > //// print_code 00:01:48 v #2793 > > 00:01:48 v #2794 > > [[ 00:01:48 v #2795 > > "1" 00:01:48 v #2796 > > "2" 00:01:48 v #2797 > > "3" 00:01:48 v #2798 > > ]] 00:01:48 v #2799 > > |> fun x => 00:01:48 v #2800 > > inl code = (x : _) |> concat_list "\n" 00:01:48 v #2801 > > code 00:01:48 v #2802 > > |> _assert_eq "1\n2\n3" 00:01:52 v #2803 > > 00:01:52 v #2804 > > ╭─[ 3.44s - return value ]─────────────────────────────────────────────────────╮ 00:01:52 v #2805 > > │ │ 00:01:52 v #2806 > > │ .py output (Cuda): │ 00:01:52 v #2807 > > │ __assert_eq / actual: 1 │ 00:01:52 v #2808 > > │ 2 │ 00:01:52 v #2809 > > │ 3 / expected: 1 │ 00:01:52 v #2810 > > │ 2 │ 00:01:52 v #2811 > > │ 3 │ 00:01:52 v #2812 > > │ │ 00:01:52 v #2813 > > │ │ 00:01:52 v #2814 > > │ .rs output: │ 00:01:52 v #2815 > > │ __assert_eq / actual: "1 │ 00:01:52 v #2816 > > │ 2 │ 00:01:52 v #2817 > > │ 3" / expected: "1 │ 00:01:52 v #2818 > > │ 2 │ 00:01:52 v #2819 > > │ 3" │ 00:01:52 v #2820 > > │ │ 00:01:52 v #2821 > > │ │ 00:01:52 v #2822 > > │ .ts output: │ 00:01:52 v #2823 > > │ __assert_eq / actual: 1 │ 00:01:52 v #2824 > > │ 2 │ 00:01:52 v #2825 > > │ 3 / expected: 1 │ 00:01:52 v #2826 > > │ 2 │ 00:01:52 v #2827 > > │ 3 │ 00:01:52 v #2828 > > │ │ 00:01:52 v #2829 > > │ │ 00:01:52 v #2830 > > │ .py output: │ 00:01:52 v #2831 > > │ __assert_eq / actual: 1 │ 00:01:52 v #2832 > > │ 2 │ 00:01:52 v #2833 > > │ 3 / expected: 1 │ 00:01:52 v #2834 > > │ 2 │ 00:01:52 v #2835 > > │ 3 │ 00:01:52 v #2836 > > │ │ 00:01:52 v #2837 > > │ │ 00:01:52 v #2838 > > │ │ 00:01:52 v #2839 > > │ │ 00:01:52 v #2840 > > │ │ 00:01:52 v #2841 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:52 v #2842 > > 00:01:52 v #2843 > > ╭─[ 3.44s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:52 v #2844 > > │ .fsx: │ 00:01:52 v #2845 > > │ let rec method1 (v0 : bool) : bool = │ 00:01:52 v #2846 > > │ v0 │ 00:01:52 v #2847 > > │ and closure0 (v0 : string) () : unit = │ 00:01:52 v #2848 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:01:52 v #2849 > > │ v1 v0 │ 00:01:52 v #2850 > > │ and method0 () : unit = │ 00:01:52 v #2851 > > │ let v0 : string = "3" │ 00:01:52 v #2852 > > │ let v1 : string = "" │ 00:01:52 v #2853 > > │ let v2 : string = v0 + v1 + v1 + "" │ 00:01:52 v #2854 > > │ let v3 : string = "2" │ 00:01:52 v #2855 > > │ let v4 : string = "\n" │ 00:01:52 v #2856 > > │ let v5 : string = v3 + v4 + v2 + "" │ 00:01:52 v #2857 > > │ let v6 : string = "1" │ 00:01:52 v #2858 > > │ let v7 : string = v6 + v4 + v5 + "" │ 00:01:52 v #2859 > > │ let v8 : bool = v7 = "1\n2\n3" │ 00:01:52 v #2860 > > │ let v10 : bool = │ 00:01:52 v #2861 > > │ if v8 then │ 00:01:52 v #2862 > > │ true │ 00:01:52 v #2863 > > │ else │ 00:01:52 v #2864 > > │ method1(v8) │ 00:01:52 v #2865 > > │ let v11 : string = "__assert_eq" │ 00:01:52 v #2866 > > │ let v12 : string = "1\n2\n3" │ 00:01:52 v #2867 > > │ let v13 : string = $"{v11} / actual: %A{v7} / expected: %A{v12}" │ 00:01:52 v #2868 > > │ let v16 : unit = () │ 00:01:52 v #2869 > > │ let v17 : (unit -> unit) = closure0(v13) │ 00:01:52 v #2870 > > │ let v18 : unit = (fun () -> v17 (); v16) () │ 00:01:52 v #2871 > > │ let v20 : bool = v10 = false │ 00:01:52 v #2872 > > │ if v20 then │ 00:01:52 v #2873 > > │ failwith<unit> v13 │ 00:01:52 v #2874 > > │ method0() │ 00:01:52 v #2875 > > │ │ 00:01:52 v #2876 > > │ │ 00:01:52 v #2877 > > │ .rs: │ 00:01:52 v #2878 > > │ #![allow(dead_code)] │ 00:01:52 v #2879 > > │ #![allow(non_camel_case_types)] │ 00:01:52 v #2880 > > │ #![allow(non_snake_case)] │ 00:01:52 v #2881 > > │ #![allow(non_upper_case_globals)] │ 00:01:52 v #2882 > > │ #![allow(unreachable_code)] │ 00:01:52 v #2883 > > │ #![allow(unused_attributes)] │ 00:01:52 v #2884 > > │ #![allow(unused_imports)] │ 00:01:52 v #2885 > > │ #![allow(unused_macros)] │ 00:01:52 v #2886 > > │ #![allow(unused_parens)] │ 00:01:52 v #2887 > > │ #![allow(unused_variables)] │ 00:01:52 v #2888 > > │ #![allow(unused_assignments)] │ 00:01:52 v #2889 > > │ mod module_295a803c { │ 00:01:52 v #2890 > > │ pub mod Spiral_builder { │ 00:01:52 v #2891 > > │ use super::*; │ 00:01:52 v #2892 > > │ use fable_library_rust::Native_::on_startup; │ 00:01:52 v #2893 > > │ use fable_library_rust::String_::printfn; │ 00:01:52 v #2894 > > │ use fable_library_rust::String_::sprintf; │ 00:01:52 v #2895 > > │ use fable_library_rust::String_::string; │ 00:01:52 v #2896 > > │ pub fn method1(v0: bool) -> bool { │ 00:01:52 v #2897 > > │ v0 │ 00:01:52 v #2898 > > │ } │ 00:01:52 v #2899 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:01:52 v #2900 > > │ printfn!("{0}", v0); │ 00:01:52 v #2901 > > │ } │ 00:01:52 v #2902 > > │ pub fn method0() { │ 00:01:52 v #2903 > > │ let v7: string = string("1\n2\n3"); │ 00:01:52 v #2904 > > │ let v8: bool = (v7.clone()) == string("1\n2\n3"); │ 00:01:52 v #2905 > > │ let v10: bool = if v8 { │ 00:01:52 v #2906 > > │ true │ 00:01:52 v #2907 > > │ } else { │ 00:01:52 v #2908 > > │ Spiral_builder::method1(v8) │ 00:01:52 v #2909 > > │ }; │ 00:01:52 v #2910 > > │ let v13: string = sprintf!( │ 00:01:52 v #2911 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:01:52 v #2912 > > │ string("__assert_eq"), │ 00:01:52 v #2913 > > │ v7, │ 00:01:52 v #2914 > > │ string("1\n2\n3") │ 00:01:52 v #2915 > > │ ); │ 00:01:52 v #2916 > > │ let v18: () = { │ 00:01:52 v #2917 > > │ Spiral_builder::closure0(v13.clone(), ()); │ 00:01:52 v #2918 > > │ () │ 00:01:52 v #2919 > > │ }; │ 00:01:52 v #2920 > > │ if (v10) == false { │ 00:01:52 v #2921 > > │ panic!("{}", v13,); │ 00:01:52 v #2922 > > │ } │ 00:01:52 v #2923 > > │ } │ 00:01:52 v #2924 > > │ // on_startup!(Spiral_builder::method0()); │ 00:01:52 v #2925 > > │ } │ 00:01:52 v #2926 > > │ } │ 00:01:52 v #2927 > > │ pub use module_295a803c::*; │ 00:01:52 v #2928 > > │ │ 00:01:52 v #2929 > > │ pub fn main() -> Result<(), String> { │ 00:01:52 v #2930 > > │ Ok(Spiral_builder::method0()) │ 00:01:52 v #2931 > > │ } │ 00:01:52 v #2932 > > │ │ 00:01:52 v #2933 > > │ .ts: │ 00:01:52 v #2934 > > │ import { interpolate, toText } from │ 00:01:52 v #2935 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:01:52 v #2936 > > │ │ 00:01:52 v #2937 > > │ export function method1(v0: boolean): boolean { │ 00:01:52 v #2938 > > │ return v0; │ 00:01:52 v #2939 > > │ } │ 00:01:52 v #2940 > > │ │ 00:01:52 v #2941 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:01:52 v #2942 > > │ console.log(v0); │ 00:01:52 v #2943 > > │ } │ 00:01:52 v #2944 > > │ │ 00:01:52 v #2945 > > │ export function method0(): void { │ 00:01:52 v #2946 > > │ const v7 = "1\n2\n3"; │ 00:01:52 v #2947 > > │ const v8: boolean = v7 === "1\n2\n3"; │ 00:01:52 v #2948 > > │ const v10: boolean = v8 ? true : method1(v8); │ 00:01:52 v #2949 > > │ const v13: string = toText(interpolate("%P() / actual: %A%P() / │ 00:01:52 v #2950 > > │ expected: %A%P()", ["__assert_eq", v7, "1\n2\n3"])); │ 00:01:52 v #2951 > > │ let v18: any; │ 00:01:52 v #2952 > > │ closure0(v13, undefined); │ 00:01:52 v #2953 > > │ v18 = undefined; │ 00:01:52 v #2954 > > │ if (v10 === false) { │ 00:01:52 v #2955 > > │ throw new Error(v13); │ 00:01:52 v #2956 > > │ } │ 00:01:52 v #2957 > > │ } │ 00:01:52 v #2958 > > │ │ 00:01:52 v #2959 > > │ method0(); │ 00:01:52 v #2960 > > │ │ 00:01:52 v #2961 > > │ │ 00:01:52 v #2962 > > │ │ 00:01:52 v #2963 > > │ // spiral_builder.process_typescript │ 00:01:52 v #2964 > > │ │ 00:01:52 v #2965 > > │ .py: │ 00:01:52 v #2966 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:01:52 v #2967 > > │ │ 00:01:52 v #2968 > > │ def method1(v0: bool) -> bool: │ 00:01:52 v #2969 > > │ return v0 │ 00:01:52 v #2970 > > │ │ 00:01:52 v #2971 > > │ │ 00:01:52 v #2972 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:01:52 v #2973 > > │ print(v0) │ 00:01:52 v #2974 > > │ │ 00:01:52 v #2975 > > │ │ 00:01:52 v #2976 > > │ def method0(__unit: None=None) -> None: │ 00:01:52 v #2977 > > │ v7: str = "1\n2\n3" │ 00:01:52 v #2978 > > │ v8: bool = v7 == "1\n2\n3" │ 00:01:52 v #2979 > > │ v10: bool = True if v8 else method1(v8) │ 00:01:52 v #2980 > > │ v13: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:01:52 v #2981 > > │ %A%P()", ["__assert_eq", v7, "1\n2\n3"])) │ 00:01:52 v #2982 > > │ v18: None │ 00:01:52 v #2983 > > │ closure0(v13, None) │ 00:01:52 v #2984 > > │ v18 = None │ 00:01:52 v #2985 > > │ if v10 == False: │ 00:01:52 v #2986 > > │ raise Exception(v13) │ 00:01:52 v #2987 > > │ │ 00:01:52 v #2988 > > │ │ 00:01:52 v #2989 > > │ │ 00:01:52 v #2990 > > │ method0() │ 00:01:52 v #2991 > > │ │ 00:01:52 v #2992 > > │ │ 00:01:52 v #2993 > > │ │ 00:01:52 v #2994 > > │ # spiral_builder.process_python │ 00:01:52 v #2995 > > │ │ 00:01:52 v #2996 > > │ .py (Cuda): │ 00:01:52 v #2997 > > │ kernel = r""" │ 00:01:52 v #2998 > > │ """ │ 00:01:52 v #2999 > > │ class static_array(): │ 00:01:52 v #3000 > > │ def __init__(self, length): │ 00:01:52 v #3001 > > │ self.ptr = [] │ 00:01:52 v #3002 > > │ for _ in range(length): │ 00:01:52 v #3003 > > │ self.ptr.append(None) │ 00:01:52 v #3004 > > │ │ 00:01:52 v #3005 > > │ def __getitem__(self, index): │ 00:01:52 v #3006 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:01:52 v #3007 > > │ range." │ 00:01:52 v #3008 > > │ return self.ptr[index] │ 00:01:52 v #3009 > > │ │ 00:01:52 v #3010 > > │ def __setitem__(self, index, value): │ 00:01:52 v #3011 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:01:52 v #3012 > > │ range." │ 00:01:52 v #3013 > > │ self.ptr[index] = value │ 00:01:52 v #3014 > > │ │ 00:01:52 v #3015 > > │ class static_array_list(static_array): │ 00:01:52 v #3016 > > │ def __init__(self, length): │ 00:01:52 v #3017 > > │ super().__init__(length) │ 00:01:52 v #3018 > > │ self.length = 0 │ 00:01:52 v #3019 > > │ │ 00:01:52 v #3020 > > │ def __getitem__(self, index): │ 00:01:52 v #3021 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:01:52 v #3022 > > │ range." │ 00:01:52 v #3023 > > │ return self.ptr[index] │ 00:01:52 v #3024 > > │ │ 00:01:52 v #3025 > > │ def __setitem__(self, index, value): │ 00:01:52 v #3026 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:01:52 v #3027 > > │ range." │ 00:01:52 v #3028 > > │ self.ptr[index] = value │ 00:01:52 v #3029 > > │ │ 00:01:52 v #3030 > > │ def push(self,value): │ 00:01:52 v #3031 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:01:52 v #3032 > > │ to be less than the maximum length of the array." │ 00:01:52 v #3033 > > │ self.ptr[self.length] = value │ 00:01:52 v #3034 > > │ self.length += 1 │ 00:01:52 v #3035 > > │ │ 00:01:52 v #3036 > > │ def pop(self): │ 00:01:52 v #3037 > > │ assert (0 < self.length), "The length before popping has to be │ 00:01:52 v #3038 > > │ greater than 0." │ 00:01:52 v #3039 > > │ self.length -= 1 │ 00:01:52 v #3040 > > │ return self.ptr[self.length] │ 00:01:52 v #3041 > > │ │ 00:01:52 v #3042 > > │ def unsafe_set_length(self,i): │ 00:01:52 v #3043 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:01:52 v #3044 > > │ self.length = i │ 00:01:52 v #3045 > > │ │ 00:01:52 v #3046 > > │ class dynamic_array(static_array): │ 00:01:52 v #3047 > > │ pass │ 00:01:52 v #3048 > > │ │ 00:01:52 v #3049 > > │ class dynamic_array_list(static_array_list): │ 00:01:52 v #3050 > > │ def length_(self): return self.length │ 00:01:52 v #3051 > > │ │ 00:01:52 v #3052 > > │ import cupy as cp │ 00:01:52 v #3053 > > │ import numpy as np │ 00:01:52 v #3054 > > │ from dataclasses import dataclass │ 00:01:52 v #3055 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:01:52 v #3056 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ 00:01:52 v #3057 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ 00:01:52 v #3058 > > │ cuda = False │ 00:01:52 v #3059 > > │ │ 00:01:52 v #3060 > > │ def method1(v0 : bool) -> bool: │ 00:01:52 v #3061 > > │ return v0 │ 00:01:52 v #3062 > > │ def method0() -> None: │ 00:01:52 v #3063 > > │ v0 = "3" │ 00:01:52 v #3064 > > │ v1 = "" │ 00:01:52 v #3065 > > │ v2 = v0 + v1 + v1 + "" │ 00:01:52 v #3066 > > │ del v0, v1 │ 00:01:52 v #3067 > > │ v3 = "2" │ 00:01:52 v #3068 > > │ v4 = "\n" │ 00:01:52 v #3069 > > │ v5 = v3 + v4 + v2 + "" │ 00:01:52 v #3070 > > │ del v2, v3 │ 00:01:52 v #3071 > > │ v6 = "1" │ 00:01:52 v #3072 > > │ v7 = v6 + v4 + v5 + "" │ 00:01:52 v #3073 > > │ del v4, v5, v6 │ 00:01:52 v #3074 > > │ v8 = v7 == "1\n2\n3" │ 00:01:52 v #3075 > > │ if v8: │ 00:01:52 v #3076 > > │ v10 = True │ 00:01:52 v #3077 > > │ else: │ 00:01:52 v #3078 > > │ v10 = method1(v8) │ 00:01:52 v #3079 > > │ del v8 │ 00:01:52 v #3080 > > │ v14 = "__assert_eq" │ 00:01:52 v #3081 > > │ v15 = "1\n2\n3" │ 00:01:52 v #3082 > > │ v16 = f"{v14} / actual: {v7} / expected: {v15}" │ 00:01:52 v #3083 > > │ del v7, v14, v15 │ 00:01:52 v #3084 > > │ print(v16) │ 00:01:52 v #3085 > > │ v22 = v10 == False │ 00:01:52 v #3086 > > │ del v10 │ 00:01:52 v #3087 > > │ if v22: │ 00:01:52 v #3088 > > │ del v22 │ 00:01:52 v #3089 > > │ raise Exception(v16) │ 00:01:52 v #3090 > > │ else: │ 00:01:52 v #3091 > > │ del v16, v22 │ 00:01:52 v #3092 > > │ return │ 00:01:52 v #3093 > > │ def main_body(): │ 00:01:52 v #3094 > > │ return method0() │ 00:01:52 v #3095 > > │ │ 00:01:52 v #3096 > > │ def main(): │ 00:01:52 v #3097 > > │ r = main_body() │ 00:01:52 v #3098 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ 00:01:52 v #3099 > > │ so the `__trap()` calls on the kernel aren't missed. │ 00:01:52 v #3100 > > │ return r │ 00:01:52 v #3101 > > │ │ 00:01:52 v #3102 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:01:52 v #3103 > > │ print(result) │ 00:01:52 v #3104 > > │ │ 00:01:52 v #3105 > > │ .fsx output: │ 00:01:52 v #3106 > > │ __assert_eq / actual: "1 │ 00:01:52 v #3107 > > │ 2 │ 00:01:52 v #3108 > > │ 3" / expected: "1 │ 00:01:52 v #3109 > > │ 2 │ 00:01:52 v #3110 > > │ 3" │ 00:01:52 v #3111 > > │ │ 00:01:52 v #3112 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:52 v #3113 > > 00:01:52 v #3114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:52 v #3115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:52 v #3116 > > │ ### concat_list_interpolation │ 00:01:52 v #3117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:52 v #3118 > > 00:01:52 v #3119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:52 v #3120 > > inl concat_list_interpolation separator input = 00:01:52 v #3121 > > (input, { acc = ""; sep = "" }) 00:01:52 v #3122 > > ||> listm.foldBack fun (x : string) { acc sep } => 00:01:52 v #3123 > > backend_switch { 00:01:52 v #3124 > > Fsharp = fun () => { acc = $'$"{!x}{!sep}{!acc}"' : string; sep = 00:01:52 v #3125 > > separator } 00:01:52 v #3126 > > Python = fun () => { acc = $'f"{!x}{!sep}{!acc}"' : string; sep = 00:01:52 v #3127 > > separator } 00:01:52 v #3128 > > } 00:01:52 v #3129 > > |> fun { acc } => acc 00:01:52 v #3130 > > 00:01:52 v #3131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:52 v #3132 > > //// test 00:01:52 v #3133 > > ///! fsharp 00:01:52 v #3134 > > ///! cuda 00:01:52 v #3135 > > ///! rust 00:01:52 v #3136 > > ///! typescript 00:01:52 v #3137 > > ///! python 00:01:52 v #3138 > > //// print_code 00:01:52 v #3139 > > 00:01:52 v #3140 > > [[ 00:01:52 v #3141 > > "1" 00:01:52 v #3142 > > "2" 00:01:52 v #3143 > > "3" 00:01:52 v #3144 > > ]] 00:01:52 v #3145 > > |> fun x => 00:01:52 v #3146 > > inl code = (x : _) |> concat_list_interpolation "\n" 00:01:52 v #3147 > > code 00:01:52 v #3148 > > |> _assert_eq "1\n2\n3" 00:01:56 v #3149 > > 00:01:56 v #3150 > > ╭─[ 3.43s - return value ]─────────────────────────────────────────────────────╮ 00:01:56 v #3151 > > │ │ 00:01:56 v #3152 > > │ .py output (Cuda): │ 00:01:56 v #3153 > > │ __assert_eq / actual: 1 │ 00:01:56 v #3154 > > │ 2 │ 00:01:56 v #3155 > > │ 3 / expected: 1 │ 00:01:56 v #3156 > > │ 2 │ 00:01:56 v #3157 > > │ 3 │ 00:01:56 v #3158 > > │ │ 00:01:56 v #3159 > > │ │ 00:01:56 v #3160 > > │ .rs output: │ 00:01:56 v #3161 > > │ __assert_eq / actual: "1 │ 00:01:56 v #3162 > > │ 2 │ 00:01:56 v #3163 > > │ 3" / expected: "1 │ 00:01:56 v #3164 > > │ 2 │ 00:01:56 v #3165 > > │ 3" │ 00:01:56 v #3166 > > │ │ 00:01:56 v #3167 > > │ │ 00:01:56 v #3168 > > │ .ts output: │ 00:01:56 v #3169 > > │ __assert_eq / actual: 1 │ 00:01:56 v #3170 > > │ 2 │ 00:01:56 v #3171 > > │ 3 / expected: 1 │ 00:01:56 v #3172 > > │ 2 │ 00:01:56 v #3173 > > │ 3 │ 00:01:56 v #3174 > > │ │ 00:01:56 v #3175 > > │ │ 00:01:56 v #3176 > > │ .py output: │ 00:01:56 v #3177 > > │ __assert_eq / actual: 1 │ 00:01:56 v #3178 > > │ 2 │ 00:01:56 v #3179 > > │ 3 / expected: 1 │ 00:01:56 v #3180 > > │ 2 │ 00:01:56 v #3181 > > │ 3 │ 00:01:56 v #3182 > > │ │ 00:01:56 v #3183 > > │ │ 00:01:56 v #3184 > > │ │ 00:01:56 v #3185 > > │ │ 00:01:56 v #3186 > > │ │ 00:01:56 v #3187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:56 v #3188 > > 00:01:56 v #3189 > > ╭─[ 3.43s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:56 v #3190 > > │ .fsx: │ 00:01:56 v #3191 > > │ let rec method1 (v0 : bool) : bool = │ 00:01:56 v #3192 > > │ v0 │ 00:01:56 v #3193 > > │ and closure0 (v0 : string) () : unit = │ 00:01:56 v #3194 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:01:56 v #3195 > > │ v1 v0 │ 00:01:56 v #3196 > > │ and method0 () : unit = │ 00:01:56 v #3197 > > │ let v0 : string = "3" │ 00:01:56 v #3198 > > │ let v1 : string = "" │ 00:01:56 v #3199 > > │ let v2 : string = $"{v0}{v1}{v1}" │ 00:01:56 v #3200 > > │ let v7 : string = "\n" │ 00:01:56 v #3201 > > │ let v8 : string = "2" │ 00:01:56 v #3202 > > │ let v9 : string = $"{v8}{v7}{v2}" │ 00:01:56 v #3203 > > │ let v13 : string = "1" │ 00:01:56 v #3204 > > │ let v14 : string = $"{v13}{v7}{v9}" │ 00:01:56 v #3205 > > │ let v18 : bool = v14 = "1\n2\n3" │ 00:01:56 v #3206 > > │ let v20 : bool = │ 00:01:56 v #3207 > > │ if v18 then │ 00:01:56 v #3208 > > │ true │ 00:01:56 v #3209 > > │ else │ 00:01:56 v #3210 > > │ method1(v18) │ 00:01:56 v #3211 > > │ let v21 : string = "__assert_eq" │ 00:01:56 v #3212 > > │ let v22 : string = "1\n2\n3" │ 00:01:56 v #3213 > > │ let v23 : string = $"{v21} / actual: %A{v14} / expected: %A{v22}" │ 00:01:56 v #3214 > > │ let v26 : unit = () │ 00:01:56 v #3215 > > │ let v27 : (unit -> unit) = closure0(v23) │ 00:01:56 v #3216 > > │ let v28 : unit = (fun () -> v27 (); v26) () │ 00:01:56 v #3217 > > │ let v30 : bool = v20 = false │ 00:01:56 v #3218 > > │ if v30 then │ 00:01:56 v #3219 > > │ failwith<unit> v23 │ 00:01:56 v #3220 > > │ method0() │ 00:01:56 v #3221 > > │ │ 00:01:56 v #3222 > > │ │ 00:01:56 v #3223 > > │ .rs: │ 00:01:56 v #3224 > > │ #![allow(dead_code)] │ 00:01:56 v #3225 > > │ #![allow(non_camel_case_types)] │ 00:01:56 v #3226 > > │ #![allow(non_snake_case)] │ 00:01:56 v #3227 > > │ #![allow(non_upper_case_globals)] │ 00:01:56 v #3228 > > │ #![allow(unreachable_code)] │ 00:01:56 v #3229 > > │ #![allow(unused_attributes)] │ 00:01:56 v #3230 > > │ #![allow(unused_imports)] │ 00:01:56 v #3231 > > │ #![allow(unused_macros)] │ 00:01:56 v #3232 > > │ #![allow(unused_parens)] │ 00:01:56 v #3233 > > │ #![allow(unused_variables)] │ 00:01:56 v #3234 > > │ #![allow(unused_assignments)] │ 00:01:56 v #3235 > > │ mod module_225b18d2 { │ 00:01:56 v #3236 > > │ pub mod Spiral_builder { │ 00:01:56 v #3237 > > │ use super::*; │ 00:01:56 v #3238 > > │ use fable_library_rust::NativeArray_::new_array; │ 00:01:56 v #3239 > > │ use fable_library_rust::Native_::on_startup; │ 00:01:56 v #3240 > > │ use fable_library_rust::String_::concat; │ 00:01:56 v #3241 > > │ use fable_library_rust::String_::printfn; │ 00:01:56 v #3242 > > │ use fable_library_rust::String_::sprintf; │ 00:01:56 v #3243 > > │ use fable_library_rust::String_::string; │ 00:01:56 v #3244 > > │ pub fn method1(v0: bool) -> bool { │ 00:01:56 v #3245 > > │ v0 │ 00:01:56 v #3246 > > │ } │ 00:01:56 v #3247 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:01:56 v #3248 > > │ printfn!("{0}", v0); │ 00:01:56 v #3249 > > │ } │ 00:01:56 v #3250 > > │ pub fn method0() { │ 00:01:56 v #3251 > > │ let v14: string = concat(new_array(&[ │ 00:01:56 v #3252 > > │ string("1"), │ 00:01:56 v #3253 > > │ string("\n"), │ 00:01:56 v #3254 > > │ concat(new_array(&[ │ 00:01:56 v #3255 > > │ string("2"), │ 00:01:56 v #3256 > > │ string("\n"), │ 00:01:56 v #3257 > > │ concat(new_array(&[string("3"), string(""), │ 00:01:56 v #3258 > > │ string("")])), │ 00:01:56 v #3259 > > │ ])), │ 00:01:56 v #3260 > > │ ])); │ 00:01:56 v #3261 > > │ let v18: bool = (v14.clone()) == string("1\n2\n3"); │ 00:01:56 v #3262 > > │ let v20: bool = if v18 { │ 00:01:56 v #3263 > > │ true │ 00:01:56 v #3264 > > │ } else { │ 00:01:56 v #3265 > > │ Spiral_builder::method1(v18) │ 00:01:56 v #3266 > > │ }; │ 00:01:56 v #3267 > > │ let v23: string = sprintf!( │ 00:01:56 v #3268 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:01:56 v #3269 > > │ string("__assert_eq"), │ 00:01:56 v #3270 > > │ v14, │ 00:01:56 v #3271 > > │ string("1\n2\n3") │ 00:01:56 v #3272 > > │ ); │ 00:01:56 v #3273 > > │ let v28: () = { │ 00:01:56 v #3274 > > │ Spiral_builder::closure0(v23.clone(), ()); │ 00:01:56 v #3275 > > │ () │ 00:01:56 v #3276 > > │ }; │ 00:01:56 v #3277 > > │ if (v20) == false { │ 00:01:56 v #3278 > > │ panic!("{}", v23,); │ 00:01:56 v #3279 > > │ } │ 00:01:56 v #3280 > > │ } │ 00:01:56 v #3281 > > │ // on_startup!(Spiral_builder::method0()); │ 00:01:56 v #3282 > > │ } │ 00:01:56 v #3283 > > │ } │ 00:01:56 v #3284 > > │ pub use module_225b18d2::*; │ 00:01:56 v #3285 > > │ │ 00:01:56 v #3286 > > │ pub fn main() -> Result<(), String> { │ 00:01:56 v #3287 > > │ Ok(Spiral_builder::method0()) │ 00:01:56 v #3288 > > │ } │ 00:01:56 v #3289 > > │ │ 00:01:56 v #3290 > > │ .ts: │ 00:01:56 v #3291 > > │ import { interpolate, toText, concat } from │ 00:01:56 v #3292 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:01:56 v #3293 > > │ │ 00:01:56 v #3294 > > │ export function method1(v0: boolean): boolean { │ 00:01:56 v #3295 > > │ return v0; │ 00:01:56 v #3296 > > │ } │ 00:01:56 v #3297 > > │ │ 00:01:56 v #3298 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:01:56 v #3299 > > │ console.log(v0); │ 00:01:56 v #3300 > > │ } │ 00:01:56 v #3301 > > │ │ 00:01:56 v #3302 > > │ export function method0(): void { │ 00:01:56 v #3303 > > │ const v14: string = concat("1", "\n", ...concat("2", "\n", │ 00:01:56 v #3304 > > │ ...concat("3", "", ...""))); │ 00:01:56 v #3305 > > │ const v18: boolean = v14 === "1\n2\n3"; │ 00:01:56 v #3306 > > │ const v20: boolean = v18 ? true : method1(v18); │ 00:01:56 v #3307 > > │ const v23: string = toText(interpolate("%P() / actual: %A%P() / │ 00:01:56 v #3308 > > │ expected: %A%P()", ["__assert_eq", v14, "1\n2\n3"])); │ 00:01:56 v #3309 > > │ let v28: any; │ 00:01:56 v #3310 > > │ closure0(v23, undefined); │ 00:01:56 v #3311 > > │ v28 = undefined; │ 00:01:56 v #3312 > > │ if (v20 === false) { │ 00:01:56 v #3313 > > │ throw new Error(v23); │ 00:01:56 v #3314 > > │ } │ 00:01:56 v #3315 > > │ } │ 00:01:56 v #3316 > > │ │ 00:01:56 v #3317 > > │ method0(); │ 00:01:56 v #3318 > > │ │ 00:01:56 v #3319 > > │ │ 00:01:56 v #3320 > > │ │ 00:01:56 v #3321 > > │ // spiral_builder.process_typescript │ 00:01:56 v #3322 > > │ │ 00:01:56 v #3323 > > │ .py: │ 00:01:56 v #3324 > > │ from fable_modules.fable_library.string_ import (concat, to_text, │ 00:01:56 v #3325 > > │ interpolate) │ 00:01:56 v #3326 > > │ │ 00:01:56 v #3327 > > │ def method1(v0: bool) -> bool: │ 00:01:56 v #3328 > > │ return v0 │ 00:01:56 v #3329 > > │ │ 00:01:56 v #3330 > > │ │ 00:01:56 v #3331 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:01:56 v #3332 > > │ print(v0) │ 00:01:56 v #3333 > > │ │ 00:01:56 v #3334 > > │ │ 00:01:56 v #3335 > > │ def method0(__unit: None=None) -> None: │ 00:01:56 v #3336 > > │ v14: str = concat("1", "\n", *concat("2", "\n", *concat("3", "", *""))) │ 00:01:56 v #3337 > > │ v18: bool = v14 == "1\n2\n3" │ 00:01:56 v #3338 > > │ v20: bool = True if v18 else method1(v18) │ 00:01:56 v #3339 > > │ v23: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:01:56 v #3340 > > │ %A%P()", ["__assert_eq", v14, "1\n2\n3"])) │ 00:01:56 v #3341 > > │ v28: None │ 00:01:56 v #3342 > > │ closure0(v23, None) │ 00:01:56 v #3343 > > │ v28 = None │ 00:01:56 v #3344 > > │ if v20 == False: │ 00:01:56 v #3345 > > │ raise Exception(v23) │ 00:01:56 v #3346 > > │ │ 00:01:56 v #3347 > > │ │ 00:01:56 v #3348 > > │ │ 00:01:56 v #3349 > > │ method0() │ 00:01:56 v #3350 > > │ │ 00:01:56 v #3351 > > │ │ 00:01:56 v #3352 > > │ │ 00:01:56 v #3353 > > │ # spiral_builder.process_python │ 00:01:56 v #3354 > > │ │ 00:01:56 v #3355 > > │ .py (Cuda): │ 00:01:56 v #3356 > > │ kernel = r""" │ 00:01:56 v #3357 > > │ """ │ 00:01:56 v #3358 > > │ class static_array(): │ 00:01:56 v #3359 > > │ def __init__(self, length): │ 00:01:56 v #3360 > > │ self.ptr = [] │ 00:01:56 v #3361 > > │ for _ in range(length): │ 00:01:56 v #3362 > > │ self.ptr.append(None) │ 00:01:56 v #3363 > > │ │ 00:01:56 v #3364 > > │ def __getitem__(self, index): │ 00:01:56 v #3365 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:01:56 v #3366 > > │ range." │ 00:01:56 v #3367 > > │ return self.ptr[index] │ 00:01:56 v #3368 > > │ │ 00:01:56 v #3369 > > │ def __setitem__(self, index, value): │ 00:01:56 v #3370 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:01:56 v #3371 > > │ range." │ 00:01:56 v #3372 > > │ self.ptr[index] = value │ 00:01:56 v #3373 > > │ │ 00:01:56 v #3374 > > │ class static_array_list(static_array): │ 00:01:56 v #3375 > > │ def __init__(self, length): │ 00:01:56 v #3376 > > │ super().__init__(length) │ 00:01:56 v #3377 > > │ self.length = 0 │ 00:01:56 v #3378 > > │ │ 00:01:56 v #3379 > > │ def __getitem__(self, index): │ 00:01:56 v #3380 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:01:56 v #3381 > > │ range." │ 00:01:56 v #3382 > > │ return self.ptr[index] │ 00:01:56 v #3383 > > │ │ 00:01:56 v #3384 > > │ def __setitem__(self, index, value): │ 00:01:56 v #3385 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:01:56 v #3386 > > │ range." │ 00:01:56 v #3387 > > │ self.ptr[index] = value │ 00:01:56 v #3388 > > │ │ 00:01:56 v #3389 > > │ def push(self,value): │ 00:01:56 v #3390 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:01:56 v #3391 > > │ to be less than the maximum length of the array." │ 00:01:56 v #3392 > > │ self.ptr[self.length] = value │ 00:01:56 v #3393 > > │ self.length += 1 │ 00:01:56 v #3394 > > │ │ 00:01:56 v #3395 > > │ def pop(self): │ 00:01:56 v #3396 > > │ assert (0 < self.length), "The length before popping has to be │ 00:01:56 v #3397 > > │ greater than 0." │ 00:01:56 v #3398 > > │ self.length -= 1 │ 00:01:56 v #3399 > > │ return self.ptr[self.length] │ 00:01:56 v #3400 > > │ │ 00:01:56 v #3401 > > │ def unsafe_set_length(self,i): │ 00:01:56 v #3402 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:01:56 v #3403 > > │ self.length = i │ 00:01:56 v #3404 > > │ │ 00:01:56 v #3405 > > │ class dynamic_array(static_array): │ 00:01:56 v #3406 > > │ pass │ 00:01:56 v #3407 > > │ │ 00:01:56 v #3408 > > │ class dynamic_array_list(static_array_list): │ 00:01:56 v #3409 > > │ def length_(self): return self.length │ 00:01:56 v #3410 > > │ │ 00:01:56 v #3411 > > │ import cupy as cp │ 00:01:56 v #3412 > > │ import numpy as np │ 00:01:56 v #3413 > > │ from dataclasses import dataclass │ 00:01:56 v #3414 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:01:56 v #3415 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ 00:01:56 v #3416 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ 00:01:56 v #3417 > > │ cuda = False │ 00:01:56 v #3418 > > │ │ 00:01:56 v #3419 > > │ def method1(v0 : bool) -> bool: │ 00:01:56 v #3420 > > │ return v0 │ 00:01:56 v #3421 > > │ def method0() -> None: │ 00:01:56 v #3422 > > │ v4 = "3" │ 00:01:56 v #3423 > > │ v5 = "" │ 00:01:56 v #3424 > > │ v6 = f"{v4}{v5}{v5}" │ 00:01:56 v #3425 > > │ del v4, v5 │ 00:01:56 v #3426 > > │ v9 = "\n" │ 00:01:56 v #3427 > > │ v12 = "2" │ 00:01:56 v #3428 > > │ v13 = f"{v12}{v9}{v6}" │ 00:01:56 v #3429 > > │ del v6, v12 │ 00:01:56 v #3430 > > │ v18 = "1" │ 00:01:56 v #3431 > > │ v19 = f"{v18}{v9}{v13}" │ 00:01:56 v #3432 > > │ del v9, v13, v18 │ 00:01:56 v #3433 > > │ v22 = v19 == "1\n2\n3" │ 00:01:56 v #3434 > > │ if v22: │ 00:01:56 v #3435 > > │ v24 = True │ 00:01:56 v #3436 > > │ else: │ 00:01:56 v #3437 > > │ v24 = method1(v22) │ 00:01:56 v #3438 > > │ del v22 │ 00:01:56 v #3439 > > │ v28 = "__assert_eq" │ 00:01:56 v #3440 > > │ v29 = "1\n2\n3" │ 00:01:56 v #3441 > > │ v30 = f"{v28} / actual: {v19} / expected: {v29}" │ 00:01:56 v #3442 > > │ del v19, v28, v29 │ 00:01:56 v #3443 > > │ print(v30) │ 00:01:56 v #3444 > > │ v36 = v24 == False │ 00:01:56 v #3445 > > │ del v24 │ 00:01:56 v #3446 > > │ if v36: │ 00:01:56 v #3447 > > │ del v36 │ 00:01:56 v #3448 > > │ raise Exception(v30) │ 00:01:56 v #3449 > > │ else: │ 00:01:56 v #3450 > > │ del v30, v36 │ 00:01:56 v #3451 > > │ return │ 00:01:56 v #3452 > > │ def main_body(): │ 00:01:56 v #3453 > > │ return method0() │ 00:01:56 v #3454 > > │ │ 00:01:56 v #3455 > > │ def main(): │ 00:01:56 v #3456 > > │ r = main_body() │ 00:01:56 v #3457 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ 00:01:56 v #3458 > > │ so the `__trap()` calls on the kernel aren't missed. │ 00:01:56 v #3459 > > │ return r │ 00:01:56 v #3460 > > │ │ 00:01:56 v #3461 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:01:56 v #3462 > > │ print(result) │ 00:01:56 v #3463 > > │ │ 00:01:56 v #3464 > > │ .fsx output: │ 00:01:56 v #3465 > > │ __assert_eq / actual: "1 │ 00:01:56 v #3466 > > │ 2 │ 00:01:56 v #3467 > > │ 3" / expected: "1 │ 00:01:56 v #3468 > > │ 2 │ 00:01:56 v #3469 > > │ 3" │ 00:01:56 v #3470 > > │ │ 00:01:56 v #3471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:56 v #3472 > > 00:01:56 v #3473 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:56 v #3474 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:56 v #3475 > > │ ### ellipsis │ 00:01:56 v #3476 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:56 v #3477 > > 00:01:56 v #3478 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:56 v #3479 > > inl ellipsis (max : i32) (s : string) = 00:01:56 v #3480 > > if sm.length s <= max 00:01:56 v #3481 > > then s 00:01:56 v #3482 > > else s |> slice 0 (max - 1) |> fun x => $'!x + "..."' 00:01:56 v #3483 > > 00:01:56 v #3484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:56 v #3485 > > //// test 00:01:56 v #3486 > > ///! fsharp 00:01:56 v #3487 > > ///! cuda 00:01:56 v #3488 > > ///! rust 00:01:56 v #3489 > > ///! typescript 00:01:56 v #3490 > > ///! python 00:01:56 v #3491 > > 00:01:56 v #3492 > > "12345" 00:01:56 v #3493 > > |> ellipsis 2 00:01:56 v #3494 > > |> _assert_eq "12..." 00:01:56 v #3495 > > 00:01:56 v #3496 > > "12345" 00:01:56 v #3497 > > |> ellipsis 4 00:01:56 v #3498 > > |> _assert_eq "1234..." 00:02:00 v #3499 > > 00:02:00 v #3500 > > ╭─[ 3.41s - return value ]─────────────────────────────────────────────────────╮ 00:02:00 v #3501 > > │ │ 00:02:00 v #3502 > > │ .py output (Cuda): │ 00:02:00 v #3503 > > │ __assert_eq / actual: 12... / expected: 12... │ 00:02:00 v #3504 > > │ __assert_eq / actual: 1234... / expected: 1234... │ 00:02:00 v #3505 > > │ │ 00:02:00 v #3506 > > │ │ 00:02:00 v #3507 > > │ .rs output: │ 00:02:00 v #3508 > > │ __assert_eq / actual: "12..." / expected: "12..." │ 00:02:00 v #3509 > > │ __assert_eq / actual: "1234..." / expected: "1234..." │ 00:02:00 v #3510 > > │ │ 00:02:00 v #3511 > > │ │ 00:02:00 v #3512 > > │ .ts output: │ 00:02:00 v #3513 > > │ __assert_eq / actual: 12... / expected: 12... │ 00:02:00 v #3514 > > │ __assert_eq / actual: 1234... / expected: 1234... │ 00:02:00 v #3515 > > │ │ 00:02:00 v #3516 > > │ │ 00:02:00 v #3517 > > │ .py output: │ 00:02:00 v #3518 > > │ __assert_eq / actual: 12... / expected: 12... │ 00:02:00 v #3519 > > │ __assert_eq / actual: 1234... / expected: 1234... │ 00:02:00 v #3520 > > │ │ 00:02:00 v #3521 > > │ │ 00:02:00 v #3522 > > │ │ 00:02:00 v #3523 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3524 > > 00:02:00 v #3525 > > ╭─[ 3.41s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:00 v #3526 > > │ .fsx output: │ 00:02:00 v #3527 > > │ __assert_eq / actual: "12..." / expected: "12..." │ 00:02:00 v #3528 > > │ __assert_eq / actual: "1234..." / expected: "1234..." │ 00:02:00 v #3529 > > │ │ 00:02:00 v #3530 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3531 > > 00:02:00 v #3532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:00 v #3533 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:00 v #3534 > > │ ## fsharp │ 00:02:00 v #3535 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3536 > > 00:02:00 v #3537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:00 v #3538 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:00 v #3539 > > │ ### last_index_of │ 00:02:00 v #3540 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3541 > > 00:02:00 v #3542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:00 v #3543 > > inl last_index_of (search : string) (s : string) : i32 = 00:02:00 v #3544 > > $'!s.LastIndexOf !search ' 00:02:00 v #3545 > > 00:02:00 v #3546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:00 v #3547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:00 v #3548 > > │ ### index_of │ 00:02:00 v #3549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3550 > > 00:02:00 v #3551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:00 v #3552 > > inl index_of (search : string) (s : string) : i32 = 00:02:00 v #3553 > > backend_switch { 00:02:00 v #3554 > > Fsharp = fun () => $'!s.IndexOf !search ' : i32 00:02:00 v #3555 > > Python = fun () => $'!s.find(!search)' : i32 00:02:00 v #3556 > > } 00:02:00 v #3557 > > 00:02:00 v #3558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:00 v #3559 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:00 v #3560 > > │ ### replicate │ 00:02:00 v #3561 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:00 v #3562 > > 00:02:00 v #3563 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:00 v #3564 > > inl replicate (n : i32) (s : string) : string = 00:02:00 v #3565 > > backend_switch { 00:02:00 v #3566 > > Fsharp = fun () => s |> $'String.replicate' n : string 00:02:00 v #3567 > > Python = fun () => $'!s * !n ' : string 00:02:00 v #3568 > > } 00:02:01 v #3569 > > 00:02:01 v #3570 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:01 v #3571 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:01 v #3572 > > │ ### obj_to_string │ 00:02:01 v #3573 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 v #3574 > > 00:02:01 v #3575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:01 v #3576 > > inl obj_to_string x : string = 00:02:01 v #3577 > > backend_switch { 00:02:01 v #3578 > > Fsharp = fun () => x |> $'_.ToString()' : string 00:02:01 v #3579 > > Python = fun () => $'str(!x)' : string 00:02:01 v #3580 > > } 00:02:01 v #3581 > > 00:02:01 v #3582 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:01 v #3583 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:01 v #3584 > > │ ### pad_left │ 00:02:01 v #3585 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 v #3586 > > 00:02:01 v #3587 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:01 v #3588 > > inl pad_left (total_width : i32) (padding_char : char) (s : string) : string = 00:02:01 v #3589 > > backend_switch { 00:02:01 v #3590 > > Fsharp = fun () => $'!s.PadLeft (!total_width, !padding_char)' : string 00:02:01 v #3591 > > Python = fun () => 00:02:01 v #3592 > > inl padding = padding_char |> obj_to_string |> replicate 00:02:01 v #3593 > > (total_width - length s) 00:02:01 v #3594 > > padding +. s 00:02:01 v #3595 > > } 00:02:02 v #3596 > > 00:02:02 v #3597 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 v #3598 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:02 v #3599 > > │ ### pad_right │ 00:02:02 v #3600 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:02 v #3601 > > 00:02:02 v #3602 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 v #3603 > > inl pad_right (total_width : i32) (padding_char : char) (s : string) : string = 00:02:02 v #3604 > > backend_switch { 00:02:02 v #3605 > > Fsharp = fun () => $'!s.PadRight (!total_width, !padding_char)' : string 00:02:02 v #3606 > > Python = fun () => 00:02:02 v #3607 > > inl padding = padding_char |> obj_to_string |> replicate 00:02:02 v #3608 > > (total_width - length s) 00:02:02 v #3609 > > s +. padding 00:02:02 v #3610 > > } 00:02:02 v #3611 > > 00:02:02 v #3612 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 v #3613 > > //// test 00:02:02 v #3614 > > ///! fsharp 00:02:02 v #3615 > > ///! cuda 00:02:02 v #3616 > > ///! rust 00:02:02 v #3617 > > ///! typescript 00:02:02 v #3618 > > ///! python 00:02:02 v #3619 > > 00:02:02 v #3620 > > "123" 00:02:02 v #3621 > > |> pad_right 6 ' ' 00:02:02 v #3622 > > |> _assert_eq "123 " 00:02:06 v #3623 > > 00:02:06 v #3624 > > ╭─[ 3.50s - return value ]─────────────────────────────────────────────────────╮ 00:02:06 v #3625 > > │ .py output (Cuda): │ 00:02:06 v #3626 > > │ __assert_eq / actual: 123 / expected: 123 │ 00:02:06 v #3627 > > │ │ 00:02:06 v #3628 > > │ .rs output: │ 00:02:06 v #3629 > > │ __assert_eq / actual: "123 " / expected: "123 " │ 00:02:06 v #3630 > > │ │ 00:02:06 v #3631 > > │ .ts output: │ 00:02:06 v #3632 > > │ __assert_eq / actual: 123 / expected: 123 │ 00:02:06 v #3633 > > │ │ 00:02:06 v #3634 > > │ .py output: │ 00:02:06 v #3635 > > │ __assert_eq / actual: 123 / expected: 123 │ 00:02:06 v #3636 > > │ │ 00:02:06 v #3637 > > │ │ 00:02:06 v #3638 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:06 v #3639 > > 00:02:06 v #3640 > > ╭─[ 3.50s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:06 v #3641 > > │ .fsx output: │ 00:02:06 v #3642 > > │ __assert_eq / actual: "123 " / expected: "123 " │ 00:02:06 v #3643 > > │ │ 00:02:06 v #3644 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:06 v #3645 > > 00:02:06 v #3646 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:06 v #3647 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:06 v #3648 > > │ ### convert_to_utf32 │ 00:02:06 v #3649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:06 v #3650 > > 00:02:06 v #3651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:06 v #3652 > > inl convert_to_utf32 (c : char) : int = 00:02:06 v #3653 > > backend_switch { 00:02:06 v #3654 > > Fsharp = fun () => 00:02:06 v #3655 > > run_target_args' c function 00:02:06 v #3656 > > | Fsharp (Native) => fun c => $'System.Char.ConvertToUtf32 (string 00:02:06 v #3657 > > !c, 0)' : int 00:02:06 v #3658 > > | _ => fun c => c |> i32 00:02:06 v #3659 > > Python = fun () => $'ord(!c)' : int 00:02:06 v #3660 > > } 00:02:06 v #3661 > > 00:02:06 v #3662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:06 v #3663 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:06 v #3664 > > │ ### ends_with │ 00:02:06 v #3665 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:06 v #3666 > > 00:02:06 v #3667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:06 v #3668 > > inl ends_with (value : string) (s : string) : bool = 00:02:06 v #3669 > > backend_switch { 00:02:06 v #3670 > > Fsharp = fun () => $'!s.EndsWith (!value, false, null)' : bool 00:02:06 v #3671 > > Python = fun () => $'!s.endswith(!value)' : bool 00:02:06 v #3672 > > } 00:02:06 v #3673 > > 00:02:06 v #3674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:06 v #3675 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:06 v #3676 > > │ ### starts_with │ 00:02:06 v #3677 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:06 v #3678 > > 00:02:06 v #3679 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:06 v #3680 > > inl starts_with (value : string) (s : string) : bool = 00:02:06 v #3681 > > backend_switch { 00:02:06 v #3682 > > Fsharp = fun () => $'!s.StartsWith (!value, false, null)' : bool 00:02:06 v #3683 > > Python = fun () => $'!s.startswith(!value)' : bool 00:02:06 v #3684 > > } 00:02:07 v #3685 > > 00:02:07 v #3686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:07 v #3687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:07 v #3688 > > │ ### is_white_space │ 00:02:07 v #3689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:07 v #3690 > > 00:02:07 v #3691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:07 v #3692 > > inl is_white_space (c : char) : bool = 00:02:07 v #3693 > > c |> $'System.Char.IsWhiteSpace' 00:02:07 v #3694 > > 00:02:07 v #3695 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:07 v #3696 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:07 v #3697 > > │ ### substring │ 00:02:07 v #3698 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:07 v #3699 > > 00:02:07 v #3700 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:07 v #3701 > > inl substring (start : i32) (len : i32) (str : string) : string = 00:02:07 v #3702 > > $'!str.Substring (!start, !len)' 00:02:08 v #3703 > > 00:02:08 v #3704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:08 v #3705 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:08 v #3706 > > │ ### to_lower │ 00:02:08 v #3707 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:08 v #3708 > > 00:02:08 v #3709 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:08 v #3710 > > inl to_lower (input : string) : string = 00:02:08 v #3711 > > backend_switch { 00:02:08 v #3712 > > Fsharp = fun () => $'!input.ToLower' () : string 00:02:08 v #3713 > > Python = fun () => $'!input.lower()' : string 00:02:08 v #3714 > > } 00:02:08 v #3715 > > 00:02:08 v #3716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:08 v #3717 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:08 v #3718 > > │ ### to_upper │ 00:02:08 v #3719 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:08 v #3720 > > 00:02:08 v #3721 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:08 v #3722 > > inl to_upper (input : string) : string = 00:02:08 v #3723 > > $'!input.ToUpper' () 00:02:09 v #3724 > > 00:02:09 v #3725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:09 v #3726 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:09 v #3727 > > │ ### char_to_upper │ 00:02:09 v #3728 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:09 v #3729 > > 00:02:09 v #3730 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:09 v #3731 > > inl char_to_upper (input : char) : char = 00:02:09 v #3732 > > backend_switch { 00:02:09 v #3733 > > Fsharp = fun () => $'System.Char.ToUpper !input ' : char 00:02:09 v #3734 > > Python = fun () => $'!input.upper()' : char 00:02:09 v #3735 > > } 00:02:09 v #3736 > > 00:02:09 v #3737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:09 v #3738 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:09 v #3739 > > │ ### string_builder │ 00:02:09 v #3740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:09 v #3741 > > 00:02:09 v #3742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:09 v #3743 > > nominal string_builder_python = 00:02:09 v #3744 > > `( 00:02:09 v #3745 > > global "import io" 00:02:09 v #3746 > > $'' : $'io.StringIO' 00:02:09 v #3747 > > ) 00:02:09 v #3748 > > type string_builder_switch = 00:02:09 v #3749 > > { 00:02:09 v #3750 > > Fsharp : $'System.Text.StringBuilder' 00:02:09 v #3751 > > Python : string_builder_python 00:02:09 v #3752 > > } 00:02:09 v #3753 > > nominal string_builder = $'backend_switch `(string_builder_switch)' 00:02:09 v #3754 > > 00:02:09 v #3755 > > inl string_builder (initial : string) : string_builder = 00:02:09 v #3756 > > inl initial = 00:02:09 v #3757 > > if initial = "" 00:02:09 v #3758 > > then join initial 00:02:09 v #3759 > > else initial 00:02:09 v #3760 > > 00:02:09 v #3761 > > backend_switch { 00:02:09 v #3762 > > Fsharp = fun () => initial |> $'`string_builder ' : string_builder 00:02:09 v #3763 > > Python = fun () => 00:02:09 v #3764 > > global "import io" 00:02:09 v #3765 > > global "class CustomStringIO(io.StringIO):\n def __init__(self, 00:02:09 v #3766 > > init=''):\n super().__init__()\n if init != '': self.write(init)\n 00:02:09 v #3767 > > def __str__(self): return self.getvalue()\n def __repr__(self): return 00:02:09 v #3768 > > self.getvalue()" 00:02:09 v #3769 > > $'CustomStringIO(!initial)' : string_builder 00:02:09 v #3770 > > } 00:02:10 v #3771 > > 00:02:10 v #3772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #3773 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:10 v #3774 > > │ ### builder_append │ 00:02:10 v #3775 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:10 v #3776 > > 00:02:10 v #3777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #3778 > > inl builder_append (item : string) (sb : string_builder) : string_builder = 00:02:10 v #3779 > > backend_switch { 00:02:10 v #3780 > > Fsharp = fun () => 00:02:10 v #3781 > > ($'!sb.Append' item : string_builder) |> ignore 00:02:10 v #3782 > > sb 00:02:10 v #3783 > > Python = fun () => 00:02:10 v #3784 > > ($'!sb.write(!item)' : int) |> ignore 00:02:10 v #3785 > > sb 00:02:10 v #3786 > > } 00:02:10 v #3787 > > 00:02:10 v #3788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #3789 > > //// test 00:02:10 v #3790 > > ///! fsharp 00:02:10 v #3791 > > ///! cuda 00:02:10 v #3792 > > ///! rust 00:02:10 v #3793 > > ///! typescript 00:02:10 v #3794 > > ///! python 00:02:10 v #3795 > > 00:02:10 v #3796 > > "ab" 00:02:10 v #3797 > > |> string_builder 00:02:10 v #3798 > > |> builder_append "cd" 00:02:10 v #3799 > > |> builder_append "ef" 00:02:10 v #3800 > > |> sm'.obj_to_string 00:02:10 v #3801 > > |> _assert_eq "abcdef" 00:02:14 v #3802 > > 00:02:14 v #3803 > > ╭─[ 3.46s - return value ]─────────────────────────────────────────────────────╮ 00:02:14 v #3804 > > │ .py output (Cuda): │ 00:02:14 v #3805 > > │ __assert_eq / actual: abcdef / expected: abcdef │ 00:02:14 v #3806 > > │ │ 00:02:14 v #3807 > > │ .rs output: │ 00:02:14 v #3808 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef" │ 00:02:14 v #3809 > > │ │ 00:02:14 v #3810 > > │ .ts output: │ 00:02:14 v #3811 > > │ __assert_eq / actual: abcdef / expected: abcdef │ 00:02:14 v #3812 > > │ │ 00:02:14 v #3813 > > │ .py output: │ 00:02:14 v #3814 > > │ __assert_eq / actual: abcdef / expected: abcdef │ 00:02:14 v #3815 > > │ │ 00:02:14 v #3816 > > │ │ 00:02:14 v #3817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 v #3818 > > 00:02:14 v #3819 > > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:14 v #3820 > > │ .fsx output: │ 00:02:14 v #3821 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef" │ 00:02:14 v #3822 > > │ │ 00:02:14 v #3823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 v #3824 > > 00:02:14 v #3825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:14 v #3826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:14 v #3827 > > │ ### builder_append_line │ 00:02:14 v #3828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 v #3829 > > 00:02:14 v #3830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:14 v #3831 > > inl builder_append_line (sb : string_builder) : string_builder = 00:02:14 v #3832 > > backend_switch { 00:02:14 v #3833 > > Fsharp = fun () => 00:02:14 v #3834 > > ($'!sb.AppendLine ()' : string_builder) |> ignore 00:02:14 v #3835 > > sb 00:02:14 v #3836 > > Python = fun () => 00:02:14 v #3837 > > sb |> builder_append "\n" 00:02:14 v #3838 > > } 00:02:14 v #3839 > > 00:02:14 v #3840 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:14 v #3841 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:14 v #3842 > > │ ### builder_replace │ 00:02:14 v #3843 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 v #3844 > > 00:02:14 v #3845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:14 v #3846 > > inl builder_replace (old : string) (new : string) (sb : string_builder) : 00:02:14 v #3847 > > string_builder = 00:02:14 v #3848 > > backend_switch { 00:02:14 v #3849 > > Fsharp = fun () => 00:02:14 v #3850 > > ($'!sb.Replace (!old, !new)' : string_builder) |> ignore 00:02:14 v #3851 > > sb 00:02:14 v #3852 > > Python = fun () => 00:02:14 v #3853 > > ($'!sb.getvalue().replace(!old, !new)' : string) |> string_builder 00:02:14 v #3854 > > } 00:02:14 v #3855 > > 00:02:14 v #3856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:14 v #3857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:14 v #3858 > > │ ### builder_insert │ 00:02:14 v #3859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 v #3860 > > 00:02:14 v #3861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:14 v #3862 > > inl builder_insert (i : i32) (s : string) (sb : string_builder) : string_builder 00:02:14 v #3863 > > = 00:02:14 v #3864 > > backend_switch { 00:02:14 v #3865 > > Fsharp = fun () => 00:02:14 v #3866 > > ($'!sb.Insert (!i, !s)' : string_builder) |> ignore 00:02:14 v #3867 > > sb 00:02:14 v #3868 > > Python = fun () => 00:02:14 v #3869 > > inl sb = sb |> obj_to_string 00:02:14 v #3870 > > $'"".join([[!sb[[:!i]], !s, !sb[[!i:]]]])' |> string_builder 00:02:14 v #3871 > > } 00:02:15 v #3872 > > 00:02:15 v #3873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:15 v #3874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:15 v #3875 > > │ ### builder_clear │ 00:02:15 v #3876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:15 v #3877 > > 00:02:15 v #3878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #3879 > > inl builder_clear (sb : string_builder) : string_builder = 00:02:15 v #3880 > > backend_switch { 00:02:15 v #3881 > > Fsharp = fun () => 00:02:15 v #3882 > > ($'!sb.Clear' () : string_builder) |> ignore 00:02:15 v #3883 > > sb 00:02:15 v #3884 > > Python = fun () => 00:02:15 v #3885 > > ($'!sb.truncate(0)' : int) |> ignore 00:02:15 v #3886 > > ($'!sb.seek(0)' : int) |> ignore 00:02:15 v #3887 > > sb 00:02:15 v #3888 > > } 00:02:15 v #3889 > > 00:02:15 v #3890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:15 v #3891 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:15 v #3892 > > │ ### trim │ 00:02:15 v #3893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:15 v #3894 > > 00:02:15 v #3895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #3896 > > inl trim (input : string) : string = 00:02:15 v #3897 > > backend_switch { 00:02:15 v #3898 > > Fsharp = fun () => $'!input.Trim' () : string 00:02:15 v #3899 > > Python = fun () => $'!input.strip()' : string 00:02:15 v #3900 > > } 00:02:16 v #3901 > > 00:02:16 v #3902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:16 v #3903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:16 v #3904 > > │ ### concat │ 00:02:16 v #3905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:16 v #3906 > > 00:02:16 v #3907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:16 v #3908 > > inl concat (a : string) (b : seq.seq' string) : string = 00:02:16 v #3909 > > backend_switch { 00:02:16 v #3910 > > Fsharp = fun () => 00:02:16 v #3911 > > inl a = 00:02:16 v #3912 > > if a = "\n" 00:02:16 v #3913 > > then join a 00:02:16 v #3914 > > else a 00:02:16 v #3915 > > b |> $'String.concat' a : string 00:02:16 v #3916 > > Python = fun () => 00:02:16 v #3917 > > $'!a.join(!b)' : string 00:02:16 v #3918 > > } 00:02:16 v #3919 > > 00:02:16 v #3920 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:16 v #3921 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:16 v #3922 > > │ ### trim_end │ 00:02:16 v #3923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:16 v #3924 > > 00:02:16 v #3925 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:16 v #3926 > > inl trim_end (trim_chars : list char) (input : string) : string = 00:02:16 v #3927 > > inl trim_chars = trim_chars |> listm'.box 00:02:16 v #3928 > > backend_switch { 00:02:16 v #3929 > > Fsharp = fun () => 00:02:16 v #3930 > > inl trim_chars = trim_chars |> listm'.to_array' 00:02:16 v #3931 > > $'!input.TrimEnd !trim_chars ' : string 00:02:16 v #3932 > > Python = fun () => 00:02:16 v #3933 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:02:16 v #3934 > > seq.of_list' |> concat "" 00:02:16 v #3935 > > $'!input.rstrip(!trim_chars)' : string 00:02:16 v #3936 > > } 00:02:17 v #3937 > > 00:02:17 v #3938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 v #3939 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:17 v #3940 > > │ ### trim_start │ 00:02:17 v #3941 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:17 v #3942 > > 00:02:17 v #3943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #3944 > > inl trim_start (trim_chars : list char) (input : string) : string = 00:02:17 v #3945 > > inl trim_chars = trim_chars |> listm'.box 00:02:17 v #3946 > > backend_switch { 00:02:17 v #3947 > > Fsharp = fun () => 00:02:17 v #3948 > > inl trim_chars = trim_chars |> listm'.to_array' 00:02:17 v #3949 > > $'!input.TrimStart !trim_chars ' : string 00:02:17 v #3950 > > Python = fun () => 00:02:17 v #3951 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:02:17 v #3952 > > seq.of_list' |> concat "" 00:02:17 v #3953 > > $'!input.lstrip(!trim_chars)' : string 00:02:17 v #3954 > > } 00:02:17 v #3955 > > 00:02:17 v #3956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 v #3957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:17 v #3958 > > │ ### length' │ 00:02:17 v #3959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:17 v #3960 > > 00:02:17 v #3961 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #3962 > > inl length' forall dim. (input : string) : dim = 00:02:17 v #3963 > > backend_switch { 00:02:17 v #3964 > > Fsharp = fun () => input |> $'String.length' : dim 00:02:17 v #3965 > > Python = fun () => $'len(!input)' : dim 00:02:17 v #3966 > > } 00:02:18 v #3967 > > 00:02:18 v #3968 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #3969 > > //// test 00:02:18 v #3970 > > ///! fsharp 00:02:18 v #3971 > > ///! cuda 00:02:18 v #3972 > > 00:02:18 v #3973 > > "abc" 00:02:18 v #3974 > > |> length' 00:02:18 v #3975 > > |> _assert_eq 3i32 00:02:19 v #3976 > > 00:02:19 v #3977 > > ╭─[ 1.11s - return value ]─────────────────────────────────────────────────────╮ 00:02:19 v #3978 > > │ .py output (Cuda): │ 00:02:19 v #3979 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:02:19 v #3980 > > │ │ 00:02:19 v #3981 > > │ │ 00:02:19 v #3982 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:19 v #3983 > > 00:02:19 v #3984 > > ╭─[ 1.11s - stdout ]───────────────────────────────────────────────────────────╮ 00:02:19 v #3985 > > │ .fsx output: │ 00:02:19 v #3986 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:02:19 v #3987 > > │ │ 00:02:19 v #3988 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:19 v #3989 > > 00:02:19 v #3990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:19 v #3991 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:19 v #3992 > > │ ### to_string any │ 00:02:19 v #3993 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:19 v #3994 > > 00:02:19 v #3995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:19 v #3996 > > instance to_string any = 00:02:19 v #3997 > > obj_to_string 00:02:19 v #3998 > > 00:02:19 v #3999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:19 v #4000 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:19 v #4001 > > │ ### (~$) │ 00:02:19 v #4002 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:19 v #4003 > > 00:02:19 v #4004 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:19 v #4005 > > inl (~$) s = 00:02:19 v #4006 > > s |> obj_to_string 00:02:20 v #4007 > > 00:02:20 v #4008 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 v #4009 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 v #4010 > > │ ### replace │ 00:02:20 v #4011 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 v #4012 > > 00:02:20 v #4013 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 v #4014 > > inl replace (old_value : string) (new_value : string) (s : string) : string = 00:02:20 v #4015 > > $'!s.Replace (!old_value, !new_value)' 00:02:20 v #4016 > > 00:02:20 v #4017 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 v #4018 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 v #4019 > > │ ### split │ 00:02:20 v #4020 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 v #4021 > > 00:02:20 v #4022 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 v #4023 > > inl split (separator : string) (str : string) : array_base string = 00:02:20 v #4024 > > backend_switch { 00:02:20 v #4025 > > Fsharp = fun () => $'!str.Split !separator ' : array_base string 00:02:20 v #4026 > > Python = fun () => $'!str.split(!separator)' : array_base string 00:02:20 v #4027 > > } 00:02:20 v #4028 > > 00:02:20 v #4029 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 v #4030 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 v #4031 > > │ ### split_string │ 00:02:20 v #4032 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 v #4033 > > 00:02:20 v #4034 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 v #4035 > > inl split_string (separator : array_base string) (str : string) : array_base 00:02:20 v #4036 > > string = 00:02:20 v #4037 > > run_target_args (fun () => str, separator) function 00:02:20 v #4038 > > | Fsharp (Native) => fun str, separator => $'!str.Split (!separator, 00:02:20 v #4039 > > System.StringSplitOptions.None)' 00:02:20 v #4040 > > | _ => fun str, separator => str |> split ((a separator : _ int _) |> 00:02:20 v #4041 > > seq.of_array |> concat (join "")) 00:02:21 v #4042 > > 00:02:21 v #4043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:21 v #4044 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:21 v #4045 > > │ ### join' │ 00:02:21 v #4046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:21 v #4047 > > 00:02:21 v #4048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:21 v #4049 > > inl join' (concat : string) (s : a int string) : string = 00:02:21 v #4050 > > $'System.String.Join (!concat, !s)' 00:02:21 v #4051 > > 00:02:21 v #4052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:21 v #4053 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:21 v #4054 > > │ ### encoding │ 00:02:21 v #4055 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:21 v #4056 > > 00:02:21 v #4057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:21 v #4058 > > nominal encoding = $'System.Text.Encoding' 00:02:22 v #4059 > > 00:02:22 v #4060 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:22 v #4061 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:22 v #4062 > > │ ### encoding_utf8 │ 00:02:22 v #4063 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:22 v #4064 > > 00:02:22 v #4065 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:22 v #4066 > > inl encoding_utf8 () : encoding = 00:02:22 v #4067 > > $'`encoding.UTF8' 00:02:22 v #4068 > > 00:02:22 v #4069 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:22 v #4070 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:22 v #4071 > > │ ### utf8_get_bytes │ 00:02:22 v #4072 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:22 v #4073 > > 00:02:22 v #4074 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:22 v #4075 > > inl utf8_get_bytes (s : string) : a i32 u8 = 00:02:22 v #4076 > > s |> (encoding_utf8 () |> $'_.GetBytes') 00:02:23 v #4077 > > 00:02:23 v #4078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 v #4079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 v #4080 > > │ ### byte_to_string │ 00:02:23 v #4081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:23 v #4082 > > 00:02:23 v #4083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:23 v #4084 > > inl byte_to_string (format : string) (x : u8) : string = 00:02:23 v #4085 > > $'!x.ToString' format 00:02:23 v #4086 > > 00:02:23 v #4087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 v #4088 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 v #4089 > > │ ## rust │ 00:02:23 v #4090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:23 v #4091 > > 00:02:23 v #4092 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 v #4093 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 v #4094 > > │ ### str │ 00:02:23 v #4095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:23 v #4096 > > 00:02:23 v #4097 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:23 v #4098 > > nominal str = 00:02:23 v #4099 > > `( 00:02:23 v #4100 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:23 v #4101 > > Fable.Core.Emit(\"str\")>]]\ntype Str = class end\n#else\ntype Str = 00:02:23 v #4102 > > string\n#endif\n" 00:02:23 v #4103 > > $'' : $'Str' 00:02:23 v #4104 > > ) 00:02:24 v #4105 > > 00:02:24 v #4106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:24 v #4107 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:24 v #4108 > > │ ### chars │ 00:02:24 v #4109 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:24 v #4110 > > 00:02:24 v #4111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:24 v #4112 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) = 00:02:24 v #4113 > > !\\(x, $'$"$0.chars()"') 00:02:24 v #4114 > > 00:02:24 v #4115 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:24 v #4116 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:24 v #4117 > > │ ### char_is_alphanumeric │ 00:02:24 v #4118 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:24 v #4119 > > 00:02:24 v #4120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:24 v #4121 > > inl char_is_alphanumeric (x : char) : bool = 00:02:24 v #4122 > > !\\(x, $'$"$0.is_alphanumeric()"') 00:02:25 v #4123 > > 00:02:25 v #4124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:25 v #4125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:25 v #4126 > > │ ### byte_slice │ 00:02:25 v #4127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:25 v #4128 > > 00:02:25 v #4129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:25 v #4130 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) = 00:02:25 v #4131 > > !\($'"b\\\"" + !s + "\\\""') 00:02:25 v #4132 > > 00:02:25 v #4133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:25 v #4134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:25 v #4135 > > │ ### display │ 00:02:25 v #4136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:25 v #4137 > > 00:02:25 v #4138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:25 v #4139 > > nominal display t = 00:02:25 v #4140 > > `( 00:02:25 v #4141 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:25 v #4142 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T> 00:02:25 v #4143 > > = class end" 00:02:25 v #4144 > > $'' : $'std_fmt_Display<`t>' 00:02:25 v #4145 > > ) 00:02:25 v #4146 > > 00:02:25 v #4147 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:25 v #4148 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:25 v #4149 > > │ ### base64_decode_error │ 00:02:25 v #4150 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:25 v #4151 > > 00:02:25 v #4152 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:25 v #4153 > > nominal base64_decode_error = 00:02:25 v #4154 > > `( 00:02:25 v #4155 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:25 v #4156 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError = 00:02:25 v #4157 > > class end" 00:02:25 v #4158 > > $'' : $'base64_DecodeError' 00:02:25 v #4159 > > ) 00:02:26 v #4160 > > 00:02:26 v #4161 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:26 v #4162 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:26 v #4163 > > │ ### borsh_io_error │ 00:02:26 v #4164 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:26 v #4165 > > 00:02:26 v #4166 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:26 v #4167 > > nominal borsh_io_error = 00:02:26 v #4168 > > `( 00:02:26 v #4169 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:26 v #4170 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class 00:02:26 v #4171 > > end" 00:02:26 v #4172 > > $'' : $'borsh_io_Error' 00:02:26 v #4173 > > ) 00:02:26 v #4174 > > 00:02:26 v #4175 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:26 v #4176 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:26 v #4177 > > │ ### utf8_error │ 00:02:26 v #4178 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:26 v #4179 > > 00:02:26 v #4180 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:26 v #4181 > > nominal utf8_error = 00:02:26 v #4182 > > `( 00:02:26 v #4183 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:26 v #4184 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error = 00:02:26 v #4185 > > class end" 00:02:26 v #4186 > > $'' : $'std_str_Utf8Error' 00:02:26 v #4187 > > ) 00:02:27 v #4188 > > 00:02:27 v #4189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:27 v #4190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:27 v #4191 > > │ ### from_utf8_error │ 00:02:27 v #4192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:27 v #4193 > > 00:02:27 v #4194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:27 v #4195 > > nominal from_utf8_error = 00:02:27 v #4196 > > `( 00:02:27 v #4197 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:27 v #4198 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype 00:02:27 v #4199 > > std_string_FromUtf8Error = class end" 00:02:27 v #4200 > > $'' : $'std_string_FromUtf8Error' 00:02:27 v #4201 > > ) 00:02:27 v #4202 > > 00:02:27 v #4203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:27 v #4204 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:27 v #4205 > > │ ### json_value │ 00:02:27 v #4206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:27 v #4207 > > 00:02:27 v #4208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:27 v #4209 > > nominal json_value = 00:02:27 v #4210 > > `( 00:02:27 v #4211 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:27 v #4212 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class 00:02:27 v #4213 > > end" 00:02:27 v #4214 > > $'' : $'serde_json_Value' 00:02:27 v #4215 > > ) 00:02:28 v #4216 > > 00:02:28 v #4217 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:28 v #4218 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:28 v #4219 > > │ ### json_error │ 00:02:28 v #4220 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:28 v #4221 > > 00:02:28 v #4222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:28 v #4223 > > nominal json_error = 00:02:28 v #4224 > > `( 00:02:28 v #4225 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:28 v #4226 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class 00:02:28 v #4227 > > end" 00:02:28 v #4228 > > $'' : $'serde_json_Error' 00:02:28 v #4229 > > ) 00:02:28 v #4230 > > 00:02:28 v #4231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:28 v #4232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:28 v #4233 > > │ ### serde_wasm_bindgen_error │ 00:02:28 v #4234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:28 v #4235 > > 00:02:28 v #4236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:28 v #4237 > > nominal serde_wasm_bindgen_error = 00:02:28 v #4238 > > `( 00:02:28 v #4239 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:28 v #4240 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype 00:02:28 v #4241 > > serde_wasm_bindgen_Error = class end" 00:02:28 v #4242 > > $'' : $'serde_wasm_bindgen_Error' 00:02:28 v #4243 > > ) 00:02:29 v #4244 > > 00:02:29 v #4245 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:29 v #4246 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:29 v #4247 > > │ ### js_string │ 00:02:29 v #4248 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #4249 > > 00:02:29 v #4250 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:29 v #4251 > > nominal js_string = 00:02:29 v #4252 > > `( 00:02:29 v #4253 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:29 v #4254 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class 00:02:29 v #4255 > > end" 00:02:29 v #4256 > > $'' : $'js_sys_JsString' 00:02:29 v #4257 > > ) 00:02:29 v #4258 > > 00:02:29 v #4259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:29 v #4260 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:29 v #4261 > > │ ### os_str │ 00:02:29 v #4262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #4263 > > 00:02:29 v #4264 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:29 v #4265 > > nominal os_str = 00:02:29 v #4266 > > `( 00:02:29 v #4267 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:29 v #4268 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end" 00:02:29 v #4269 > > $'' : $'std_ffi_OsStr' 00:02:29 v #4270 > > ) 00:02:29 v #4271 > > 00:02:29 v #4272 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:29 v #4273 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:29 v #4274 > > │ ### c_str │ 00:02:29 v #4275 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:29 v #4276 > > 00:02:29 v #4277 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:29 v #4278 > > nominal c_str = 00:02:29 v #4279 > > `( 00:02:29 v #4280 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:29 v #4281 > > Fable.Core.Emit(\"std::ffi::CStr\")>]]\n#endif\ntype std_ffi_CStr = class end" 00:02:29 v #4282 > > $'' : $'std_ffi_CStr' 00:02:29 v #4283 > > ) 00:02:30 v #4284 > > 00:02:30 v #4285 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:30 v #4286 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:30 v #4287 > > │ ### c_string │ 00:02:30 v #4288 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:30 v #4289 > > 00:02:30 v #4290 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:30 v #4291 > > nominal c_string = 00:02:30 v #4292 > > `( 00:02:30 v #4293 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:30 v #4294 > > Fable.Core.Emit(\"std::ffi::CString\")>]]\n#endif\ntype std_ffi_CString = class 00:02:30 v #4295 > > end" 00:02:30 v #4296 > > $'' : $'std_ffi_CString' 00:02:30 v #4297 > > ) 00:02:30 v #4298 > > 00:02:30 v #4299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:30 v #4300 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:30 v #4301 > > │ ### os_string │ 00:02:30 v #4302 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:30 v #4303 > > 00:02:30 v #4304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:30 v #4305 > > nominal os_string = 00:02:30 v #4306 > > `( 00:02:30 v #4307 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:30 v #4308 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString = 00:02:30 v #4309 > > class end" 00:02:30 v #4310 > > $'' : $'std_ffi_OsString' 00:02:30 v #4311 > > ) 00:02:31 v #4312 > > 00:02:31 v #4313 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:31 v #4314 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:31 v #4315 > > │ ### raw_string_literal │ 00:02:31 v #4316 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:31 v #4317 > > 00:02:31 v #4318 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:31 v #4319 > > inl raw_string_literal (s : string) : rust.ref str = 00:02:31 v #4320 > > !\($'"r#\\"" + !s + "\\"#"') 00:02:31 v #4321 > > 00:02:31 v #4322 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:31 v #4323 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:31 v #4324 > > │ ### raw_string_literal_static │ 00:02:31 v #4325 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:31 v #4326 > > 00:02:31 v #4327 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:31 v #4328 > > inl raw_string_literal_static (s : string) : rust.static_ref str = 00:02:31 v #4329 > > !\($'"r#\\"" + !s + "\\"#"') 00:02:32 v #4330 > > 00:02:32 v #4331 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:32 v #4332 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:32 v #4333 > > │ ### (~#) │ 00:02:32 v #4334 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:32 v #4335 > > 00:02:32 v #4336 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:32 v #4337 > > inl (~#) s = 00:02:32 v #4338 > > s |> raw_string_literal 00:02:32 v #4339 > > 00:02:32 v #4340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:32 v #4341 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:32 v #4342 > > │ ### (~##) │ 00:02:32 v #4343 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:32 v #4344 > > 00:02:32 v #4345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:32 v #4346 > > inl (~##) s = 00:02:32 v #4347 > > s |> raw_string_literal_static 00:02:33 v #4348 > > 00:02:33 v #4349 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:33 v #4350 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:33 v #4351 > > │ ### include_str │ 00:02:33 v #4352 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:33 v #4353 > > 00:02:33 v #4354 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:33 v #4355 > > inl include_str (path : string) : rust.ref str = 00:02:33 v #4356 > > !\($'"include_str\!(\\\"" + !path + "\\\")"') 00:02:33 v #4357 > > 00:02:33 v #4358 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:33 v #4359 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:33 v #4360 > > │ ### as_str │ 00:02:33 v #4361 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:33 v #4362 > > 00:02:33 v #4363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:33 v #4364 > > inl as_str (s : string) : rust.ref str = 00:02:33 v #4365 > > // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"') 00:02:33 v #4366 > > run_target_args (fun () => s) function 00:02:33 v #4367 > > | Rust _ => fun s => !\\(s, $'"&*$0"') 00:02:33 v #4368 > > | _ => fun s => s |> unbox 00:02:34 v #4369 > > 00:02:34 v #4370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:34 v #4371 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:34 v #4372 > > │ ### from_iter │ 00:02:34 v #4373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:34 v #4374 > > 00:02:34 v #4375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:34 v #4376 > > inl from_iter forall (t : * -> *). (s : t char) : std_string = 00:02:34 v #4377 > > !\\(s, $'"String::from_iter($0)"') 00:02:34 v #4378 > > 00:02:34 v #4379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:34 v #4380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:34 v #4381 > > │ ### ref_to_std_string │ 00:02:34 v #4382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:34 v #4383 > > 00:02:34 v #4384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:34 v #4385 > > inl ref_to_std_string (str : rust.ref str) : std_string = 00:02:34 v #4386 > > run_target_args (fun () => str) function 00:02:34 v #4387 > > | Rust _ => fun str => !\\(str, $'"String::from($0)"') 00:02:34 v #4388 > > | _ => fun str => str |> unbox 00:02:35 v #4389 > > 00:02:35 v #4390 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:35 v #4391 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:35 v #4392 > > │ ### cow_to_std_string │ 00:02:35 v #4393 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:35 v #4394 > > 00:02:35 v #4395 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:35 v #4396 > > inl cow_to_std_string (str : rust.cow str) : std_string = 00:02:35 v #4397 > > !\\(str, $'"String::from($0)"') 00:02:35 v #4398 > > 00:02:35 v #4399 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:35 v #4400 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:35 v #4401 > > │ ### to_std_string │ 00:02:35 v #4402 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:35 v #4403 > > 00:02:35 v #4404 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:35 v #4405 > > inl to_std_string (s : string) : std_string = 00:02:35 v #4406 > > s |> as_str |> ref_to_std_string 00:02:35 v #4407 > > 00:02:35 v #4408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:35 v #4409 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:35 v #4410 > > │ ### as_str_std │ 00:02:35 v #4411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:35 v #4412 > > 00:02:35 v #4413 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:35 v #4414 > > inl as_str_std (s : std_string) : rust.ref str = 00:02:35 v #4415 > > !\\(s, $'"$0.as_str()"') 00:02:36 v #4416 > > 00:02:36 v #4417 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:36 v #4418 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:36 v #4419 > > │ ### into_boxed_str │ 00:02:36 v #4420 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:36 v #4421 > > 00:02:36 v #4422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:36 v #4423 > > inl into_boxed_str (s : std_string) : rust.box str = 00:02:36 v #4424 > > !\\(s, $'"$0.into_boxed_str()"') 00:02:36 v #4425 > > 00:02:36 v #4426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:36 v #4427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:36 v #4428 > > │ ### os_string_as_ref │ 00:02:36 v #4429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:36 v #4430 > > 00:02:36 v #4431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:36 v #4432 > > inl os_string_as_ref (s : os_string) : rust.ref os_str = 00:02:36 v #4433 > > !\\(s, $'"$0.as_ref()"') 00:02:37 v #4434 > > 00:02:37 v #4435 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:37 v #4436 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:37 v #4437 > > │ ### to_os_string │ 00:02:37 v #4438 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:37 v #4439 > > 00:02:37 v #4440 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:37 v #4441 > > inl to_os_string (s : rust.ref os_str) : os_string = 00:02:37 v #4442 > > !\\(s, $'"$0.to_os_string()"') 00:02:37 v #4443 > > 00:02:37 v #4444 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:37 v #4445 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:37 v #4446 > > │ ### new_c_string │ 00:02:37 v #4447 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:37 v #4448 > > 00:02:37 v #4449 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:37 v #4450 > > inl new_c_string (s : std_string) : c_string = 00:02:37 v #4451 > > !\\(s, $'"std::ffi::CString::new($0).unwrap()"') 00:02:38 v #4452 > > 00:02:38 v #4453 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:38 v #4454 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:38 v #4455 > > │ ### os_to_str │ 00:02:38 v #4456 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:38 v #4457 > > 00:02:38 v #4458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:38 v #4459 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) = 00:02:38 v #4460 > > !\\(s, $'"$0.to_str()"') 00:02:38 v #4461 > > 00:02:38 v #4462 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:38 v #4463 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:38 v #4464 > > │ ### from_os_str_ref │ 00:02:38 v #4465 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:38 v #4466 > > 00:02:38 v #4467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:38 v #4468 > > inl from_os_str_ref s = 00:02:38 v #4469 > > s 00:02:38 v #4470 > > |> to_os_string 00:02:38 v #4471 > > |> os_to_str 00:02:38 v #4472 > > |> optionm'.unwrap 00:02:38 v #4473 > > |> ref_to_std_string 00:02:38 v #4474 > > |> from_std_string 00:02:39 v #4475 > > 00:02:39 v #4476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 v #4477 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 v #4478 > > │ ### format_custom' │ 00:02:39 v #4479 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 v #4480 > > 00:02:39 v #4481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 v #4482 > > inl format_custom' (f : string) x : std_string = 00:02:39 v #4483 > > run_target function 00:02:39 v #4484 > > | Rust _ => fun () => 00:02:39 v #4485 > > !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"') 00:02:39 v #4486 > > | _ => fun () => null () 00:02:39 v #4487 > > 00:02:39 v #4488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 v #4489 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 v #4490 > > │ ### format_debug' │ 00:02:39 v #4491 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 v #4492 > > 00:02:39 v #4493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 v #4494 > > inl format_debug' x : std_string = 00:02:39 v #4495 > > run_target function 00:02:39 v #4496 > > | Rust _ => fun () => 00:02:39 v #4497 > > !\\(x, $'"format\!(\\\"{:?}\\\", $0)"') 00:02:39 v #4498 > > | _ => fun () => null () 00:02:40 v #4499 > > 00:02:40 v #4500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:40 v #4501 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:40 v #4502 > > │ ### format' │ 00:02:40 v #4503 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 v #4504 > > 00:02:40 v #4505 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 v #4506 > > inl format' x : std_string = 00:02:40 v #4507 > > run_target_args (fun () => x) function 00:02:40 v #4508 > > | Rust _ => fun x => 00:02:40 v #4509 > > !\\(x, $'"format\!(\\\"{}\\\", $0)"') 00:02:40 v #4510 > > | _ => fun _ => null () 00:02:40 v #4511 > > 00:02:40 v #4512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:40 v #4513 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:40 v #4514 > > │ ### format_hex' │ 00:02:40 v #4515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 v #4516 > > 00:02:40 v #4517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 v #4518 > > inl format_hex' x : std_string = 00:02:40 v #4519 > > !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"') 00:02:40 v #4520 > > 00:02:40 v #4521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:40 v #4522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:40 v #4523 > > │ ### format'' │ 00:02:40 v #4524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 v #4525 > > 00:02:40 v #4526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 v #4527 > > inl format'' (format : string) : std_string = 00:02:40 v #4528 > > !\($'@@$"format\!(" + !format + ")"') 00:02:41 v #4529 > > 00:02:41 v #4530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:41 v #4531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:41 v #4532 > > │ ### regex │ 00:02:41 v #4533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:41 v #4534 > > 00:02:41 v #4535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:41 v #4536 > > nominal regex = 00:02:41 v #4537 > > `( 00:02:41 v #4538 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:41 v #4539 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end" 00:02:41 v #4540 > > $'' : $'regex_Regex' 00:02:41 v #4541 > > ) 00:02:41 v #4542 > > 00:02:41 v #4543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:41 v #4544 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:41 v #4545 > > │ ### regex_error │ 00:02:41 v #4546 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:41 v #4547 > > 00:02:41 v #4548 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:41 v #4549 > > nominal regex_error = 00:02:41 v #4550 > > `( 00:02:41 v #4551 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:41 v #4552 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end" 00:02:41 v #4553 > > $'' : $'regex_Error' 00:02:41 v #4554 > > ) 00:02:42 v #4555 > > 00:02:42 v #4556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:42 v #4557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:42 v #4558 > > │ ### new_regex │ 00:02:42 v #4559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:42 v #4560 > > 00:02:42 v #4561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:42 v #4562 > > inl new_regex (pattern : string) : resultm.result' regex regex_error = 00:02:42 v #4563 > > !\\(pattern, $'$"regex::Regex::new(&$0)"') 00:02:42 v #4564 > > 00:02:42 v #4565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:42 v #4566 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:42 v #4567 > > │ ### captures │ 00:02:42 v #4568 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:42 v #4569 > > 00:02:42 v #4570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:42 v #4571 > > nominal regex_captures t = 00:02:42 v #4572 > > `( 00:02:42 v #4573 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:42 v #4574 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> = 00:02:42 v #4575 > > class end" 00:02:42 v #4576 > > $'' : $'regex_Captures<`t>' 00:02:42 v #4577 > > ) 00:02:43 v #4578 > > 00:02:43 v #4579 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:43 v #4580 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:43 v #4581 > > │ ### regex_capture_matches │ 00:02:43 v #4582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:43 v #4583 > > 00:02:43 v #4584 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:43 v #4585 > > nominal regex_capture_matches = 00:02:43 v #4586 > > `( 00:02:43 v #4587 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:43 v #4588 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches 00:02:43 v #4589 > > = class end" 00:02:43 v #4590 > > $'' : $'regex_CaptureMatches' 00:02:43 v #4591 > > ) 00:02:43 v #4592 > > 00:02:43 v #4593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:43 v #4594 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:43 v #4595 > > │ ### regex_capture_names │ 00:02:43 v #4596 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:43 v #4597 > > 00:02:43 v #4598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:43 v #4599 > > nominal regex_capture_names = 00:02:43 v #4600 > > `( 00:02:43 v #4601 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:43 v #4602 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames = 00:02:43 v #4603 > > class end" 00:02:43 v #4604 > > $'' : $'regex_CaptureNames' 00:02:43 v #4605 > > ) 00:02:43 v #4606 > > 00:02:43 v #4607 > > inl regex_capture_names (regex : regex) : regex_capture_names = 00:02:43 v #4608 > > !\\(regex, $'$"$0.capture_names()"') 00:02:44 v #4609 > > 00:02:44 v #4610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:44 v #4611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:44 v #4612 > > │ ### match' │ 00:02:44 v #4613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:44 v #4614 > > 00:02:44 v #4615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:44 v #4616 > > nominal match' = 00:02:44 v #4617 > > `( 00:02:44 v #4618 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:44 v #4619 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end" 00:02:44 v #4620 > > $'' : $'regex_Match' 00:02:44 v #4621 > > ) 00:02:44 v #4622 > > 00:02:44 v #4623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:44 v #4624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:44 v #4625 > > │ ### regex_captures_iter │ 00:02:44 v #4626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:44 v #4627 > > 00:02:44 v #4628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:44 v #4629 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex : 00:02:44 v #4630 > > regex) : regex_capture_matches = 00:02:44 v #4631 > > inl regex = regex |> rust.emit 00:02:44 v #4632 > > !\\(regex, $'$"$0.captures_iter(!s)"') 00:02:45 v #4633 > > 00:02:45 v #4634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:45 v #4635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:45 v #4636 > > │ ### regex_captures │ 00:02:45 v #4637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:45 v #4638 > > 00:02:45 v #4639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:45 v #4640 > > let regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string 00:02:45 v #4641 > > string) = 00:02:45 v #4642 > > // inl s = join s 00:02:45 v #4643 > > // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps| 00:02:45 v #4644 > > $0.capture_names().map(|x| x.and_then(|n| Some((n, 00:02:45 v #4645 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"') 00:02:45 v #4646 > > 00:02:45 v #4647 > > inl s = s |> to_std_string 00:02:45 v #4648 > > fun () => 00:02:45 v #4649 > > inl matches = 00:02:45 v #4650 > > inl s = s |> rust.new_box |> rust.box_leak 00:02:45 v #4651 > > regex |> regex_captures_iter s 00:02:45 v #4652 > > 00:02:45 v #4653 > > (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') : 00:02:45 v #4654 > > bool) |> ignore 00:02:45 v #4655 > > 00:02:45 v #4656 > > inl fn (match' : rust.static_ref (rust.mut' (regex_captures 00:02:45 v #4657 > > rust.static_lifetime))) : mapm.hash_map string string = 00:02:45 v #4658 > > 00:02:45 v #4659 > > inl names = regex |> regex_capture_names 00:02:45 v #4660 > > 00:02:45 v #4661 > > (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> = 00:02:45 v #4662 > > !names.map(|x| { //"') : bool) |> ignore 00:02:45 v #4663 > > 00:02:45 v #4664 > > inl fn (n : string) : pair string string = 00:02:45 v #4665 > > inl n' = n |> rust.clone 00:02:45 v #4666 > > 00:02:45 v #4667 > > new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x| 00:02:45 v #4668 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"') 00:02:45 v #4669 > > 00:02:45 v #4670 > > (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true; 00:02:45 v #4671 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x| 00:02:45 v #4672 > > (*x).clone())).collect()"') : bool) |> ignore 00:02:45 v #4673 > > 00:02:45 v #4674 > > !\($'"_regex_captures"') 00:02:45 v #4675 > > 00:02:45 v #4676 > > inl x = 00:02:45 v #4677 > > !\($'$"x"') 00:02:45 v #4678 > > |> rust.new_box 00:02:45 v #4679 > > |> rust.box_leak 00:02:45 v #4680 > > 00:02:45 v #4681 > > (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:02:45 v #4682 > > 00:02:45 v #4683 > > !\($'"_regex_captures"') 00:02:45 v #4684 > > 00:02:45 v #4685 > > |> rust.capture_move 00:02:45 v #4686 > > 00:02:45 v #4687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:45 v #4688 > > //// test 00:02:45 v #4689 > > ///! rust -d regex 00:02:45 v #4690 > > 00:02:45 v #4691 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$" 00:02:45 v #4692 > > |> new_regex 00:02:45 v #4693 > > |> resultm.unwrap' 00:02:45 v #4694 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0" 00:02:45 v #4695 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id) 00:02:45 v #4696 > > |> sm'.format_debug 00:02:45 v #4697 > > |> _assert_eq ( 00:02:45 v #4698 > > ;[[ 00:02:45 v #4699 > > ;[[ "", ""; "a", "4.17.0" ]] 00:02:45 v #4700 > > |> am'.to_vec 00:02:45 v #4701 > > ]] 00:02:45 v #4702 > > |> am'.to_vec 00:02:45 v #4703 > > |> sm'.format_debug 00:02:45 v #4704 > > ) 00:02:48 v #4705 > > 00:02:48 v #4706 > > ╭─[ 2.97s - return value ]─────────────────────────────────────────────────────╮ 00:02:48 v #4707 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]" / expected: "[[("", │ 00:02:48 v #4708 > > │ ""), ("a", "4.17.0")]]" │ 00:02:48 v #4709 > > │ │ 00:02:48 v #4710 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:48 v #4711 > > 00:02:48 v #4712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:48 v #4713 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:48 v #4714 > > │ ### replace_regex' │ 00:02:48 v #4715 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:48 v #4716 > > 00:02:48 v #4717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:48 v #4718 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string) 00:02:48 v #4719 > > : string = 00:02:48 v #4720 > > run_target_args (fun () => s, pattern, replacement) function 00:02:48 v #4721 > > | Rust (Native) => fun s, pattern, replacement => 00:02:48 v #4722 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:02:48 v #4723 > > !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"') 00:02:48 v #4724 > > |> cow_to_std_string 00:02:48 v #4725 > > |> from_std_string 00:02:48 v #4726 > > | _ => fun _ => null () 00:02:48 v #4727 > > 00:02:48 v #4728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:48 v #4729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:48 v #4730 > > │ ### serialize │ 00:02:48 v #4731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:48 v #4732 > > 00:02:48 v #4733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:48 v #4734 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error = 00:02:48 v #4735 > > !\($'"serde_json::to_string(&!x)"') 00:02:49 v #4736 > > 00:02:49 v #4737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:49 v #4738 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:49 v #4739 > > │ ### deserialize │ 00:02:49 v #4740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:49 v #4741 > > 00:02:49 v #4742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:49 v #4743 > > inl deserialize forall t. (json : string) : resultm.result' t std_string = 00:02:49 v #4744 > > inl json = join json 00:02:49 v #4745 > > inl json = json |> as_str 00:02:49 v #4746 > > !\\(json, $'"serde_json::from_str(&$0)"') 00:02:49 v #4747 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:02:49 v #4748 > > 00:02:49 v #4749 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:49 v #4750 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:49 v #4751 > > │ ### borsh_serialize │ 00:02:49 v #4752 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:49 v #4753 > > 00:02:49 v #4754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:49 v #4755 > > inl borsh_serialize forall t. (data : t) : am'.vec u8 = 00:02:49 v #4756 > > (!\($'"true; let mut data = Vec::new()"') : bool) |> ignore 00:02:49 v #4757 > > (!\\(data, $'"true; borsh::BorshSerialize::serialize(&$0, &mut 00:02:49 v #4758 > > data).unwrap()"') : bool) |> ignore 00:02:49 v #4759 > > !\($'"data"') 00:02:50 v #4760 > > 00:02:50 v #4761 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:50 v #4762 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:50 v #4763 > > │ ### borsh_deserialize │ 00:02:50 v #4764 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:50 v #4765 > > 00:02:50 v #4766 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:50 v #4767 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t 00:02:50 v #4768 > > std_string = 00:02:50 v #4769 > > inl data = data |> am'.as_slice 00:02:50 v #4770 > > (!\($'"true; let mut !data = !data"') : bool) |> ignore 00:02:50 v #4771 > > inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"') 00:02:50 v #4772 > > result 00:02:50 v #4773 > > |> resultm.map_error' fun (x : borsh_io_error) => x |> format' 00:02:50 v #4774 > > 00:02:50 v #4775 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:50 v #4776 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:50 v #4777 > > │ ### deserialize_vec │ 00:02:50 v #4778 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:50 v #4779 > > 00:02:50 v #4780 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:50 v #4781 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8) 00:02:50 v #4782 > > std_string = 00:02:50 v #4783 > > inl value = join value 00:02:50 v #4784 > > !\($'"serde_json::from_value(!value)"') 00:02:50 v #4785 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:02:51 v #4786 > > 00:02:51 v #4787 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:51 v #4788 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:51 v #4789 > > │ ### encode_uri_component │ 00:02:51 v #4790 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:51 v #4791 > > 00:02:51 v #4792 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:51 v #4793 > > inl encode_uri_component (s : std_string) : js_string = 00:02:51 v #4794 > > !\($'"js_sys::encode_uri_component(&!s)"') 00:02:51 v #4795 > > 00:02:51 v #4796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:51 v #4797 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:51 v #4798 > > │ ### strip_prefix │ 00:02:51 v #4799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:51 v #4800 > > 00:02:51 v #4801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:51 v #4802 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref 00:02:51 v #4803 > > str) = 00:02:51 v #4804 > > inl s = join s 00:02:51 v #4805 > > !\($'"!s.strip_prefix(!prefix)"') 00:02:52 v #4806 > > 00:02:52 v #4807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:52 v #4808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:52 v #4809 > > │ ### str_from_utf8 │ 00:02:52 v #4810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:52 v #4811 > > 00:02:52 v #4812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:52 v #4813 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref 00:02:52 v #4814 > > str) utf8_error = 00:02:52 v #4815 > > !\\(bytes, $'"std::str::from_utf8($0)"') 00:02:52 v #4816 > > 00:02:52 v #4817 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:52 v #4818 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:52 v #4819 > > │ ### string_from_utf8 │ 00:02:52 v #4820 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:52 v #4821 > > 00:02:52 v #4822 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:52 v #4823 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string 00:02:52 v #4824 > > from_utf8_error = 00:02:52 v #4825 > > inl bytes = join bytes 00:02:52 v #4826 > > !\\(bytes, $'"std::string::String::from_utf8($0)"') 00:02:53 v #4827 > > 00:02:53 v #4828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:53 v #4829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:53 v #4830 > > │ ### base64_decode │ 00:02:53 v #4831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:53 v #4832 > > 00:02:53 v #4833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:53 v #4834 > > inl base64_decode (s : std_string) : result std_string std_string = 00:02:53 v #4835 > > fun () => 00:02:53 v #4836 > > inl s = join s 00:02:53 v #4837 > > inl bytes : resultm.result' (am'.vec u8) base64_decode_error = 00:02:53 v #4838 > > 00:02:53 v #4839 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"') 00:02:53 v #4840 > > bytes 00:02:53 v #4841 > > |> resultm.map_error' format' 00:02:53 v #4842 > > |> resultm.try' 00:02:53 v #4843 > > |> string_from_utf8 00:02:53 v #4844 > > |> resultm.map_error' format' 00:02:53 v #4845 > > |> fun x => 00:02:53 v #4846 > > join x () 00:02:53 v #4847 > > |> resultm.unbox 00:02:53 v #4848 > > 00:02:53 v #4849 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:53 v #4850 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:53 v #4851 > > │ ### encoding' │ 00:02:53 v #4852 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:53 v #4853 > > 00:02:53 v #4854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:53 v #4855 > > nominal encoding' = 00:02:53 v #4856 > > `( 00:02:53 v #4857 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:53 v #4858 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding 00:02:53 v #4859 > > = class end" 00:02:53 v #4860 > > $'' : $'encoding_rs_Encoding' 00:02:53 v #4861 > > ) 00:02:54 v #4862 > > 00:02:54 v #4863 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:54 v #4864 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:54 v #4865 > > │ ### encoding_utf8' │ 00:02:54 v #4866 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:54 v #4867 > > 00:02:54 v #4868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:54 v #4869 > > inl encoding_utf8' () : rust.ref encoding' = 00:02:54 v #4870 > > !\($'"encoding_rs::UTF_8"') 00:02:54 v #4871 > > 00:02:54 v #4872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:54 v #4873 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:54 v #4874 > > │ ### encoding_1252 │ 00:02:54 v #4875 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:54 v #4876 > > 00:02:54 v #4877 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:54 v #4878 > > inl encoding_1252' () : rust.ref encoding' = 00:02:54 v #4879 > > !\($'"encoding_rs::WINDOWS_1252"') 00:02:55 v #4880 > > 00:02:55 v #4881 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:55 v #4882 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:55 v #4883 > > │ ### encoding_encode │ 00:02:55 v #4884 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:55 v #4885 > > 00:02:55 v #4886 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #4887 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow 00:02:55 v #4888 > > (am'.slice u8) = 00:02:55 v #4889 > > !\\((encoding, text), $'"$0.encode(&*$1).0"') 00:02:55 v #4890 > > 00:02:55 v #4891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:55 v #4892 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:55 v #4893 > > │ ### utf8_decode │ 00:02:55 v #4894 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:55 v #4895 > > 00:02:55 v #4896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #4897 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str) 00:02:55 v #4898 > > = 00:02:55 v #4899 > > !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data, 00:02:55 v #4900 > > encoding::DecoderTrap::Replace)"') 00:02:56 v #4901 > > 00:02:56 v #4902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:56 v #4903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:56 v #4904 > > │ ### windows │ 00:02:56 v #4905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:56 v #4906 > > 00:02:56 v #4907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:56 v #4908 > > nominal windows t = 00:02:56 v #4909 > > `( 00:02:56 v #4910 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:56 v #4911 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype 00:02:56 v #4912 > > std_slice_Windows<'T> = class end" 00:02:56 v #4913 > > $'' : $'std_slice_Windows<`t>' 00:02:56 v #4914 > > ) 00:02:56 v #4915 > > 00:02:56 v #4916 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 = 00:02:56 v #4917 > > inl source = source |> rust.new_box |> rust.box_leak 00:02:56 v #4918 > > // inl source' = source |> rust.clone 00:02:56 v #4919 > > inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"') 00:02:56 v #4920 > > // source |> rust.drop 00:02:56 v #4921 > > result 00:02:56 v #4922 > > 00:02:56 v #4923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:56 v #4924 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:56 v #4925 > > │ ### any │ 00:02:56 v #4926 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:56 v #4927 > > 00:02:56 v #4928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:56 v #4929 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool = 00:02:56 v #4930 > > (!\($'"true; let mut !source = !source"') : bool) |> ignore 00:02:56 v #4931 > > inl fn' x = 00:02:56 v #4932 > > x 00:02:56 v #4933 > > |> str_from_utf8 00:02:56 v #4934 > > |> resultm.unwrap_or' #"" 00:02:56 v #4935 > > |> ref_to_std_string 00:02:56 v #4936 > > |> from_std_string 00:02:56 v #4937 > > |> fn 00:02:56 v #4938 > > !\\(fn', $'"!source.any(move |x| $0(x))"') 00:02:56 v #4939 > > 00:02:56 v #4940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:56 v #4941 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:56 v #4942 > > │ ### slice_contains │ 00:02:56 v #4943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:56 v #4944 > > 00:02:56 v #4945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:56 v #4946 > > inl slice_contains (text : string) (source : am'.vec u8) : bool = 00:02:56 v #4947 > > fun () => 00:02:56 v #4948 > > inl source = join source 00:02:56 v #4949 > > source 00:02:56 v #4950 > > |> windows (text |> length |> (fun x => x : i32) |> convert) 00:02:56 v #4951 > > |> any ((=.) text) 00:02:56 v #4952 > > |> fun x => join x () 00:02:57 v #4953 > > 00:02:57 v #4954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:57 v #4955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:57 v #4956 > > │ ### as_bytes │ 00:02:57 v #4957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:57 v #4958 > > 00:02:57 v #4959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:57 v #4960 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) = 00:02:57 v #4961 > > inl text = join text 00:02:57 v #4962 > > !\($'"!text.as_bytes()"') 00:02:57 v #4963 > > 00:02:57 v #4964 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:57 v #4965 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:57 v #4966 > > │ ### into_bytes │ 00:02:57 v #4967 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:57 v #4968 > > 00:02:57 v #4969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:57 v #4970 > > inl into_bytes (x : std_string) : am'.vec u8 = 00:02:57 v #4971 > > !\\(x, $'$"$0.into_bytes()"') 00:02:58 v #4972 > > 00:02:58 v #4973 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:58 v #4974 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:58 v #4975 > > │ ## python │ 00:02:58 v #4976 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:58 v #4977 > > 00:02:58 v #4978 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:58 v #4979 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:58 v #4980 > > │ ### encode_utf8 │ 00:02:58 v #4981 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:58 v #4982 > > 00:02:58 v #4983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:58 v #4984 > > inl encode_utf8 (s : string) : string = 00:02:58 v #4985 > > inl encoding = "utf-8" 00:02:58 v #4986 > > backend_switch { 00:02:58 v #4987 > > Fsharp = fun () => 00:02:58 v #4988 > > open python_operators 00:02:58 v #4989 > > !\\((s, encoding), $'"$0.encode($1)"') : string 00:02:58 v #4990 > > Python = fun () => 00:02:58 v #4991 > > $'!s.encode(!encoding)' : string 00:02:58 v #4992 > > } 00:02:58 v #4993 > > 00:02:58 v #4994 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:58 v #4995 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:58 v #4996 > > │ ## sm' │ 00:02:58 v #4997 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:58 v #4998 > > 00:02:58 v #4999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:58 v #5000 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:58 v #5001 > > │ ### contains │ 00:02:58 v #5002 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:58 v #5003 > > 00:02:58 v #5004 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:58 v #5005 > > inl contains (value : string) (s : string) : bool = 00:02:58 v #5006 > > backend_switch { 00:02:58 v #5007 > > Fsharp = fun () => $'!s.Contains !value ' : bool 00:02:58 v #5008 > > Python = fun () => $'!value in !s ' : bool 00:02:58 v #5009 > > } 00:02:59 v #5010 > > 00:02:59 v #5011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:59 v #5012 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:59 v #5013 > > │ ### to_string result t u │ 00:02:59 v #5014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:59 v #5015 > > 00:02:59 v #5016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:59 v #5017 > > instance to_string result t u = fun x => 00:02:59 v #5018 > > real 00:02:59 v #5019 > > open rust 00:02:59 v #5020 > > typecase (t * u) with 00:02:59 v #5021 > > | string * string => 00:02:59 v #5022 > > match x with 00:02:59 v #5023 > > | Ok x => x 00:02:59 v #5024 > > | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string 00:02:59 v #5025 > > | std_string * std_string => 00:02:59 v #5026 > > match x with 00:02:59 v #5027 > > | Ok x => from_std_string x 00:02:59 v #5028 > > | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' : 00:02:59 v #5029 > > string 00:02:59 v #5030 > > | _ => obj_to_string `u x 00:02:59 v #5031 > > 00:02:59 v #5032 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:59 v #5033 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:59 v #5034 > > │ ### format_exception │ 00:02:59 v #5035 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:59 v #5036 > > 00:02:59 v #5037 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:59 v #5038 > > inl format_exception (ex : exn) : string = 00:02:59 v #5039 > > run_target function 00:02:59 v #5040 > > | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"' 00:02:59 v #5041 > > | _ => fun () => ex |> format_debug 00:03:00 v #5042 > > 00:03:00 v #5043 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:00 v #5044 > > //// test 00:03:00 v #5045 > > ///! fsharp 00:03:00 v #5046 > > ///! cuda 00:03:00 v #5047 > > ///! rust 00:03:00 v #5048 > > ///! typescript 00:03:00 v #5049 > > ///! python 00:03:00 v #5050 > > 00:03:00 v #5051 > > fun () => failwith "test" 00:03:00 v #5052 > > |> _throws 00:03:00 v #5053 > > |> optionm.value 00:03:00 v #5054 > > |> sm'.format_exception 00:03:00 v #5055 > > |> _assert_eq (run_target function 00:03:00 v #5056 > > | Fsharp _ => fun () => join "System.Exception: test" 00:03:00 v #5057 > > | Cuda _ => fun () => "test" 00:03:00 v #5058 > > | Rust _ => fun () => "Exception { message: \"test\" }" 00:03:00 v #5059 > > | TypeScript _ => fun () => "Error: test" 00:03:00 v #5060 > > | Python _ => fun () => join "test" 00:03:00 v #5061 > > | _ => fun () => null () 00:03:00 v #5062 > > ) 00:03:03 v #5063 > > 00:03:03 v #5064 > > ╭─[ 3.54s - return value ]─────────────────────────────────────────────────────╮ 00:03:03 v #5065 > > │ .py output (Cuda): │ 00:03:03 v #5066 > > │ __assert_eq / actual: test / expected: test │ 00:03:03 v #5067 > > │ │ 00:03:03 v #5068 > > │ .rs output: │ 00:03:03 v #5069 > > │ __assert_eq / actual: "Exception { message: "test" }" / expected: "Exception │ 00:03:03 v #5070 > > │ { message: "test" }" │ 00:03:03 v #5071 > > │ │ 00:03:03 v #5072 > > │ .ts output: │ 00:03:03 v #5073 > > │ __assert_eq / actual: Error: test / expected: Error: test │ 00:03:03 v #5074 > > │ │ 00:03:03 v #5075 > > │ .py output: │ 00:03:03 v #5076 > > │ __assert_eq / actual: test / expected: test │ 00:03:03 v #5077 > > │ │ 00:03:03 v #5078 > > │ │ 00:03:03 v #5079 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:03 v #5080 > > 00:03:03 v #5081 > > ╭─[ 3.54s - stdout ]───────────────────────────────────────────────────────────╮ 00:03:03 v #5082 > > │ .fsx output: │ 00:03:03 v #5083 > > │ __assert_eq / actual: "System.Exception: test" / expected: │ 00:03:03 v #5084 > > │ "System.Exception: test" │ 00:03:03 v #5085 > > │ │ 00:03:03 v #5086 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:03 v #5087 > > 00:03:03 v #5088 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:03 v #5089 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:03 v #5090 > > │ ### range │ 00:03:03 v #5091 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:03 v #5092 > > 00:03:03 v #5093 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:03 v #5094 > > inl range forall t. (start : am'.range t) (end : am'.range t) s = 00:03:03 v #5095 > > inl start, end = 00:03:03 v #5096 > > inl len () = 00:03:03 v #5097 > > s |> length' 00:03:03 v #5098 > > match start, end with 00:03:03 v #5099 > > | Start start, End fn => start, len |> fn 00:03:03 v #5100 > > | End start_fn, End end_fn => start_fn len, end_fn len 00:03:03 v #5101 > > s |> slice (start |> i32) ((end |> i32) - 1) 00:03:04 v #5102 > > 00:03:04 v #5103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:04 v #5104 > > //// test 00:03:04 v #5105 > > ///! fsharp 00:03:04 v #5106 > > ///! cuda 00:03:04 v #5107 > > 00:03:04 v #5108 > > "abcde" 00:03:04 v #5109 > > |> range (am'.Start 1i32) (am'.End eval) 00:03:04 v #5110 > > |> _assert_eq "bcde" 00:03:04 v #5111 > > 00:03:04 v #5112 > > "abcde" 00:03:04 v #5113 > > |> range (am'.End fun x => x () - 4i32) (am'.End fun x => x () - 1) 00:03:04 v #5114 > > |> _assert_eq "bcd" 00:03:05 v #5115 > > 00:03:05 v #5116 > > ╭─[ 1.20s - return value ]─────────────────────────────────────────────────────╮ 00:03:05 v #5117 > > │ │ 00:03:05 v #5118 > > │ .py output (Cuda): │ 00:03:05 v #5119 > > │ __assert_eq / actual: bcde / expected: bcde │ 00:03:05 v #5120 > > │ __assert_eq / actual: bcd / expected: bcd │ 00:03:05 v #5121 > > │ │ 00:03:05 v #5122 > > │ │ 00:03:05 v #5123 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:05 v #5124 > > 00:03:05 v #5125 > > ╭─[ 1.20s - stdout ]───────────────────────────────────────────────────────────╮ 00:03:05 v #5126 > > │ .fsx output: │ 00:03:05 v #5127 > > │ __assert_eq / actual: "bcde" / expected: "bcde" │ 00:03:05 v #5128 > > │ __assert_eq / actual: "bcd" / expected: "bcd" │ 00:03:05 v #5129 > > │ │ 00:03:05 v #5130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:05 v #5131 > > 00:03:05 v #5132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:05 v #5133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:05 v #5134 > > │ ### concat_list │ 00:03:05 v #5135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:05 v #5136 > > 00:03:05 v #5137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:05 v #5138 > > inl concat_list s list = 00:03:05 v #5139 > > list 00:03:05 v #5140 > > |> listm'.box 00:03:05 v #5141 > > |> seq.of_list' 00:03:05 v #5142 > > |> concat s 00:03:05 v #5143 > > 00:03:05 v #5144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:05 v #5145 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:05 v #5146 > > │ ### ellipsis_end │ 00:03:05 v #5147 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:05 v #5148 > > 00:03:05 v #5149 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:05 v #5150 > > let ellipsis_end (max : i64) (s : string) = 00:03:05 v #5151 > > inl len = sm.length s 00:03:05 v #5152 > > if len <= max 00:03:05 v #5153 > > then s 00:03:05 v #5154 > > else 00:03:05 v #5155 > > inl half = f64 max / 2 00:03:05 v #5156 > > inl start_half = half |> math.ceil |> i64 00:03:05 v #5157 > > inl end_half = half |> math.floor |> i64 00:03:05 v #5158 > > inl start = s |> slice 0 (start_half - 1) 00:03:05 v #5159 > > inl end = s |> slice (len - end_half) (len - 1) 00:03:05 v #5160 > > (a ;[[ start; "..."; end ]] : _ i32 _) 00:03:05 v #5161 > > |> seq.of_array 00:03:05 v #5162 > > |> concat "" 00:03:06 v #5163 > > 00:03:06 v #5164 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 v #5165 > > //// test 00:03:06 v #5166 > > 00:03:06 v #5167 > > "12345" 00:03:06 v #5168 > > |> ellipsis_end 2 00:03:06 v #5169 > > |> _assert_eq "1...5" 00:03:06 v #5170 > > 00:03:06 v #5171 > > "12345" 00:03:06 v #5172 > > |> ellipsis_end 3 00:03:06 v #5173 > > |> _assert_eq "12...5" 00:03:06 v #5174 > > 00:03:06 v #5175 > > "1234567" 00:03:06 v #5176 > > |> ellipsis_end 4 00:03:06 v #5177 > > |> _assert_eq "12...67" 00:03:07 v #5178 > > 00:03:07 v #5179 > > ╭─[ 601.97ms - stdout ]────────────────────────────────────────────────────────╮ 00:03:07 v #5180 > > │ __assert_eq / actual: "1...5" / expected: "1...5" │ 00:03:07 v #5181 > > │ __assert_eq / actual: "12...5" / expected: "12...5" │ 00:03:07 v #5182 > > │ __assert_eq / actual: "12...67" / expected: "12...67" │ 00:03:07 v #5183 > > │ │ 00:03:07 v #5184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 v #5185 > > 00:03:07 v #5186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 v #5187 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 v #5188 > > │ ### format_ellipsis │ 00:03:07 v #5189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 v #5190 > > 00:03:07 v #5191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 v #5192 > > inl format_ellipsis s = 00:03:07 v #5193 > > s 00:03:07 v #5194 > > |> format_debug 00:03:07 v #5195 > > |> ellipsis_end 400 00:03:07 v #5196 > > 00:03:07 v #5197 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 v #5198 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 v #5199 > > │ ### replace_regex │ 00:03:07 v #5200 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 v #5201 > > 00:03:07 v #5202 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 v #5203 > > let replace_regex (pattern : string) (replacement : string) (s : string) : 00:03:07 v #5204 > > string = 00:03:07 v #5205 > > run_target_args (fun () => s, pattern, replacement) function 00:03:07 v #5206 > > | Fsharp (Native) => fun s, pattern, replacement => 00:03:07 v #5207 > > $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern, 00:03:07 v #5208 > > !replacement)' 00:03:07 v #5209 > > | Rust (Native) => fun s, pattern, replacement => 00:03:07 v #5210 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:03:07 v #5211 > > inl s = join s 00:03:07 v #5212 > > !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"') 00:03:07 v #5213 > > |> cow_to_std_string 00:03:07 v #5214 > > |> from_std_string 00:03:07 v #5215 > > | _ => fun _ => null () 00:03:07 v #5216 > > 00:03:07 v #5217 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 v #5218 > > //// test 00:03:07 v #5219 > > ///! fsharp 00:03:07 v #5220 > > ///! rust -d regex 00:03:07 v #5221 > > 00:03:07 v #5222 > > " 123" 00:03:07 v #5223 > > |> replace_regex "\\s\\w2" "" 00:03:07 v #5224 > > |> _assert_eq "3" 00:03:11 v #5225 > > 00:03:11 v #5226 > > ╭─[ 3.29s - return value ]─────────────────────────────────────────────────────╮ 00:03:11 v #5227 > > │ .rs output (rust -d regex): │ 00:03:11 v #5228 > > │ __assert_eq / actual: "3" / expected: "3" │ 00:03:11 v #5229 > > │ │ 00:03:11 v #5230 > > │ │ 00:03:11 v #5231 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 v #5232 > > 00:03:11 v #5233 > > ╭─[ 3.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:03:11 v #5234 > > │ .fsx output: │ 00:03:11 v #5235 > > │ __assert_eq / actual: "3" / expected: "3" │ 00:03:11 v #5236 > > │ │ 00:03:11 v #5237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 v #5238 > > 00:03:11 v #5239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #5240 > > //// test 00:03:11 v #5241 > > ///! rust -d regex 00:03:11 v #5242 > > 00:03:11 v #5243 > > " let main args =\n ()\n" 00:03:11 v #5244 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 00:03:11 v #5245 > > "$a[[<EntryPoint>]]\n$a$b" 00:03:11 v #5246 > > |> _assert_eq " [[<EntryPoint>]]\n let main args =\n ()\n" 00:03:14 v #5247 > > 00:03:14 v #5248 > > ╭─[ 2.96s - return value ]─────────────────────────────────────────────────────╮ 00:03:14 v #5249 > > │ __assert_eq / actual: " [<EntryPoint>] │ 00:03:14 v #5250 > > │ let main args = │ 00:03:14 v #5251 > > │ () │ 00:03:14 v #5252 > > │ " / expected: " [<EntryPoint>] │ 00:03:14 v #5253 > > │ let main args = │ 00:03:14 v #5254 > > │ () │ 00:03:14 v #5255 > > │ " │ 00:03:14 v #5256 > > │ │ 00:03:14 v #5257 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:14 v #5258 > > 00:03:14 v #5259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:14 v #5260 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:14 v #5261 > > │ ## main │ 00:03:14 v #5262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:14 v #5263 > > 00:03:14 v #5264 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:14 v #5265 > > inl main () = 00:03:14 v #5266 > > $'let contains x = !contains x' : () 00:03:14 v #5267 > > $'let ends_with x = !ends_with x' : () 00:03:14 v #5268 > > $'let pad_left x = !pad_left x' : () 00:03:14 v #5269 > > $'let pad_right x = !pad_right x' : () 00:03:14 v #5270 > > $'let replace x = !replace x' : () 00:03:14 v #5271 > > $'let replace_regex x = !replace_regex x' : () 00:03:14 v #5272 > > inl slice (a : i32) (b : i32) c = slice a b c 00:03:14 v #5273 > > $'let slice x = !slice x' : () 00:03:14 v #5274 > > $'let split x = !split x' : () 00:03:14 v #5275 > > $'let split_string x = !split_string x' : () 00:03:14 v #5276 > > $'let starts_with x = !starts_with x' : () 00:03:14 v #5277 > > $'let substring x = !substring x' : () 00:03:14 v #5278 > > $'let to_lower x = !to_lower x' : () 00:03:14 v #5279 > > $'let to_upper x = !to_upper x' : () 00:03:14 v #5280 > > $'let trim x = !trim x' : () 00:03:14 v #5281 > > inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end 00:03:14 v #5282 > > $'let trim_end x = !trim_end x' : () 00:03:14 v #5283 > > inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> 00:03:14 v #5284 > > trim_start 00:03:14 v #5285 > > $'let trim_start x = !trim_start x' : () 00:03:14 v #5286 > > $'let ellipsis x = !ellipsis x' : () 00:03:14 v #5287 > > $'let ellipsis_end x = !ellipsis_end x' : () 00:03:14 v #5288 > > $'let format_exception x = !format_exception x' : () 00:03:14 v #5289 > > $'let concat_array x = !concat_array x' : () 00:03:14 v #5290 > > inl concat a (b : seq.seq' string) = concat a b 00:03:14 v #5291 > > $'let concat x = !concat x' : () 00:03:14 v #5292 > > $'let join\' x = !join' x' : () 00:03:14 v #5293 > > $'let to_char_array x = !to_char_array x' : () 00:03:15 v #5294 > > 00:03:15 v #5295 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:15 v #5296 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:15 v #5297 > > │ ## rust │ 00:03:15 v #5298 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:15 v #5299 > > 00:03:15 v #5300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:15 v #5301 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:15 v #5302 > > │ ### to_string std_string │ 00:03:15 v #5303 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:15 v #5304 > > 00:03:15 v #5305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:15 v #5306 > > open rust 00:03:15 v #5307 > > instance to_string std_string = from_std_string 00:03:15 v #5308 > 00:01:59 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 194800 } 00:03:15 v #5309 > 00:01:59 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:16 v #5310 > 00:02:00 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/sm'.dib.ipynb to html 00:03:16 v #5311 > 00:02:00 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:16 v #5312 > 00:02:00 v #7 ! validate(nb) 00:03:17 v #5313 > 00:02:01 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:17 v #5314 > 00:02:01 v #9 ! return _pygments_highlight( 00:03:19 v #5315 > 00:02:03 v #10 ! [NbConvertApp] Writing 652883 bytes to c:\home\git\polyglot\lib\spiral\sm'.dib.html 00:03:19 v #5316 > 00:02:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 } 00:03:19 v #5317 > 00:02:03 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 } 00:03:19 v #5318 > 00:02:03 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:20 v #5319 > 00:02:03 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:20 v #5320 > 00:02:03 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:20 v #5321 > 00:02:03 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 195707 } 00:03:20 d #5322 runtime.execute_with_options_async / { exit_code = 0; output_length = 205091 } 00:03:20 d #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path sm'.dib --retries 3 00:03:20 d #5323 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/rust.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:20 v #5324 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) } 00:03:20 v #5325 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/rust.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/rust.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:03:21 v #5326 > > 00:03:21 v #5327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #5328 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:21 v #5329 > > │ # rust │ 00:03:21 v #5330 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:24 v #5331 > > 00:03:24 v #5332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #5333 > > //// test 00:03:24 v #5334 > > 00:03:24 v #5335 > > open testing 00:03:25 v #5336 > > 00:03:25 v #5337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #5338 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:25 v #5339 > > │ ## rust │ 00:03:25 v #5340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:25 v #5341 > > 00:03:25 v #5342 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #5343 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:25 v #5344 > > │ ### any_base │ 00:03:25 v #5345 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:25 v #5346 > > 00:03:25 v #5347 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #5348 > > type any_base = any 00:03:26 v #5349 > > 00:03:26 v #5350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #5351 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:26 v #5352 > > │ ### any │ 00:03:26 v #5353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:26 v #5354 > > 00:03:26 v #5355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #5356 > > nominal any = 00:03:26 v #5357 > > `( 00:03:26 v #5358 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #5359 > > Fable.Core.Emit(\"core::any::Any\")>]]\ntype core_any_Any = class 00:03:26 v #5360 > > end\n#else\ntype core_any_Any = obj\n#endif\n" 00:03:26 v #5361 > > $'' : $'core_any_Any' 00:03:26 v #5362 > > ) 00:03:26 v #5363 > > 00:03:26 v #5364 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #5365 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:26 v #5366 > > │ ### try │ 00:03:26 v #5367 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:26 v #5368 > > 00:03:26 v #5369 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #5370 > > nominal try t = 00:03:26 v #5371 > > `( 00:03:26 v #5372 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #5373 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end" 00:03:26 v #5374 > > $'' : $'core_ops_Try<`t>' 00:03:26 v #5375 > > ) 00:03:27 v #5376 > > 00:03:27 v #5377 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #5378 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:27 v #5379 > > │ ### cow │ 00:03:27 v #5380 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:27 v #5381 > > 00:03:27 v #5382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #5383 > > nominal cow t = 00:03:27 v #5384 > > `( 00:03:27 v #5385 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:27 v #5386 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> = 00:03:27 v #5387 > > class end" 00:03:27 v #5388 > > $'' : $'std_borrow_Cow<`t>' 00:03:27 v #5389 > > ) 00:03:27 v #5390 > > 00:03:27 v #5391 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #5392 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:27 v #5393 > > │ ### ref_cell │ 00:03:27 v #5394 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:27 v #5395 > > 00:03:27 v #5396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #5397 > > nominal ref_cell t = 00:03:27 v #5398 > > `( 00:03:27 v #5399 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:27 v #5400 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype 00:03:27 v #5401 > > std_cell_RefCell<'T> = class end" 00:03:27 v #5402 > > $'' : $'std_cell_RefCell<`t>' 00:03:27 v #5403 > > ) 00:03:28 v #5404 > > 00:03:28 v #5405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #5406 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:28 v #5407 > > │ ### cell_ref │ 00:03:28 v #5408 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:28 v #5409 > > 00:03:28 v #5410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #5411 > > nominal cell_ref t = 00:03:28 v #5412 > > `( 00:03:28 v #5413 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:28 v #5414 > > Fable.Core.Emit(\"std::cell::Ref<$0>\")>]]\n#endif\ntype std_cell_Ref<'T> = 00:03:28 v #5415 > > class end" 00:03:28 v #5416 > > $'' : $'std_cell_Ref<`t>' 00:03:28 v #5417 > > ) 00:03:28 v #5418 > > 00:03:28 v #5419 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #5420 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:28 v #5421 > > │ ### rc │ 00:03:28 v #5422 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:28 v #5423 > > 00:03:28 v #5424 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #5425 > > nominal rc t = 00:03:28 v #5426 > > `( 00:03:28 v #5427 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:28 v #5428 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end" 00:03:28 v #5429 > > $'' : $'std_rc_Rc<`t>' 00:03:28 v #5430 > > ) 00:03:28 v #5431 > > 00:03:28 v #5432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #5433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:28 v #5434 > > │ ### lifetime_ref │ 00:03:28 v #5435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:28 v #5436 > > 00:03:28 v #5437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #5438 > > nominal lifetime_ref (t : * -> *) u = 00:03:28 v #5439 > > `( 00:03:28 v #5440 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:28 v #5441 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end" 00:03:28 v #5442 > > $'' : $'LifetimeRef<`(t u)>' 00:03:28 v #5443 > > ) 00:03:29 v #5444 > > 00:03:29 v #5445 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #5446 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:29 v #5447 > > │ ### lifetime_join │ 00:03:29 v #5448 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:29 v #5449 > > 00:03:29 v #5450 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #5451 > > nominal lifetime_join t u = 00:03:29 v #5452 > > `( 00:03:29 v #5453 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 + 00:03:29 v #5454 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end" 00:03:29 v #5455 > > $'' : $'LifetimeJoin<`t, `u>' 00:03:29 v #5456 > > ) 00:03:29 v #5457 > > 00:03:29 v #5458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #5459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:29 v #5460 > > │ ### lifetime │ 00:03:29 v #5461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:29 v #5462 > > 00:03:29 v #5463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #5464 > > nominal lifetime t u = 00:03:29 v #5465 > > `( 00:03:29 v #5466 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 00:03:29 v #5467 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end" 00:03:29 v #5468 > > $'' : $'Lifetime<`t, `u>' 00:03:29 v #5469 > > ) 00:03:30 v #5470 > > 00:03:30 v #5471 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #5472 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:30 v #5473 > > │ ### static_lifetime │ 00:03:30 v #5474 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:30 v #5475 > > 00:03:30 v #5476 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #5477 > > nominal static_lifetime = 00:03:30 v #5478 > > `( 00:03:30 v #5479 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:30 v #5480 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end" 00:03:30 v #5481 > > $'' : $'StaticLifetime' 00:03:30 v #5482 > > ) 00:03:30 v #5483 > > 00:03:30 v #5484 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #5485 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:30 v #5486 > > │ ### ref │ 00:03:30 v #5487 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:30 v #5488 > > 00:03:30 v #5489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #5490 > > nominal ref t = 00:03:30 v #5491 > > `( 00:03:30 v #5492 > > backend_switch `(()) `({}) { 00:03:30 v #5493 > > Fsharp = 00:03:30 v #5494 > > (fun () => 00:03:30 v #5495 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:30 v #5496 > > Fable.Core.Emit(\"&$0\")>]]\ntype Ref<'T> = class end\n#else\ntype Ref<'T> = 00:03:30 v #5497 > > 'T\n#endif\n" 00:03:30 v #5498 > > ) : () -> () 00:03:30 v #5499 > > } 00:03:30 v #5500 > > $'' : $'Ref<`t>' 00:03:30 v #5501 > > ) 00:03:31 v #5502 > > 00:03:31 v #5503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #5504 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:31 v #5505 > > │ ### static_ref │ 00:03:31 v #5506 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:31 v #5507 > > 00:03:31 v #5508 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #5509 > > nominal static_ref t = ref (lifetime static_lifetime t) 00:03:31 v #5510 > > 00:03:31 v #5511 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #5512 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:31 v #5513 > > │ ### weak_rc │ 00:03:31 v #5514 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:31 v #5515 > > 00:03:31 v #5516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #5517 > > nominal weak_rc t = 00:03:31 v #5518 > > `( 00:03:31 v #5519 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:31 v #5520 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class 00:03:31 v #5521 > > end" 00:03:31 v #5522 > > $'' : $'std_rc_Weak<`t>' 00:03:31 v #5523 > > ) 00:03:32 v #5524 > > 00:03:32 v #5525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:32 v #5526 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:32 v #5527 > > │ ### box │ 00:03:32 v #5528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:32 v #5529 > > 00:03:32 v #5530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:32 v #5531 > > nominal box t = 00:03:32 v #5532 > > `( 00:03:32 v #5533 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:32 v #5534 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end" 00:03:32 v #5535 > > $'' : $'Box<`t>' 00:03:32 v #5536 > > ) 00:03:32 v #5537 > > 00:03:32 v #5538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:32 v #5539 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:32 v #5540 > > │ ### mut_cell │ 00:03:32 v #5541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:32 v #5542 > > 00:03:32 v #5543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:32 v #5544 > > nominal mut_cell t = 00:03:32 v #5545 > > `( 00:03:32 v #5546 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:32 v #5547 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end" 00:03:32 v #5548 > > $'' : $'MutCell<`t>' 00:03:32 v #5549 > > ) 00:03:32 v #5550 > > 00:03:32 v #5551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:32 v #5552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:32 v #5553 > > │ ### pin │ 00:03:32 v #5554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:32 v #5555 > > 00:03:32 v #5556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:32 v #5557 > > nominal pin t = 00:03:32 v #5558 > > `( 00:03:32 v #5559 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:32 v #5560 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class 00:03:32 v #5561 > > end" 00:03:32 v #5562 > > $'' : $'std_pin_Pin<`t>' 00:03:32 v #5563 > > ) 00:03:33 v #5564 > > 00:03:33 v #5565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:33 v #5566 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:33 v #5567 > > │ ### dyn' │ 00:03:33 v #5568 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:33 v #5569 > > 00:03:33 v #5570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:33 v #5571 > > nominal dyn' t = 00:03:33 v #5572 > > `( 00:03:33 v #5573 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn 00:03:33 v #5574 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end" 00:03:33 v #5575 > > $'' : $'Dyn<`t>' 00:03:33 v #5576 > > ) 00:03:33 v #5577 > > 00:03:33 v #5578 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:33 v #5579 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:33 v #5580 > > │ ### fn' │ 00:03:33 v #5581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:33 v #5582 > > 00:03:33 v #5583 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:33 v #5584 > > nominal fn' t = 00:03:33 v #5585 > > `( 00:03:33 v #5586 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn() 00:03:33 v #5587 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end" 00:03:33 v #5588 > > $'' : $'Fn<`t>' 00:03:33 v #5589 > > ) 00:03:34 v #5590 > > 00:03:34 v #5591 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:34 v #5592 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:34 v #5593 > > │ ### action_fn │ 00:03:34 v #5594 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:34 v #5595 > > 00:03:34 v #5596 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:34 v #5597 > > nominal action_fn t = 00:03:34 v #5598 > > `( 00:03:34 v #5599 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:34 v #5600 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end" 00:03:34 v #5601 > > $'' : $'ActionFn<`t>' 00:03:34 v #5602 > > ) 00:03:34 v #5603 > > 00:03:34 v #5604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:34 v #5605 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:34 v #5606 > > │ ### action_fn2 │ 00:03:34 v #5607 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:34 v #5608 > > 00:03:34 v #5609 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:34 v #5610 > > nominal action_fn2 t u = 00:03:34 v #5611 > > `( 00:03:34 v #5612 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:34 v #5613 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end" 00:03:34 v #5614 > > $'' : $'ActionFn2<`t, `u>' 00:03:34 v #5615 > > ) 00:03:35 v #5616 > > 00:03:35 v #5617 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:35 v #5618 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:35 v #5619 > > │ ### fn_once │ 00:03:35 v #5620 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:35 v #5621 > > 00:03:35 v #5622 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:35 v #5623 > > nominal fn_once t = 00:03:35 v #5624 > > `( 00:03:35 v #5625 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:35 v #5626 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end" 00:03:35 v #5627 > > $'' : $'FnOnce<`t>' 00:03:35 v #5628 > > ) 00:03:35 v #5629 > > 00:03:35 v #5630 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:35 v #5631 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:35 v #5632 > > │ ### fn_unit │ 00:03:35 v #5633 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:35 v #5634 > > 00:03:35 v #5635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:35 v #5636 > > nominal fn_unit = 00:03:35 v #5637 > > `( 00:03:35 v #5638 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:35 v #5639 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end" 00:03:35 v #5640 > > $'' : $'FnUnit' 00:03:35 v #5641 > > ) 00:03:35 v #5642 > > 00:03:35 v #5643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:35 v #5644 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:35 v #5645 > > │ ### func0 │ 00:03:35 v #5646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:35 v #5647 > > 00:03:35 v #5648 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:35 v #5649 > > nominal func0 t = 00:03:35 v #5650 > > `( 00:03:35 v #5651 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:35 v #5652 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end" 00:03:35 v #5653 > > $'' : $'Func0<`t>' 00:03:35 v #5654 > > ) 00:03:36 v #5655 > > 00:03:36 v #5656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:36 v #5657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:36 v #5658 > > │ ### func1 │ 00:03:36 v #5659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:36 v #5660 > > 00:03:36 v #5661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:36 v #5662 > > nominal func1 t u = 00:03:36 v #5663 > > `( 00:03:36 v #5664 > > typecase t with 00:03:36 v #5665 > > | () => `func0 `u 00:03:36 v #5666 > > | _ => 00:03:36 v #5667 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:36 v #5668 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end" 00:03:36 v #5669 > > $'' : $'Func0<`t, `u>' 00:03:36 v #5670 > > ) 00:03:36 v #5671 > > 00:03:36 v #5672 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:36 v #5673 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:36 v #5674 > > │ ### impl │ 00:03:36 v #5675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:36 v #5676 > > 00:03:36 v #5677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:36 v #5678 > > nominal impl t = 00:03:36 v #5679 > > `( 00:03:36 v #5680 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl 00:03:36 v #5681 > > $0\")>]]\n#endif\ntype Impl<'T> = class end" 00:03:36 v #5682 > > $'' : $'Impl<`t>' 00:03:36 v #5683 > > ) 00:03:37 v #5684 > > 00:03:37 v #5685 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:37 v #5686 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:37 v #5687 > > │ ### mut' │ 00:03:37 v #5688 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:37 v #5689 > > 00:03:37 v #5690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:37 v #5691 > > nominal mut' t = 00:03:37 v #5692 > > `( 00:03:37 v #5693 > > backend_switch `(()) `({}) { 00:03:37 v #5694 > > Fsharp = 00:03:37 v #5695 > > (fun () => 00:03:37 v #5696 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:37 v #5697 > > Fable.Core.Emit(\"mut $0\")>]]\n#endif\ntype Mut<'T> = class end" 00:03:37 v #5698 > > ) : () -> () 00:03:37 v #5699 > > } 00:03:37 v #5700 > > $'' : $'Mut<`t>' 00:03:37 v #5701 > > ) 00:03:37 v #5702 > > 00:03:37 v #5703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:37 v #5704 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:37 v #5705 > > │ ### ref_mut │ 00:03:37 v #5706 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:37 v #5707 > > 00:03:37 v #5708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:37 v #5709 > > nominal ref_mut t = 00:03:37 v #5710 > > `( 00:03:37 v #5711 > > backend_switch `(()) `({}) { 00:03:37 v #5712 > > Fsharp = 00:03:37 v #5713 > > (fun () => 00:03:37 v #5714 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:37 v #5715 > > Fable.Core.Emit(\"std::cell::RefMut<$0>\")>]]\n#endif\ntype std_cell_RefMut<'T> 00:03:37 v #5716 > > = class end" 00:03:37 v #5717 > > ) : () -> () 00:03:37 v #5718 > > } 00:03:37 v #5719 > > $'' : $'std_cell_RefMut<`t>' 00:03:37 v #5720 > > ) 00:03:38 v #5721 > > 00:03:38 v #5722 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:38 v #5723 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:38 v #5724 > > │ ### send │ 00:03:38 v #5725 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:38 v #5726 > > 00:03:38 v #5727 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:38 v #5728 > > nominal send t = 00:03:38 v #5729 > > `( 00:03:38 v #5730 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:38 v #5731 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end" 00:03:38 v #5732 > > $'' : lifetime_join t $'Send<`t>' 00:03:38 v #5733 > > ) 00:03:38 v #5734 > > 00:03:38 v #5735 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:38 v #5736 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:38 v #5737 > > │ ### emit_expr │ 00:03:38 v #5738 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:38 v #5739 > > 00:03:38 v #5740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:38 v #5741 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:03:38 v #5742 > > $'Fable.Core.RustInterop.emitRustExpr !args !code ' 00:03:38 v #5743 > > 00:03:38 v #5744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:38 v #5745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:38 v #5746 > > │ ### (~!\\) │ 00:03:38 v #5747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:38 v #5748 > > 00:03:38 v #5749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:38 v #5750 > > inl (~!\) forall t. (code : string) : t = 00:03:38 v #5751 > > emit_expr () code 00:03:39 v #5752 > > 00:03:39 v #5753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:39 v #5754 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:39 v #5755 > > │ ### (~!\\\\) │ 00:03:39 v #5756 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:39 v #5757 > > 00:03:39 v #5758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:39 v #5759 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:03:39 v #5760 > > emit_expr args code 00:03:39 v #5761 > > 00:03:39 v #5762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:39 v #5763 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:39 v #5764 > > │ ### ptr │ 00:03:39 v #5765 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:39 v #5766 > > 00:03:39 v #5767 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:39 v #5768 > > nominal ptr t = 00:03:39 v #5769 > > `( 00:03:39 v #5770 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:39 v #5771 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end" 00:03:39 v #5772 > > $'' : $'Ptr<`t>' 00:03:39 v #5773 > > ) 00:03:40 v #5774 > > 00:03:40 v #5775 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:40 v #5776 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:40 v #5777 > > │ ### ptr_read │ 00:03:40 v #5778 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:40 v #5779 > > 00:03:40 v #5780 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:40 v #5781 > > inl ptr_read forall t. (x : ptr t) : t = 00:03:40 v #5782 > > !\\(x, $'"std::ptr::read($0)"') 00:03:40 v #5783 > > 00:03:40 v #5784 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:40 v #5785 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:40 v #5786 > > │ ### u128 │ 00:03:40 v #5787 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:40 v #5788 > > 00:03:40 v #5789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:40 v #5790 > > nominal u128 = 00:03:40 v #5791 > > `( 00:03:40 v #5792 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:40 v #5793 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end" 00:03:40 v #5794 > > $'' : $'u128' 00:03:40 v #5795 > > ) 00:03:41 v #5796 > > 00:03:41 v #5797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:41 v #5798 > > inl u128 forall t. (x : t) : u128 = 00:03:41 v #5799 > > !\\(x, $'"$0 as u128"') 00:03:41 v #5800 > > 00:03:41 v #5801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:41 v #5802 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:41 v #5803 > > │ ### f64 │ 00:03:41 v #5804 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:41 v #5805 > > 00:03:41 v #5806 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:41 v #5807 > > inl f64 forall t. (x : t) : f64 = 00:03:41 v #5808 > > !\\(x, $'"$0 as f64"') 00:03:41 v #5809 > > 00:03:41 v #5810 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:41 v #5811 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:41 v #5812 > > │ ### unwrap_0 │ 00:03:41 v #5813 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:41 v #5814 > > 00:03:41 v #5815 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:41 v #5816 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u = 00:03:41 v #5817 > > !\\(x, $'"$0.0"') 00:03:42 v #5818 > > 00:03:42 v #5819 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:42 v #5820 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:42 v #5821 > > │ ### unwrap_0_ref │ 00:03:42 v #5822 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:42 v #5823 > > 00:03:42 v #5824 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:42 v #5825 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u = 00:03:42 v #5826 > > !\\(x, $'"&$0.0"') 00:03:42 v #5827 > > 00:03:42 v #5828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:42 v #5829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:42 v #5830 > > │ ### len │ 00:03:42 v #5831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:42 v #5832 > > 00:03:42 v #5833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:42 v #5834 > > inl len forall t u {uint; int}. (x : t) : u = 00:03:42 v #5835 > > !\($'$"!x.len()"') 00:03:43 v #5836 > > 00:03:43 v #5837 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #5838 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:43 v #5839 > > │ ### len' │ 00:03:43 v #5840 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:43 v #5841 > > 00:03:43 v #5842 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #5843 > > inl len' forall t u {uint; int}. (x : t) : u = 00:03:43 v #5844 > > !\\(x, $'$"$0.len()"') 00:03:43 v #5845 > > 00:03:43 v #5846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #5847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:43 v #5848 > > │ ### emit │ 00:03:43 v #5849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:43 v #5850 > > 00:03:43 v #5851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #5852 > > inl emit forall t. (x : t) : t = 00:03:43 v #5853 > > !\\(x, $'"$0"') 00:03:44 v #5854 > > 00:03:44 v #5855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #5856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:44 v #5857 > > │ ### emit' │ 00:03:44 v #5858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:44 v #5859 > > 00:03:44 v #5860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #5861 > > inl emit' forall t. (x : t) : t = 00:03:44 v #5862 > > (!\\(x, $'$"true; let !x = $0"') : bool) |> ignore 00:03:44 v #5863 > > x 00:03:44 v #5864 > > 00:03:44 v #5865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #5866 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:44 v #5867 > > │ ### clone │ 00:03:44 v #5868 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:44 v #5869 > > 00:03:44 v #5870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #5871 > > inl clone forall t. (x : t) : t = 00:03:44 v #5872 > > !\\(x, $'"$0.clone()"') 00:03:44 v #5873 > > 00:03:44 v #5874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #5875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:44 v #5876 > > │ ### dbg │ 00:03:44 v #5877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:44 v #5878 > > 00:03:44 v #5879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #5880 > > inl dbg forall t. (x : t) : t = 00:03:44 v #5881 > > !\\(x, $'"dbg\!($0)"') 00:03:45 v #5882 > > 00:03:45 v #5883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #5884 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:45 v #5885 > > │ ### new_box │ 00:03:45 v #5886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:45 v #5887 > > 00:03:45 v #5888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #5889 > > inl new_box forall t. (x : t) : box t = 00:03:45 v #5890 > > !\\(x, $'"Box::new($0)"') 00:03:45 v #5891 > > 00:03:45 v #5892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #5893 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:45 v #5894 > > │ ### new_rc │ 00:03:45 v #5895 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:45 v #5896 > > 00:03:45 v #5897 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #5898 > > inl new_rc forall t. (x : t) : rc t = 00:03:45 v #5899 > > !\\(x, $'"std::rc::Rc::new($0)"') 00:03:46 v #5900 > > 00:03:46 v #5901 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #5902 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:46 v #5903 > > │ ### rc_clone │ 00:03:46 v #5904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:46 v #5905 > > 00:03:46 v #5906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #5907 > > inl rc_clone forall t. (x : rc t) : rc t = 00:03:46 v #5908 > > !\\(x, $'"std::rc::Rc::clone(&$0)"') 00:03:46 v #5909 > > 00:03:46 v #5910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #5911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:46 v #5912 > > │ ### rc_unwrap_or_clone │ 00:03:46 v #5913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:46 v #5914 > > 00:03:46 v #5915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #5916 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t = 00:03:46 v #5917 > > !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"') 00:03:47 v #5918 > > 00:03:47 v #5919 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #5920 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:47 v #5921 > > │ ### rc_downgrade │ 00:03:47 v #5922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:47 v #5923 > > 00:03:47 v #5924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #5925 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t = 00:03:47 v #5926 > > !\\(x, $'"std::rc::Rc::downgrade(&$0)"') 00:03:47 v #5927 > > 00:03:47 v #5928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #5929 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:47 v #5930 > > │ ### new_ref_cell │ 00:03:47 v #5931 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:47 v #5932 > > 00:03:47 v #5933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #5934 > > inl new_ref_cell forall t. (x : t) : ref_cell t = 00:03:47 v #5935 > > !\($'"std::cell::RefCell::new(!x)"') 00:03:47 v #5936 > > 00:03:47 v #5937 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #5938 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:47 v #5939 > > │ ### ref_cell_borrow │ 00:03:47 v #5940 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:47 v #5941 > > 00:03:47 v #5942 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #5943 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : cell_ref t = 00:03:47 v #5944 > > !\\(x, $'"std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"') 00:03:48 v #5945 > > 00:03:48 v #5946 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:48 v #5947 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:48 v #5948 > > │ ### ref_cell_borrow_mut │ 00:03:48 v #5949 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:48 v #5950 > > 00:03:48 v #5951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:48 v #5952 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t = 00:03:48 v #5953 > > !\\(x, $'"std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"') 00:03:48 v #5954 > > 00:03:48 v #5955 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:48 v #5956 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:48 v #5957 > > │ ### ref_leak │ 00:03:48 v #5958 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:48 v #5959 > > 00:03:48 v #5960 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:48 v #5961 > > inl ref_leak forall t. (x : cell_ref t) : ref t = 00:03:48 v #5962 > > !\\(x, $'"std::cell::Ref::leak($0)"') 00:03:49 v #5963 > > 00:03:49 v #5964 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:49 v #5965 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:49 v #5966 > > │ ### to_mut │ 00:03:49 v #5967 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:49 v #5968 > > 00:03:49 v #5969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:49 v #5970 > > inl to_mut forall t. (x : t) : () = 00:03:49 v #5971 > > (!\($'"true; // 1"') : bool) |> ignore 00:03:49 v #5972 > > !\($'"let mut !x = !x"') : () 00:03:49 v #5973 > > // (!\($'"true; !x"') : bool) |> ignore 00:03:49 v #5974 > > // !\($'"!x"') 00:03:49 v #5975 > > // inl result = !\($'"!x"') : mut' t 00:03:49 v #5976 > > // !\($'"!result"') 00:03:49 v #5977 > > // inl result = !\($'"*/ // a"') : mut' t 00:03:49 v #5978 > > // inl result = !\($'"!x"') : mut' t 00:03:49 v #5979 > > // result |> fun x => $'!x |> unbox // b' 00:03:49 v #5980 > > 00:03:49 v #5981 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:49 v #5982 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:49 v #5983 > > │ ### to_ref │ 00:03:49 v #5984 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:49 v #5985 > > 00:03:49 v #5986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:49 v #5987 > > inl to_ref forall t. (x : t) : ref t = 00:03:49 v #5988 > > !\\(x, $'"&$0"') 00:03:50 v #5989 > > 00:03:50 v #5990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:50 v #5991 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:50 v #5992 > > │ ### to_ref_mut │ 00:03:50 v #5993 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:50 v #5994 > > 00:03:50 v #5995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:50 v #5996 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) = 00:03:50 v #5997 > > x |> to_mut 00:03:50 v #5998 > > !\\(x, $'"&mut $0"') 00:03:50 v #5999 > > 00:03:50 v #6000 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:50 v #6001 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:50 v #6002 > > │ ### to_ref_mut' │ 00:03:50 v #6003 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:50 v #6004 > > 00:03:50 v #6005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:50 v #6006 > > inl to_ref_mut' forall t. (x : ref_mut (ref (mut' t))) : ref (mut' t) = 00:03:50 v #6007 > > x |> to_mut 00:03:50 v #6008 > > !\\(x, $'"&mut $0"') 00:03:51 v #6009 > > 00:03:51 v #6010 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:51 v #6011 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:51 v #6012 > > │ ### ref_cell_borrow_mut' │ 00:03:51 v #6013 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 v #6014 > > 00:03:51 v #6015 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:51 v #6016 > > inl ref_cell_borrow_mut' forall t. (x : rc (ref_cell (ref (mut' t)))) : ref 00:03:51 v #6017 > > (mut' t) = 00:03:51 v #6018 > > inl x = x |> rc_clone 00:03:51 v #6019 > > inl x : ref_mut (ref (mut' t)) = !\\(x, 00:03:51 v #6020 > > $'"std::cell::RefCell::borrow_mut(&$0)"') 00:03:51 v #6021 > > x |> to_ref_mut' 00:03:51 v #6022 > > 00:03:51 v #6023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:51 v #6024 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:51 v #6025 > > │ ### ref_map │ 00:03:51 v #6026 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 v #6027 > > 00:03:51 v #6028 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:51 v #6029 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u = 00:03:51 v #6030 > > !\($'"!fn(!x)"') 00:03:51 v #6031 > > 00:03:51 v #6032 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:51 v #6033 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:51 v #6034 > > │ ### ref_eval │ 00:03:51 v #6035 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 v #6036 > > 00:03:51 v #6037 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:51 v #6038 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u = 00:03:51 v #6039 > > !\\(fn, $'"$0(!ref.clone())"') 00:03:52 v #6040 > > 00:03:52 v #6041 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:52 v #6042 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:52 v #6043 > > │ ### cow_as_ref │ 00:03:52 v #6044 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:52 v #6045 > > 00:03:52 v #6046 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:52 v #6047 > > inl cow_as_ref forall t. (s : cow t) : ref t = 00:03:52 v #6048 > > !\\(s, $'"$0.as_ref()"') 00:03:52 v #6049 > > 00:03:52 v #6050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:52 v #6051 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:52 v #6052 > > │ ### from_mut │ 00:03:52 v #6053 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:52 v #6054 > > 00:03:52 v #6055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:52 v #6056 > > inl from_mut forall t. (x : mut' t) : t = 00:03:52 v #6057 > > !\\(x, $'"$0"') 00:03:53 v #6058 > > 00:03:53 v #6059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:53 v #6060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:53 v #6061 > > │ ### box_fn │ 00:03:53 v #6062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:53 v #6063 > > 00:03:53 v #6064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:53 v #6065 > > inl box_fn forall t. (x : () -> ()) : box t = 00:03:53 v #6066 > > inl x = join x 00:03:53 v #6067 > > !\($'"Box::new(move || !x())"') 00:03:53 v #6068 > > 00:03:53 v #6069 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:53 v #6070 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:53 v #6071 > > │ ### box_pin │ 00:03:53 v #6072 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:53 v #6073 > > 00:03:53 v #6074 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:53 v #6075 > > inl box_pin forall t. (x : t) : pin (box t) = 00:03:53 v #6076 > > !\\(x, $'"Box::pin($0)"') 00:03:54 v #6077 > > 00:03:54 v #6078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:54 v #6079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:54 v #6080 > > │ ### deref │ 00:03:54 v #6081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 v #6082 > > 00:03:54 v #6083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:54 v #6084 > > inl deref forall t. (ref : ref t) : t = 00:03:54 v #6085 > > !\\(ref, $'"*$0"') 00:03:54 v #6086 > > 00:03:54 v #6087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:54 v #6088 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:54 v #6089 > > │ ### deref_mut │ 00:03:54 v #6090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 v #6091 > > 00:03:54 v #6092 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:54 v #6093 > > inl deref_mut forall t. (x : ref (mut' t)) : t = 00:03:54 v #6094 > > !\\(x, $'"*$0"') 00:03:54 v #6095 > > 00:03:54 v #6096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:54 v #6097 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:54 v #6098 > > │ ### clone_deref │ 00:03:54 v #6099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 v #6100 > > 00:03:54 v #6101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:54 v #6102 > > inl clone_deref forall t. (ref : ref t) : t = 00:03:54 v #6103 > > !\\(ref, $'"$0.clone()"') 00:03:55 v #6104 > > 00:03:55 v #6105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:55 v #6106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:55 v #6107 > > │ ### from_ref │ 00:03:55 v #6108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:55 v #6109 > > 00:03:55 v #6110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:55 v #6111 > > inl from_ref forall t. (ref : ref t) : t = 00:03:55 v #6112 > > !\($'"!ref"') 00:03:55 v #6113 > > 00:03:55 v #6114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:55 v #6115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:55 v #6116 > > │ ### from_ref_mut │ 00:03:55 v #6117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:55 v #6118 > > 00:03:55 v #6119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:55 v #6120 > > inl from_ref_mut forall t. (ref : ref (mut' t)) : t = 00:03:55 v #6121 > > !\($'"!ref"') 00:03:56 v #6122 > > 00:03:56 v #6123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:56 v #6124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:56 v #6125 > > │ ### reref │ 00:03:56 v #6126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:56 v #6127 > > 00:03:56 v #6128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:56 v #6129 > > inl reref forall t (u : * -> *). (x : ref (u t)) : ref t = 00:03:56 v #6130 > > !\($'$"&*!x"') 00:03:56 v #6131 > > 00:03:56 v #6132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:56 v #6133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:56 v #6134 > > │ ### into │ 00:03:56 v #6135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:56 v #6136 > > 00:03:56 v #6137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:56 v #6138 > > inl into forall t u. (x : t) : u = 00:03:56 v #6139 > > !\($'"!x.into()"') 00:03:57 v #6140 > > 00:03:57 v #6141 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:57 v #6142 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:57 v #6143 > > │ ### ops_deref │ 00:03:57 v #6144 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:57 v #6145 > > 00:03:57 v #6146 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #6147 > > inl ops_deref forall t. (ref : t) : t = 00:03:57 v #6148 > > !\\(ref, $'"core::ops::Deref::deref(&$0)"') 00:03:57 v #6149 > > 00:03:57 v #6150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:57 v #6151 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:57 v #6152 > > │ ### func0_eval │ 00:03:57 v #6153 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:57 v #6154 > > 00:03:57 v #6155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #6156 > > inl func0_eval forall t. (x : func0 t) : t = 00:03:57 v #6157 > > !\\(x, $'"$0()"') 00:03:58 v #6158 > > 00:03:58 v #6159 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 v #6160 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 v #6161 > > │ ### func0_move │ 00:03:58 v #6162 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 v #6163 > > 00:03:58 v #6164 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 v #6165 > > inl func0_move forall t. (fn : func0 t) : t = 00:03:58 v #6166 > > inl fn = join fn 00:03:58 v #6167 > > !\($'"(move || !fn())()"') 00:03:58 v #6168 > > 00:03:58 v #6169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 v #6170 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 v #6171 > > │ ### func1_move │ 00:03:58 v #6172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 v #6173 > > 00:03:58 v #6174 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 v #6175 > > inl func1_move forall t u. (x : t) (fn : func1 t u) : u = 00:03:58 v #6176 > > inl fn = join fn 00:03:58 v #6177 > > inl is_unit : bool = 00:03:58 v #6178 > > real 00:03:58 v #6179 > > typecase t with 00:03:58 v #6180 > > | () => true 00:03:58 v #6181 > > | _ => false 00:03:58 v #6182 > > inl result = 00:03:58 v #6183 > > if is_unit 00:03:58 v #6184 > > then !\($'"(move || !fn())()"') : u 00:03:58 v #6185 > > else 00:03:58 v #6186 > > $'let func1_move_x = !x //' : () 00:03:58 v #6187 > > inl func1_move_x : infer = $'func1_move_x' 00:03:58 v #6188 > > !\\(func1_move_x, $'"(move |x| !fn(x))($0)"') : u 00:03:58 v #6189 > > result 00:03:58 v #6190 > > 00:03:58 v #6191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 v #6192 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 v #6193 > > │ ### func0_from │ 00:03:58 v #6194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 v #6195 > > 00:03:58 v #6196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 v #6197 > > inl func0_from forall t. (fn : () -> t) : func0 t = 00:03:58 v #6198 > > inl result' : unit = $'()' 00:03:58 v #6199 > > (!\($'$"true; let _func0_from_!result' = Func0::from(move || {{ //"') : 00:03:58 v #6200 > > bool) |> ignore 00:03:58 v #6201 > > inl is_unit : bool = 00:03:58 v #6202 > > real 00:03:58 v #6203 > > typecase t with 00:03:58 v #6204 > > | () => true 00:03:58 v #6205 > > | _ => false 00:03:58 v #6206 > > inl result = 00:03:58 v #6207 > > if is_unit |> not 00:03:58 v #6208 > > then fn () 00:03:58 v #6209 > > else 00:03:58 v #6210 > > (fn >> ignore) () 00:03:58 v #6211 > > // (!\($'$"true; // rust.func0_from"') : bool) |> ignore 00:03:58 v #6212 > > $'// rust.func0_from / is_unit' 00:03:58 v #6213 > > if is_unit 00:03:58 v #6214 > > then (!\($'$"true; /*"') : bool) |> ignore 00:03:58 v #6215 > > else (!\\(result, $'$"true; $0 /*"') : bool) |> ignore 00:03:58 v #6216 > > (!\($'$"*/ }}); //"') : bool) |> ignore 00:03:58 v #6217 > > !\($'$"_func0_from_!result'"') 00:03:59 v #6218 > > 00:03:59 v #6219 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 v #6220 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 v #6221 > > │ ### func1_from │ 00:03:59 v #6222 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 v #6223 > > 00:03:59 v #6224 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 v #6225 > > inl func1_from forall t u. (fn : t -> u) : func1 t u = 00:03:59 v #6226 > > inl result' : unit = $'()' 00:03:59 v #6227 > > inl is_unit : bool = 00:03:59 v #6228 > > real 00:03:59 v #6229 > > typecase u with 00:03:59 v #6230 > > | () => true 00:03:59 v #6231 > > | _ => false 00:03:59 v #6232 > > inl is_unit' : bool = 00:03:59 v #6233 > > real 00:03:59 v #6234 > > typecase t with 00:03:59 v #6235 > > | () => true 00:03:59 v #6236 > > | _ => false 00:03:59 v #6237 > > if is_unit 00:03:59 v #6238 > > then (!\($'$"true; let _func1_from_!result' = Func0::from(move || {{ //"') : 00:03:59 v #6239 > > bool) |> ignore 00:03:59 v #6240 > > else (!\($'$"true; let _func1_from_!result' = Func1::from(move |value| {{ 00:03:59 v #6241 > > //"') : bool) |> ignore 00:03:59 v #6242 > > 00:03:59 v #6243 > > inl result = 00:03:59 v #6244 > > if is_unit' 00:03:59 v #6245 > > then !\($'$"()"') 00:03:59 v #6246 > > else !\($'$"value"') 00:03:59 v #6247 > > |> fn 00:03:59 v #6248 > > 00:03:59 v #6249 > > if is_unit 00:03:59 v #6250 > > then (!\($'$"true; /*"') : bool) |> ignore 00:03:59 v #6251 > > else 00:03:59 v #6252 > > $'let func1_from_result = !result //' : () 00:03:59 v #6253 > > inl func1_from_result : infer = $'func1_from_result' 00:03:59 v #6254 > > (!\\(func1_from_result, $'$"true; $0 /*"') : bool) |> ignore 00:03:59 v #6255 > > (!\($'$"*/ }}); //"') : bool) |> ignore 00:03:59 v #6256 > > !\($'$"_func1_from_!result'"') 00:03:59 v #6257 > > 00:03:59 v #6258 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 v #6259 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 v #6260 > > │ ### new_func0 │ 00:03:59 v #6261 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 v #6262 > > 00:03:59 v #6263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 v #6264 > > inl new_func0 forall t. (fn : () -> t) : func0 t = 00:03:59 v #6265 > > !\\(fn, $'"Func0::new(|| $0())"') 00:04:00 v #6266 > > 00:04:00 v #6267 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 v #6268 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 v #6269 > > │ ### move │ 00:04:00 v #6270 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 v #6271 > > 00:04:00 v #6272 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 v #6273 > > inl move forall t. (fn : () -> t) : func0 t = 00:04:00 v #6274 > > !\\(fn, $'"Func0::new(move || $0())"') 00:04:00 v #6275 > > 00:04:00 v #6276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 v #6277 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 v #6278 > > │ ### to_static_ref_unbox │ 00:04:00 v #6279 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 v #6280 > > 00:04:00 v #6281 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 v #6282 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t = 00:04:00 v #6283 > > x |> unbox 00:04:00 v #6284 > > 00:04:00 v #6285 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 v #6286 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 v #6287 > > │ ### from_static_ref_unbox │ 00:04:00 v #6288 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 v #6289 > > 00:04:00 v #6290 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 v #6291 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t = 00:04:00 v #6292 > > x |> unbox 00:04:01 v #6293 > > 00:04:01 v #6294 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:01 v #6295 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:01 v #6296 > > │ ### box_leak │ 00:04:01 v #6297 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:01 v #6298 > > 00:04:01 v #6299 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:01 v #6300 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) = 00:04:01 v #6301 > > !\\(x, $'"Box::leak($0)"') 00:04:01 v #6302 > > 00:04:01 v #6303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:01 v #6304 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:01 v #6305 > > │ ### drop │ 00:04:01 v #6306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:01 v #6307 > > 00:04:01 v #6308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:01 v #6309 > > inl drop forall t. (x : t) : () = 00:04:01 v #6310 > > (!\\(x, $'"true; drop($0)"') : bool) |> ignore 00:04:02 v #6311 > > 00:04:02 v #6312 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:02 v #6313 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:02 v #6314 > > │ ### break │ 00:04:02 v #6315 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:02 v #6316 > > 00:04:02 v #6317 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:02 v #6318 > > inl break () : () = 00:04:02 v #6319 > > (!\($'"true; break"') : bool) |> ignore 00:04:02 v #6320 > > 00:04:02 v #6321 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:02 v #6322 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:02 v #6323 > > │ ### fix_closure' │ 00:04:02 v #6324 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:02 v #6325 > > 00:04:02 v #6326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:02 v #6327 > > inl fix_closure' forall t. (depth : u8 * u8) (x : t) : string = 00:04:02 v #6328 > > inl rec loop text (acc : string) n : string = 00:04:02 v #6329 > > if n <= 0 00:04:02 v #6330 > > then acc 00:04:02 v #6331 > > else loop text (acc +. text) (n - 1) 00:04:02 v #6332 > > inl a = depth |> fst |> loop "}" "" 00:04:02 v #6333 > > inl b = depth |> snd |> loop "{" "" 00:04:02 v #6334 > > inl is_unit : bool = 00:04:02 v #6335 > > real 00:04:02 v #6336 > > typecase t with 00:04:02 v #6337 > > | () => true 00:04:02 v #6338 > > | _ => false 00:04:02 v #6339 > > $'let x = !x //' : () 00:04:02 v #6340 > > inl x : infer = $'x' 00:04:02 v #6341 > > inl result' : unit = $'()' 00:04:02 v #6342 > > run_target_args (fun () => x) function 00:04:02 v #6343 > > | Rust _ => fun x => 00:04:02 v #6344 > > if is_unit 00:04:02 v #6345 > > then false 00:04:02 v #6346 > > else 00:04:02 v #6347 > > (!\\(x, $'$"true; let _fix_closure_!result' = $0"') : bool) |> 00:04:02 v #6348 > > ignore 00:04:02 v #6349 > > true 00:04:02 v #6350 > > | _ => fun x' => false 00:04:02 v #6351 > > |> ignore 00:04:02 v #6352 > > $'$"true; _fix_closure_!result' " + !a + "); " + !b + " 00:04:02 v #6353 > > rust.fix_closure\'"' 00:04:03 v #6354 > > 00:04:03 v #6355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:03 v #6356 > > //// test 00:04:03 v #6357 > > //// print_code 00:04:03 v #6358 > > 00:04:03 v #6359 > > fix_closure' (3, 2) 0i32 00:04:03 v #6360 > > |> _assert_eq "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'" 00:04:04 v #6361 > > 00:04:04 v #6362 > > ╭─[ 1.46s - stdout ]───────────────────────────────────────────────────────────╮ 00:04:04 v #6363 > > │ let rec method1 (v0 : bool) : bool = │ 00:04:04 v #6364 > > │ v0 │ 00:04:04 v #6365 > > │ and closure0 (v0 : string) () : unit = │ 00:04:04 v #6366 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:04:04 v #6367 > > │ v1 v0 │ 00:04:04 v #6368 > > │ and method0 () : unit = │ 00:04:04 v #6369 > > │ let v0 : string = "" │ 00:04:04 v #6370 > > │ let v1 : string = "}" │ 00:04:04 v #6371 > > │ let v2 : string = v0 + v1 │ 00:04:04 v #6372 > > │ let v3 : string = v2 + v1 │ 00:04:04 v #6373 > > │ let v4 : string = v3 + v1 │ 00:04:04 v #6374 > > │ let v5 : string = "{" │ 00:04:04 v #6375 > > │ let v6 : string = v0 + v5 │ 00:04:04 v #6376 > > │ let v7 : string = v6 + v5 │ 00:04:04 v #6377 > > │ let x = 0 // │ 00:04:04 v #6378 > > │ let v8 : _ = x │ 00:04:04 v #6379 > > │ let v9 : unit = () │ 00:04:04 v #6380 > > │ let v10 : unit = () │ 00:04:04 v #6381 > > │ │ 00:04:04 v #6382 > > │ #if FABLE_COMPILER || WASM || CONTRACT │ 00:04:04 v #6383 > > │ │ 00:04:04 v #6384 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT │ 00:04:04 v #6385 > > │ let v11 : string = $"true; let _fix_closure_v9 = $0" │ 00:04:04 v #6386 > > │ let v12 : bool = Fable.Core.RustInterop.emitRustExpr v8 v11 │ 00:04:04 v #6387 > > │ let _run_target_args'_v10 = true │ 00:04:04 v #6388 > > │ #endif │ 00:04:04 v #6389 > > │ #if FABLE_COMPILER_RUST && WASM │ 00:04:04 v #6390 > > │ let v13 : string = $"true; let _fix_closure_v9 = $0" │ 00:04:04 v #6391 > > │ let v14 : bool = Fable.Core.RustInterop.emitRustExpr v8 v13 │ 00:04:04 v #6392 > > │ let _run_target_args'_v10 = true │ 00:04:04 v #6393 > > │ #endif │ 00:04:04 v #6394 > > │ #if FABLE_COMPILER_RUST && CONTRACT │ 00:04:04 v #6395 > > │ let v15 : string = $"true; let _fix_closure_v9 = $0" │ 00:04:04 v #6396 > > │ let v16 : bool = Fable.Core.RustInterop.emitRustExpr v8 v15 │ 00:04:04 v #6397 > > │ let _run_target_args'_v10 = true │ 00:04:04 v #6398 > > │ #endif │ 00:04:04 v #6399 > > │ #if FABLE_COMPILER_TYPESCRIPT │ 00:04:04 v #6400 > > │ let _run_target_args'_v10 = false │ 00:04:04 v #6401 > > │ #endif │ 00:04:04 v #6402 > > │ #if FABLE_COMPILER_PYTHON │ 00:04:04 v #6403 > > │ let _run_target_args'_v10 = false │ 00:04:04 v #6404 > > │ #endif │ 00:04:04 v #6405 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && │ 00:04:04 v #6406 > > │ !FABLE_COMPILER_PYTHON │ 00:04:04 v #6407 > > │ let _run_target_args'_v10 = false │ 00:04:04 v #6408 > > │ #endif │ 00:04:04 v #6409 > > │ #else │ 00:04:04 v #6410 > > │ let _run_target_args'_v10 = false │ 00:04:04 v #6411 > > │ #endif │ 00:04:04 v #6412 > > │ let v17 : bool = _run_target_args'_v10 │ 00:04:04 v #6413 > > │ let v19 : string = $"true; _fix_closure_v9 " + v4 + "); " + v7 + " // │ 00:04:04 v #6414 > > │ rust.fix_closure'" │ 00:04:04 v #6415 > > │ let v20 : bool = v19 = "true; _fix_closure_v9 }}}); {{ // │ 00:04:04 v #6416 > > │ rust.fix_closure'" │ 00:04:04 v #6417 > > │ let v22 : bool = │ 00:04:04 v #6418 > > │ if v20 then │ 00:04:04 v #6419 > > │ true │ 00:04:04 v #6420 > > │ else │ 00:04:04 v #6421 > > │ method1(v20) │ 00:04:04 v #6422 > > │ let v23 : string = "__assert_eq" │ 00:04:04 v #6423 > > │ let v24 : string = "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'" │ 00:04:04 v #6424 > > │ let v25 : string = $"{v23} / actual: %A{v19} / expected: %A{v24}" │ 00:04:04 v #6425 > > │ let v28 : unit = () │ 00:04:04 v #6426 > > │ let v29 : (unit -> unit) = closure0(v25) │ 00:04:04 v #6427 > > │ let v30 : unit = (fun () -> v29 (); v28) () │ 00:04:04 v #6428 > > │ let v32 : bool = v22 = false │ 00:04:04 v #6429 > > │ if v32 then │ 00:04:04 v #6430 > > │ failwith<unit> v25 │ 00:04:04 v #6431 > > │ method0() │ 00:04:04 v #6432 > > │ │ 00:04:04 v #6433 > > │ __assert_eq / actual: "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'" │ 00:04:04 v #6434 > > │ / expected: "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'" │ 00:04:04 v #6435 > > │ │ 00:04:04 v #6436 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:04 v #6437 > > 00:04:04 v #6438 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:04 v #6439 > > //// test 00:04:04 v #6440 > > //// print_code 00:04:04 v #6441 > > 00:04:04 v #6442 > > fix_closure' (0, 0) () 00:04:04 v #6443 > > |> _assert_eq "true; _fix_closure_v1 ); // rust.fix_closure'" 00:04:05 v #6444 > > 00:04:05 v #6445 > > ╭─[ 429.95ms - stdout ]────────────────────────────────────────────────────────╮ 00:04:05 v #6446 > > │ let rec method1 (v0 : bool) : bool = │ 00:04:05 v #6447 > > │ v0 │ 00:04:05 v #6448 > > │ and closure0 (v0 : string) () : unit = │ 00:04:05 v #6449 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:04:05 v #6450 > > │ v1 v0 │ 00:04:05 v #6451 > > │ and method0 () : unit = │ 00:04:05 v #6452 > > │ let x = () // │ 00:04:05 v #6453 > > │ let v0 : _ = x │ 00:04:05 v #6454 > > │ let v1 : unit = () │ 00:04:05 v #6455 > > │ let v2 : unit = () │ 00:04:05 v #6456 > > │ │ 00:04:05 v #6457 > > │ #if FABLE_COMPILER || WASM || CONTRACT │ 00:04:05 v #6458 > > │ │ 00:04:05 v #6459 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT │ 00:04:05 v #6460 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6461 > > │ #endif │ 00:04:05 v #6462 > > │ #if FABLE_COMPILER_RUST && WASM │ 00:04:05 v #6463 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6464 > > │ #endif │ 00:04:05 v #6465 > > │ #if FABLE_COMPILER_RUST && CONTRACT │ 00:04:05 v #6466 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6467 > > │ #endif │ 00:04:05 v #6468 > > │ #if FABLE_COMPILER_TYPESCRIPT │ 00:04:05 v #6469 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6470 > > │ #endif │ 00:04:05 v #6471 > > │ #if FABLE_COMPILER_PYTHON │ 00:04:05 v #6472 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6473 > > │ #endif │ 00:04:05 v #6474 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && │ 00:04:05 v #6475 > > │ !FABLE_COMPILER_PYTHON │ 00:04:05 v #6476 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6477 > > │ #endif │ 00:04:05 v #6478 > > │ #else │ 00:04:05 v #6479 > > │ let _run_target_args'_v2 = false │ 00:04:05 v #6480 > > │ #endif │ 00:04:05 v #6481 > > │ let v3 : bool = _run_target_args'_v2 │ 00:04:05 v #6482 > > │ let v5 : string = "" │ 00:04:05 v #6483 > > │ let v6 : string = $"true; _fix_closure_v1 " + v5 + "); " + v5 + " // │ 00:04:05 v #6484 > > │ rust.fix_closure'" │ 00:04:05 v #6485 > > │ let v7 : bool = v6 = "true; _fix_closure_v1 ); // rust.fix_closure'" │ 00:04:05 v #6486 > > │ let v9 : bool = │ 00:04:05 v #6487 > > │ if v7 then │ 00:04:05 v #6488 > > │ true │ 00:04:05 v #6489 > > │ else │ 00:04:05 v #6490 > > │ method1(v7) │ 00:04:05 v #6491 > > │ let v10 : string = "__assert_eq" │ 00:04:05 v #6492 > > │ let v11 : string = "true; _fix_closure_v1 ); // rust.fix_closure'" │ 00:04:05 v #6493 > > │ let v12 : string = $"{v10} / actual: %A{v6} / expected: %A{v11}" │ 00:04:05 v #6494 > > │ let v15 : unit = () │ 00:04:05 v #6495 > > │ let v16 : (unit -> unit) = closure0(v12) │ 00:04:05 v #6496 > > │ let v17 : unit = (fun () -> v16 (); v15) () │ 00:04:05 v #6497 > > │ let v19 : bool = v9 = false │ 00:04:05 v #6498 > > │ if v19 then │ 00:04:05 v #6499 > > │ failwith<unit> v12 │ 00:04:05 v #6500 > > │ method0() │ 00:04:05 v #6501 > > │ │ 00:04:05 v #6502 > > │ __assert_eq / actual: "true; _fix_closure_v1 ); // rust.fix_closure'" / │ 00:04:05 v #6503 > > │ expected: "true; _fix_closure_v1 ); // rust.fix_closure'" │ 00:04:05 v #6504 > > │ │ 00:04:05 v #6505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:05 v #6506 > > 00:04:05 v #6507 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:05 v #6508 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:05 v #6509 > > │ ### fix_closure │ 00:04:05 v #6510 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:05 v #6511 > > 00:04:05 v #6512 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:05 v #6513 > > inl fix_closure depth x = 00:04:05 v #6514 > > inl code = fix_closure' depth x 00:04:05 v #6515 > > (!\code : bool) |> ignore 00:04:05 v #6516 > > 00:04:05 v #6517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:05 v #6518 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:05 v #6519 > > │ ### loop │ 00:04:05 v #6520 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:05 v #6521 > > 00:04:05 v #6522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:05 v #6523 > > inl loop (depth : i32) (fn : () -> ()) : () = 00:04:05 v #6524 > > (!\($'"true; loop { // rust.loop"') : bool) |> ignore 00:04:05 v #6525 > > fn () 00:04:05 v #6526 > > 00:04:05 v #6527 > > listm.init depth id 00:04:05 v #6528 > > |> listm.iter fun n => 00:04:05 v #6529 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:04:05 v #6530 > > 00:04:05 v #6531 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:04:05 v #6532 > > 00:04:05 v #6533 > > listm.init depth id 00:04:05 v #6534 > > |> listm.iter fun n => 00:04:05 v #6535 > > (!\($'"true; { // rust.loop"') : bool) |> ignore 00:04:05 v #6536 > > 00:04:05 v #6537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:05 v #6538 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:05 v #6539 > > │ ### capture │ 00:04:05 v #6540 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:05 v #6541 > > 00:04:05 v #6542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:05 v #6543 > > inl capture forall t. (fn : () -> t) : t = 00:04:05 v #6544 > > (!\($'"true; let _capture = (|| { //"') : bool) |> ignore 00:04:05 v #6545 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:04:05 v #6546 > > !\($'"_capture"') 00:04:06 v #6547 > > 00:04:06 v #6548 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:06 v #6549 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:06 v #6550 > > │ ### capture_move │ 00:04:06 v #6551 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:06 v #6552 > > 00:04:06 v #6553 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:06 v #6554 > > inl capture_move forall t. (fn : () -> t) : t = 00:04:06 v #6555 > > (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore 00:04:06 v #6556 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:04:06 v #6557 > > !\($'"_capture_move"') 00:04:06 v #6558 > > 00:04:06 v #6559 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:06 v #6560 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:06 v #6561 > > │ ### type_emit │ 00:04:06 v #6562 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:06 v #6563 > > 00:04:06 v #6564 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:06 v #6565 > > nominal type_emit t = 00:04:06 v #6566 > > `( 00:04:06 v #6567 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0 00:04:06 v #6568 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end" 00:04:06 v #6569 > > $'' : $'TypeEmit<`t>' 00:04:06 v #6570 > > ) 00:04:07 v #6571 > > 00:04:07 v #6572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:07 v #6573 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:07 v #6574 > > │ ### partial_eq_wrapper │ 00:04:07 v #6575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:07 v #6576 > > 00:04:07 v #6577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:07 v #6578 > > nominal partial_eq_wrapper t = 00:04:07 v #6579 > > `( 00:04:07 v #6580 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:07 v #6581 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T> 00:04:07 v #6582 > > = class end" 00:04:07 v #6583 > > $'' : $'PartialEqWrapper<`t>' 00:04:07 v #6584 > > ) 00:04:07 v #6585 > > 00:04:07 v #6586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:07 v #6587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:07 v #6588 > > │ ### new_partial_eq_wrapper │ 00:04:07 v #6589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:07 v #6590 > > 00:04:07 v #6591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:07 v #6592 > > inl new_partial_eq_wrapper forall t. 00:04:07 v #6593 > > (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool) 00:04:07 v #6594 > > (x : t) 00:04:07 v #6595 > > : partial_eq_wrapper t 00:04:07 v #6596 > > = 00:04:07 v #6597 > > inl struct () = 00:04:07 v #6598 > > !\($'"} //"') : () 00:04:07 v #6599 > > 00:04:07 v #6600 > > !\($'"#[[derive( //"') : () 00:04:07 v #6601 > > !\($'" Debug, //"') : () 00:04:07 v #6602 > > !\($'" Clone, //"') : () 00:04:07 v #6603 > > !\($'")]] //"') : () 00:04:07 v #6604 > > !\($'"pub struct PartialEqWrapper<T>(T); /*"') : () 00:04:07 v #6605 > > 00:04:07 v #6606 > > !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : () 00:04:07 v #6607 > > (null () : type_emit t) |> ignore 00:04:07 v #6608 > > !\($'"*/ > { //"') : () 00:04:07 v #6609 > > 00:04:07 v #6610 > > !\($'"fn eq(&self, other: &Self) -> bool { //"') : () 00:04:07 v #6611 > > 00:04:07 v #6612 > > inl self : ref (partial_eq_wrapper t) = !\($'$"self"') 00:04:07 v #6613 > > inl other : ref (partial_eq_wrapper t) = !\($'$"other"') 00:04:07 v #6614 > > 00:04:07 v #6615 > > self 00:04:07 v #6616 > > |> eq_fn other 00:04:07 v #6617 > > |> fun x => !\($'$"!x //"') 00:04:07 v #6618 > > 00:04:07 v #6619 > > !\($'"} } } fn _main() { { { //"') : () 00:04:07 v #6620 > > 00:04:07 v #6621 > > $'let _!struct = true' : () 00:04:07 v #6622 > > 00:04:07 v #6623 > > !\\(x, $'"PartialEqWrapper($0)"') 00:04:08 v #6624 > > 00:04:08 v #6625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 v #6626 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 v #6627 > > │ ### clone_wrapper │ 00:04:08 v #6628 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 v #6629 > > 00:04:08 v #6630 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 v #6631 > > nominal clone_wrapper t = 00:04:08 v #6632 > > `( 00:04:08 v #6633 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:08 v #6634 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class 00:04:08 v #6635 > > end" 00:04:08 v #6636 > > $'' : $'CloneWrapper<`t>' 00:04:08 v #6637 > > ) 00:04:08 v #6638 > > 00:04:08 v #6639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 v #6640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 v #6641 > > │ ### new_clone_wrapper │ 00:04:08 v #6642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 v #6643 > > 00:04:08 v #6644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 v #6645 > > inl new_clone_wrapper forall t. 00:04:08 v #6646 > > (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t)) 00:04:08 v #6647 > > (x : t) 00:04:08 v #6648 > > : clone_wrapper t 00:04:08 v #6649 > > = 00:04:08 v #6650 > > inl struct () = 00:04:08 v #6651 > > !\($'"} //"') : () 00:04:08 v #6652 > > 00:04:08 v #6653 > > !\($'"#[[derive( //"') : () 00:04:08 v #6654 > > !\($'" Debug, //"') : () 00:04:08 v #6655 > > !\($'")]] //"') : () 00:04:08 v #6656 > > !\($'"pub struct CloneWrapper<T>(T); /*"') : () 00:04:08 v #6657 > > 00:04:08 v #6658 > > !\($'"*/ impl Clone for CloneWrapper< /*"') : () 00:04:08 v #6659 > > (null () : type_emit t) |> ignore 00:04:08 v #6660 > > !\($'"*/ > { //"') : () 00:04:08 v #6661 > > 00:04:08 v #6662 > > !\($'"fn clone(&self) -> Self { //"') : () 00:04:08 v #6663 > > 00:04:08 v #6664 > > inl self : ref (clone_wrapper t) = !\($'$"self"') 00:04:08 v #6665 > > 00:04:08 v #6666 > > self 00:04:08 v #6667 > > |> clone_fn 00:04:08 v #6668 > > |> fun x => !\($'$"!x.clone() //"') 00:04:08 v #6669 > > 00:04:08 v #6670 > > !\($'"} } } fn _main() { { { //"') : () 00:04:08 v #6671 > > 00:04:08 v #6672 > > $'let _!struct = true' : () 00:04:08 v #6673 > > 00:04:08 v #6674 > > !\\(x, $'"CloneWrapper($0)"') 00:04:08 v #6675 > > 00:04:08 v #6676 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 v #6677 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 v #6678 > > │ ### concat │ 00:04:08 v #6679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 v #6680 > > 00:04:08 v #6681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 v #6682 > > inl concat forall (t : * -> *) u. (x : t (t u)) : t u = 00:04:08 v #6683 > > !\($'$"!x.concat()"') 00:04:09 v #6684 > 00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 68097 } 00:04:09 v #6685 > 00:00:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:10 v #6686 > 00:00:50 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/rust.dib.ipynb to html 00:04:10 v #6687 > 00:00:50 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:10 v #6688 > 00:00:50 v #7 ! validate(nb) 00:04:11 v #6689 > 00:00:51 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:11 v #6690 > 00:00:51 v #9 ! return _pygments_highlight( 00:04:12 v #6691 > 00:00:52 v #10 ! [NbConvertApp] Writing 469162 bytes to c:\home\git\polyglot\lib\spiral\rust\rust.dib.html 00:04:12 v #6692 > 00:00:52 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:04:12 v #6693 > 00:00:52 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:04:12 v #6694 > 00:00:52 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:13 v #6695 > 00:00:52 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:13 v #6696 > 00:00:52 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:13 v #6697 > 00:00:52 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 69016 } 00:04:13 d #6698 runtime.execute_with_options_async / { exit_code = 0; output_length = 74326 } 00:04:13 d #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/rust.dib --retries 3 00:04:13 d #6699 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/testing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:13 v #6700 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) } 00:04:13 v #6701 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/testing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/testing.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:04:14 v #6702 > > 00:04:14 v #6703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:14 v #6704 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:14 v #6705 > > │ # rust/testing │ 00:04:14 v #6706 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 v #6707 > > 00:04:17 v #6708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 v #6709 > > open rust.rust_operators 00:04:18 v #6710 > > 00:04:18 v #6711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #6712 > > //// test 00:04:18 v #6713 > > 00:04:18 v #6714 > > open testing 00:04:19 v #6715 > > 00:04:19 v #6716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #6717 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:19 v #6718 > > │ ### run_tests' │ 00:04:19 v #6719 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:19 v #6720 > > 00:04:19 v #6721 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #6722 > > inl run_tests' tests = 00:04:19 v #6723 > > (!\($'"true; () //"') : bool) |> ignore 00:04:19 v #6724 > > 00:04:19 v #6725 > > inl fields = reflection.get_record_fields tests 00:04:19 v #6726 > > 00:04:19 v #6727 > > fields 00:04:19 v #6728 > > |> listm.iter fun name, (fn : string -> ()) => 00:04:19 v #6729 > > !\($'"} /* /*"') 00:04:19 v #6730 > > (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore 00:04:19 v #6731 > > fn name 00:04:19 v #6732 > > 00:04:19 v #6733 > > fields 00:04:19 v #6734 > > |> listm.iter fun _ => 00:04:19 v #6735 > > !\($'"{ //"') : () 00:04:19 v #6736 > > 00:04:19 v #6737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #6738 > > //// test 00:04:19 v #6739 > > 00:04:19 v #6740 > > inl run test = 00:04:19 v #6741 > > if env.get_environment_variable "TEST" = "1" 00:04:19 v #6742 > > then () 00:04:19 v #6743 > > else 00:04:19 v #6744 > > runtime.execution_options fun x => { x with 00:04:19 v #6745 > > command = "cargo test -- --show-output" 00:04:19 v #6746 > > working_directory = file_system.get_source_directory () |> Some |> 00:04:19 v #6747 > > optionm'.box 00:04:19 v #6748 > > environment_variables = ;[[ "TEST", "1" ]] 00:04:19 v #6749 > > } 00:04:19 v #6750 > > |> runtime.execute_with_options 00:04:19 v #6751 > > |> fun exit_code, result => 00:04:19 v #6752 > > exit_code |> _assert_eq 0i32 00:04:19 v #6753 > > result |> _assert sm'.contains "test result: ok. 1 passed; 0 failed; 00:04:19 v #6754 > > 0 ignored;" 00:04:19 v #6755 > > 00:04:19 v #6756 > > $'let tests () = !test ()' : () 00:04:20 v #6757 > > 00:04:20 v #6758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #6759 > > //// test 00:04:20 v #6760 > > ///! rust -d encoding_rs encoding_rs_io 00:04:20 v #6761 > > 00:04:20 v #6762 > > fun () => 00:04:20 v #6763 > > run_tests' { 00:04:20 v #6764 > > a = _assert_eq "a" 00:04:20 v #6765 > > } 00:04:20 v #6766 > > |> run 00:04:30 v #6767 > > 00:04:30 v #6768 > > ╭─[ 10.73s - return value ]────────────────────────────────────────────────────╮ 00:04:30 v #6769 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo; │ 00:04:30 v #6770 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo │ 00:04:30 v #6771 > > │ test -- --show-output; cancellation_token = None; environment_variables = │ 00:04:30 v #6772 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │ 00:04:30 v #6773 > > │ working_directory = Some( │ 00:04:30 v #6774 > > │ │ 00:04:30 v #6775 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\bba │ 00:04:30 v #6776 > > │ 26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07eea4", │ 00:04:30 v #6777 > > │ ) } } │ 00:04:30 v #6778 > > │ 00:00:00 v #2 ! Compiling │ 00:04:30 v #6779 > > │ spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07e │ 00:04:30 v #6780 > > │ ea4 v0.0.1 │ 00:04:30 v #6781 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\bba │ 00:04:30 v #6782 > > │ 26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07eea4) │ 00:04:30 v #6783 > > │ 00:00:01 v #3 ! Finished `test` profile [unoptimized + debuginfo] │ 00:04:30 v #6784 > > │ target(s) in 1.12s │ 00:04:30 v #6785 > > │ 00:00:01 v #4 ! Running unittests spiral_builder.rs │ 00:04:30 v #6786 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:30 v #6787 > > │ \spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07 │ 00:04:30 v #6788 > > │ eea4-1a86f127429a5198.exe) │ 00:04:30 v #6789 > > │ 00:00:01 v #5 > │ 00:04:30 v #6790 > > │ 00:00:01 v #6 > running 1 test │ 00:04:30 v #6791 > > │ 00:00:01 v #7 > test module_e468e52b::Spiral_builder::a ... ok │ 00:04:30 v #6792 > > │ 00:00:01 v #8 > │ 00:04:30 v #6793 > > │ 00:00:01 v #9 > successes: │ 00:04:30 v #6794 > > │ 00:00:01 v #10 > │ 00:04:30 v #6795 > > │ 00:00:01 v #11 > ---- module_e468e52b::Spiral_builder::a stdout ---- │ 00:04:30 v #6796 > > │ 00:00:01 v #12 > __assert_eq / actual: "a" / expected: "a" │ 00:04:30 v #6797 > > │ 00:00:01 v #13 > │ 00:04:30 v #6798 > > │ 00:00:01 v #14 > │ 00:04:30 v #6799 > > │ 00:00:01 v #15 > successes: │ 00:04:30 v #6800 > > │ 00:00:01 v #16 > module_e468e52b::Spiral_builder::a │ 00:04:30 v #6801 > > │ 00:00:01 v #17 > │ 00:04:30 v #6802 > > │ 00:00:01 v #18 > test result: ok. 1 passed; 0 failed; 0 ignored; 0 │ 00:04:30 v #6803 > > │ measured; 0 filtered out; finished in 0.00s │ 00:04:30 v #6804 > > │ 00:00:01 v #19 > │ 00:04:30 v #6805 > > │ 00:00:01 v #20 runtime.execute_with_options / result / { exit_code = │ 00:04:30 v #6806 > > │ 0; std_trace_length = 879 } │ 00:04:30 v #6807 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:04:30 v #6808 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" / │ 00:04:30 v #6809 > > │ expected: " Compiling │ 00:04:30 v #6810 > > │ spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07e │ 00:04:30 v #6811 > > │ ea4 v0.0.1 │ 00:04:30 v #6812 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\bba │ 00:04:30 v #6813 > > │ 26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07eea4) │ 00:04:30 v #6814 > > │ Finished `test` profile [unoptimized + debuginfo] target(s) in 1.12s[ │ 00:04:30 v #6815 > > │ 0m │ 00:04:30 v #6816 > > │ Running unittests spiral_builder.rs │ 00:04:30 v #6817 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:30 v #6818 > > │ \spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07 │ 00:04:30 v #6819 > > │ eea4-1a86f127429a5198.exe) │ 00:04:30 v #6820 > > │ │ 00:04:30 v #6821 > > │ running 1 test │ 00:04:30 v #6822 > > │ test module_e468e52b::Spiral_builder::a ... ok │ 00:04:30 v #6823 > > │ │ 00:04:30 v #6824 > > │ successes: │ 00:04:30 v #6825 > > │ │ 00:04:30 v #6826 > > │ ---- module_e468e52b::Spiral_builder::a stdout ---- │ 00:04:30 v #6827 > > │ __assert_eq / actual: "a" / expected: "a" │ 00:04:30 v #6828 > > │ │ 00:04:30 v #6829 > > │ │ 00:04:30 v #6830 > > │ successes: │ 00:04:30 v #6831 > > │ module_e468e52b::Spiral_builder::a │ 00:04:30 v #6832 > > │ │ 00:04:30 v #6833 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:04:30 v #6834 > > │ finished in 0.00s │ 00:04:30 v #6835 > > │ " │ 00:04:30 v #6836 > > │ │ 00:04:30 v #6837 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:30 v #6838 > > 00:04:30 v #6839 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #6840 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:30 v #6841 > > │ ### run_tests │ 00:04:30 v #6842 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:30 v #6843 > > 00:04:30 v #6844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #6845 > > inl run_tests tests : () = 00:04:30 v #6846 > > real 00:04:30 v #6847 > > inl tests = 00:04:30 v #6848 > > real_core.record_map 00:04:30 v #6849 > > fun { key value } => 00:04:30 v #6850 > > (fun _ => value ()) : string -> () 00:04:30 v #6851 > > tests 00:04:30 v #6852 > > run_tests' `(`tests) tests 00:04:31 v #6853 > > 00:04:31 v #6854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:31 v #6855 > > //// test 00:04:31 v #6856 > > ///! rust -d encoding_rs encoding_rs_io 00:04:31 v #6857 > > 00:04:31 v #6858 > > fun () => 00:04:31 v #6859 > > run_tests { 00:04:31 v #6860 > > a = fun () => "a" |> _assert_eq "a" 00:04:31 v #6861 > > } 00:04:31 v #6862 > > |> run 00:04:39 v #6863 > > 00:04:39 v #6864 > > ╭─[ 7.99s - return value ]─────────────────────────────────────────────────────╮ 00:04:39 v #6865 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo; │ 00:04:39 v #6866 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo │ 00:04:39 v #6867 > > │ test -- --show-output; cancellation_token = None; environment_variables = │ 00:04:39 v #6868 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │ 00:04:39 v #6869 > > │ working_directory = Some( │ 00:04:39 v #6870 > > │ │ 00:04:39 v #6871 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\bba │ 00:04:39 v #6872 > > │ 26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07eea4", │ 00:04:39 v #6873 > > │ ) } } │ 00:04:39 v #6874 > > │ 00:00:00 v #2 ! Finished `test` profile [unoptimized + debuginfo] │ 00:04:39 v #6875 > > │ target(s) in 0.39s │ 00:04:39 v #6876 > > │ 00:00:00 v #3 ! Running unittests spiral_builder.rs │ 00:04:39 v #6877 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:39 v #6878 > > │ \spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07 │ 00:04:39 v #6879 > > │ eea4-1a86f127429a5198.exe) │ 00:04:39 v #6880 > > │ 00:00:00 v #4 > │ 00:04:39 v #6881 > > │ 00:00:00 v #5 > running 1 test │ 00:04:39 v #6882 > > │ 00:00:00 v #6 > test module_e468e52b::Spiral_builder::a ... ok │ 00:04:39 v #6883 > > │ 00:00:00 v #7 > │ 00:04:39 v #6884 > > │ 00:00:00 v #8 > successes: │ 00:04:39 v #6885 > > │ 00:00:00 v #9 > │ 00:04:39 v #6886 > > │ 00:00:00 v #10 > ---- module_e468e52b::Spiral_builder::a stdout ---- │ 00:04:39 v #6887 > > │ 00:00:00 v #11 > __assert_eq / actual: "a" / expected: "a" │ 00:04:39 v #6888 > > │ 00:00:00 v #12 > │ 00:04:39 v #6889 > > │ 00:00:00 v #13 > │ 00:04:39 v #6890 > > │ 00:00:00 v #14 > successes: │ 00:04:39 v #6891 > > │ 00:00:00 v #15 > module_e468e52b::Spiral_builder::a │ 00:04:39 v #6892 > > │ 00:00:00 v #16 > │ 00:04:39 v #6893 > > │ 00:00:00 v #17 > test result: ok. 1 passed; 0 failed; 0 ignored; 0 │ 00:04:39 v #6894 > > │ measured; 0 filtered out; finished in 0.00s │ 00:04:39 v #6895 > > │ 00:00:00 v #18 > │ 00:04:39 v #6896 > > │ 00:00:00 v #19 runtime.execute_with_options / result / { exit_code = │ 00:04:39 v #6897 > > │ 0; std_trace_length = 630 } │ 00:04:39 v #6898 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:04:39 v #6899 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" / │ 00:04:39 v #6900 > > │ expected: " Finished `test` profile [unoptimized + debuginfo] │ 00:04:39 v #6901 > > │ target(s) in 0.39s │ 00:04:39 v #6902 > > │ Running unittests spiral_builder.rs │ 00:04:39 v #6903 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:39 v #6904 > > │ \spiral_builder_bba26f946be1409c12b6fb66f44867eb2d476f34c19e92c97ea72ed23f07 │ 00:04:39 v #6905 > > │ eea4-1a86f127429a5198.exe) │ 00:04:39 v #6906 > > │ │ 00:04:39 v #6907 > > │ running 1 test │ 00:04:39 v #6908 > > │ test module_e468e52b::Spiral_builder::a ... ok │ 00:04:39 v #6909 > > │ │ 00:04:39 v #6910 > > │ successes: │ 00:04:39 v #6911 > > │ │ 00:04:39 v #6912 > > │ ---- module_e468e52b::Spiral_builder::a stdout ---- │ 00:04:39 v #6913 > > │ __assert_eq / actual: "a" / expected: "a" │ 00:04:39 v #6914 > > │ │ 00:04:39 v #6915 > > │ │ 00:04:39 v #6916 > > │ successes: │ 00:04:39 v #6917 > > │ module_e468e52b::Spiral_builder::a │ 00:04:39 v #6918 > > │ │ 00:04:39 v #6919 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:04:39 v #6920 > > │ finished in 0.00s │ 00:04:39 v #6921 > > │ " │ 00:04:39 v #6922 > > │ │ 00:04:39 v #6923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:39 v #6924 > > 00:04:39 v #6925 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:39 v #6926 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:39 v #6927 > > │ ### run_tests_log │ 00:04:39 v #6928 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:39 v #6929 > > 00:04:39 v #6930 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:39 v #6931 > > inl run_tests_log tests : () = 00:04:39 v #6932 > > real 00:04:39 v #6933 > > inl tests = 00:04:39 v #6934 > > real_core.record_map 00:04:39 v #6935 > > fun { key value } => 00:04:39 v #6936 > > (fun _ => value false) : () -> () 00:04:39 v #6937 > > tests 00:04:39 v #6938 > > run_tests `(`tests) tests 00:04:39 v #6939 > > 00:04:39 v #6940 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:39 v #6941 > > //// test 00:04:39 v #6942 > > ///! rust -d encoding_rs encoding_rs_io 00:04:39 v #6943 > > 00:04:39 v #6944 > > fun () => 00:04:39 v #6945 > > run_tests_log { 00:04:39 v #6946 > > a = _assert_eq false 00:04:39 v #6947 > > } 00:04:39 v #6948 > > |> run 00:04:50 v #6949 > > 00:04:50 v #6950 > > ╭─[ 10.74s - return value ]────────────────────────────────────────────────────╮ 00:04:50 v #6951 > > │ 00:00:00 d #1 runtime.execute_with_options / { file_name = cargo; │ 00:04:50 v #6952 > > │ arguments = ["test", "--", "--show-output"]; options = { command = cargo │ 00:04:50 v #6953 > > │ test -- --show-output; cancellation_token = None; environment_variables = │ 00:04:50 v #6954 > > │ Array(MutCell([("TEST", "1")])); on_line = None; stdin = None; trace = true; │ 00:04:50 v #6955 > > │ working_directory = Some( │ 00:04:50 v #6956 > > │ │ 00:04:50 v #6957 > > │ "c:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\869 │ 00:04:50 v #6958 > > │ a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22b150", │ 00:04:50 v #6959 > > │ ) } } │ 00:04:50 v #6960 > > │ 00:00:00 v #2 ! Compiling │ 00:04:50 v #6961 > > │ spiral_builder_869a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22b │ 00:04:50 v #6962 > > │ 150 v0.0.1 │ 00:04:50 v #6963 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\869 │ 00:04:50 v #6964 > > │ a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22b150) │ 00:04:50 v #6965 > > │ 00:00:01 v #3 ! Finished `test` profile [unoptimized + debuginfo] │ 00:04:50 v #6966 > > │ target(s) in 1.05s │ 00:04:50 v #6967 > > │ 00:00:01 v #4 ! Running unittests spiral_builder.rs │ 00:04:50 v #6968 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:50 v #6969 > > │ \spiral_builder_869a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22 │ 00:04:50 v #6970 > > │ b150-609273513e4f6f61.exe) │ 00:04:50 v #6971 > > │ 00:00:01 v #5 > │ 00:04:50 v #6972 > > │ 00:00:01 v #6 > running 1 test │ 00:04:50 v #6973 > > │ 00:00:01 v #7 > test module_7f1617b3::Spiral_builder::a ... ok │ 00:04:50 v #6974 > > │ 00:00:01 v #8 > │ 00:04:50 v #6975 > > │ 00:00:01 v #9 > successes: │ 00:04:50 v #6976 > > │ 00:00:01 v #10 > │ 00:04:50 v #6977 > > │ 00:00:01 v #11 > ---- module_7f1617b3::Spiral_builder::a stdout ---- │ 00:04:50 v #6978 > > │ 00:00:01 v #12 > __assert_eq / actual: false / expected: false │ 00:04:50 v #6979 > > │ 00:00:01 v #13 > │ 00:04:50 v #6980 > > │ 00:00:01 v #14 > │ 00:04:50 v #6981 > > │ 00:00:01 v #15 > successes: │ 00:04:50 v #6982 > > │ 00:00:01 v #16 > module_7f1617b3::Spiral_builder::a │ 00:04:50 v #6983 > > │ 00:00:01 v #17 > │ 00:04:50 v #6984 > > │ 00:00:01 v #18 > test result: ok. 1 passed; 0 failed; 0 ignored; 0 │ 00:04:50 v #6985 > > │ measured; 0 filtered out; finished in 0.00s │ 00:04:50 v #6986 > > │ 00:00:01 v #19 > │ 00:04:50 v #6987 > > │ 00:00:01 v #20 runtime.execute_with_options / result / { exit_code = │ 00:04:50 v #6988 > > │ 0; std_trace_length = 883 } │ 00:04:50 v #6989 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:04:50 v #6990 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 ignored;" / │ 00:04:50 v #6991 > > │ expected: " Compiling │ 00:04:50 v #6992 > > │ spiral_builder_869a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22b │ 00:04:50 v #6993 > > │ 150 v0.0.1 │ 00:04:50 v #6994 > > │ (C:\home\git\polyglot\target\spiral_builder\spiral_builder\packages\Rust\869 │ 00:04:50 v #6995 > > │ a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22b150) │ 00:04:50 v #6996 > > │ Finished `test` profile [unoptimized + debuginfo] target(s) in 1.05s[ │ 00:04:50 v #6997 > > │ 0m │ 00:04:50 v #6998 > > │ Running unittests spiral_builder.rs │ 00:04:50 v #6999 > > │ (c:\home\git\polyglot\target\spiral_builder\spiral_builder\target\debug\deps │ 00:04:50 v #7000 > > │ \spiral_builder_869a08911ba6caad08c13ee7275ae57ef91ff285372f56b00461b1399a22 │ 00:04:50 v #7001 > > │ b150-609273513e4f6f61.exe) │ 00:04:50 v #7002 > > │ │ 00:04:50 v #7003 > > │ running 1 test │ 00:04:50 v #7004 > > │ test module_7f1617b3::Spiral_builder::a ... ok │ 00:04:50 v #7005 > > │ │ 00:04:50 v #7006 > > │ successes: │ 00:04:50 v #7007 > > │ │ 00:04:50 v #7008 > > │ ---- module_7f1617b3::Spiral_builder::a stdout ---- │ 00:04:50 v #7009 > > │ __assert_eq / actual: false / expected: false │ 00:04:50 v #7010 > > │ │ 00:04:50 v #7011 > > │ │ 00:04:50 v #7012 > > │ successes: │ 00:04:50 v #7013 > > │ module_7f1617b3::Spiral_builder::a │ 00:04:50 v #7014 > > │ │ 00:04:50 v #7015 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:04:50 v #7016 > > │ finished in 0.00s │ 00:04:50 v #7017 > > │ " │ 00:04:50 v #7018 > > │ │ 00:04:50 v #7019 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:50 v #7020 > 00:00:37 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 20379 } 00:04:50 v #7021 > 00:00:37 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:51 v #7022 > 00:00:38 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/testing.dib.ipynb to html 00:04:51 v #7023 > 00:00:38 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:51 v #7024 > 00:00:38 v #7 ! validate(nb) 00:04:52 v #7025 > 00:00:39 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:52 v #7026 > 00:00:39 v #9 ! return _pygments_highlight( 00:04:52 v #7027 > 00:00:39 v #10 ! [NbConvertApp] Writing 297421 bytes to c:\home\git\polyglot\lib\spiral\rust\testing.dib.html 00:04:52 v #7028 > 00:00:39 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 866 } 00:04:52 v #7029 > 00:00:39 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 866 } 00:04:52 v #7030 > 00:00:39 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:53 v #7031 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:53 v #7032 > 00:00:40 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:53 v #7033 > 00:00:40 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 21304 } 00:04:53 d #7034 runtime.execute_with_options_async / { exit_code = 0; output_length = 24561 } 00:04:53 d #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/testing.dib --retries 3 00:04:53 d #7035 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/near.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:53 v #7036 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) } 00:04:53 v #7037 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/near.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/near.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:04:54 v #7038 > > 00:04:54 v #7039 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:54 v #7040 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:54 v #7041 > > │ # near │ 00:04:54 v #7042 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:57 v #7043 > > 00:04:57 v #7044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:57 v #7045 > > open rust 00:04:57 v #7046 > > open rust.rust_operators 00:04:59 v #7047 > > 00:04:59 v #7048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:59 v #7049 > > //// test 00:04:59 v #7050 > > 00:04:59 v #7051 > > open testing 00:04:59 v #7052 > > 00:04:59 v #7053 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:59 v #7054 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:59 v #7055 > > │ ## near │ 00:04:59 v #7056 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:59 v #7057 > > 00:04:59 v #7058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:59 v #7059 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:59 v #7060 > > │ ### vector │ 00:04:59 v #7061 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:59 v #7062 > > 00:04:59 v #7063 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:59 v #7064 > > nominal vector t = 00:04:59 v #7065 > > `( 00:04:59 v #7066 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:59 v #7067 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype 00:04:59 v #7068 > > near_sdk_store_vec_Vector<'T> = class end" 00:04:59 v #7069 > > $'' : $'near_sdk_store_vec_Vector<`t>' 00:04:59 v #7070 > > ) 00:04:59 v #7071 > > 00:04:59 v #7072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:59 v #7073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:59 v #7074 > > │ ### lookup_map │ 00:04:59 v #7075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:59 v #7076 > > 00:04:59 v #7077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:59 v #7078 > > nominal lookup_map k v = 00:04:59 v #7079 > > `( 00:04:59 v #7080 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:59 v #7081 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype 00:04:59 v #7082 > > near_sdk_store_LookupMap<'K, 'V> = class end" 00:04:59 v #7083 > > $'' : $'near_sdk_store_LookupMap<`k, `v>' 00:04:59 v #7084 > > ) 00:05:00 v #7085 > > 00:05:00 v #7086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:00 v #7087 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:00 v #7088 > > │ ### iterable_set │ 00:05:00 v #7089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:00 v #7090 > > 00:05:00 v #7091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:00 v #7092 > > nominal iterable_set t = 00:05:00 v #7093 > > `( 00:05:00 v #7094 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:00 v #7095 > > Fable.Core.Emit(\"near_sdk::store::IterableSet<$0>\")>]]\n#endif\ntype 00:05:00 v #7096 > > near_sdk_store_IterableSet<'T> = class end" 00:05:00 v #7097 > > $'' : $'near_sdk_store_IterableSet<`t>' 00:05:00 v #7098 > > ) 00:05:00 v #7099 > > 00:05:00 v #7100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:00 v #7101 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:00 v #7102 > > │ ### account_id │ 00:05:00 v #7103 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:00 v #7104 > > 00:05:00 v #7105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:00 v #7106 > > nominal account_id = 00:05:00 v #7107 > > `( 00:05:00 v #7108 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:00 v #7109 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId = 00:05:00 v #7110 > > class end" 00:05:00 v #7111 > > $'' : $'near_sdk_AccountId' 00:05:00 v #7112 > > ) 00:05:01 v #7113 > > 00:05:01 v #7114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:01 v #7115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:01 v #7116 > > │ ### new_lookup_map │ 00:05:01 v #7117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:01 v #7118 > > 00:05:01 v #7119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:01 v #7120 > > inl new_lookup_map prefix = 00:05:01 v #7121 > > !\($'"near_sdk::store::LookupMap::new(!prefix)"') 00:05:01 v #7122 > > 00:05:01 v #7123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:01 v #7124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:01 v #7125 > > │ ### new_iterable_set │ 00:05:01 v #7126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:01 v #7127 > > 00:05:01 v #7128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:01 v #7129 > > inl new_iterable_set prefix = 00:05:01 v #7130 > > !\($'"near_sdk::store::IterableSet::new(!prefix)"') 00:05:02 v #7131 > > 00:05:02 v #7132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:02 v #7133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:02 v #7134 > > │ ### new_vector │ 00:05:02 v #7135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 v #7136 > > 00:05:02 v #7137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 v #7138 > > inl new_vector prefix = 00:05:02 v #7139 > > !\\(prefix, $'"near_sdk::store::vec::Vector::new($0)"') 00:05:02 v #7140 > > 00:05:02 v #7141 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:02 v #7142 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:02 v #7143 > > │ ### vector_extend │ 00:05:02 v #7144 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 v #7145 > > 00:05:02 v #7146 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 v #7147 > > inl vector_extend forall t. (vec : am'.vec t) (vector : rust.ref (rust.mut' 00:05:02 v #7148 > > (vector t))) : () = 00:05:02 v #7149 > > (!\\(vec, $'"true; !vector.extend($0); //"') : bool) |> ignore 00:05:03 v #7150 > > 00:05:03 v #7151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 v #7152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 v #7153 > > │ ### vector_to_vec │ 00:05:03 v #7154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 v #7155 > > 00:05:03 v #7156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 v #7157 > > inl vector_to_vec forall (t : * -> *) u. (vector : t (vector u)) : am'.vec u = 00:05:03 v #7158 > > !\($'$"!vector.iter().map(|x| *x).collect::<Vec<_>>()"') 00:05:03 v #7159 > > 00:05:03 v #7160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 v #7161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 v #7162 > > │ ### keccak512 │ 00:05:03 v #7163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 v #7164 > > 00:05:03 v #7165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 v #7166 > > inl keccak512 (entropy : am'.vec u8) : am'.vec u8 = 00:05:03 v #7167 > > !\\(entropy, $'$"near_sdk::env::keccak512(&$0)"') 00:05:03 v #7168 > > 00:05:03 v #7169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 v #7170 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 v #7171 > > │ ### log │ 00:05:03 v #7172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 v #7173 > > 00:05:03 v #7174 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 v #7175 > > inl log text : () = 00:05:03 v #7176 > > (!\\(text, $'$"true; near_sdk::log\!(\\\"{{}}\\\", $0)"') : bool) |> ignore 00:05:04 v #7177 > > 00:05:04 v #7178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:04 v #7179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:04 v #7180 > > │ ### panic_str │ 00:05:04 v #7181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:04 v #7182 > > 00:05:04 v #7183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:04 v #7184 > > inl panic_str (text : string) : () = 00:05:04 v #7185 > > (!\\(text, $'$"true; near_sdk::env::panic_str(&*$0); //"') : bool) |> ignore 00:05:04 v #7186 > > 00:05:04 v #7187 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:04 v #7188 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:04 v #7189 > > │ ### lookup_get │ 00:05:04 v #7190 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:04 v #7191 > > 00:05:04 v #7192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:04 v #7193 > > inl lookup_get forall k v. 00:05:04 v #7194 > > (key : k) 00:05:04 v #7195 > > (map : rust.ref (rust.mut' (lookup_map k v))) 00:05:04 v #7196 > > : optionm'.option' (rust.ref v) 00:05:04 v #7197 > > = 00:05:04 v #7198 > > !\\(key, $'$"!map.get(&$0)"') 00:05:05 v #7199 > > 00:05:05 v #7200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:05 v #7201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:05 v #7202 > > │ ### lookup_insert │ 00:05:05 v #7203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:05 v #7204 > > 00:05:05 v #7205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:05 v #7206 > > inl lookup_insert forall k v. 00:05:05 v #7207 > > (key : k) 00:05:05 v #7208 > > (value : v) 00:05:05 v #7209 > > (map : rust.ref (rust.mut' (lookup_map k v))) 00:05:05 v #7210 > > : () 00:05:05 v #7211 > > = 00:05:05 v #7212 > > (!\\((key, value), $'$"true; !map.insert(&$0, $1); //"') : bool) |> ignore 00:05:05 v #7213 > > 00:05:05 v #7214 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:05 v #7215 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:05 v #7216 > > │ ### iterable_set_insert │ 00:05:05 v #7217 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:05 v #7218 > > 00:05:05 v #7219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:05 v #7220 > > inl iterable_set_insert forall t. 00:05:05 v #7221 > > (x : t) 00:05:05 v #7222 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:05 v #7223 > > : bool 00:05:05 v #7224 > > = 00:05:05 v #7225 > > !\\(x, $'$"!set.insert($0)"') 00:05:06 v #7226 > > 00:05:06 v #7227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:06 v #7228 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:06 v #7229 > > │ ### iterable_set_remove │ 00:05:06 v #7230 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:06 v #7231 > > 00:05:06 v #7232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:06 v #7233 > > inl iterable_set_remove forall t. 00:05:06 v #7234 > > (x : rust.ref t) 00:05:06 v #7235 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:06 v #7236 > > : bool 00:05:06 v #7237 > > = 00:05:06 v #7238 > > !\\(x, $'$"!set.remove($0)"') 00:05:06 v #7239 > > 00:05:06 v #7240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:06 v #7241 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:06 v #7242 > > │ ### iterable_set_contains │ 00:05:06 v #7243 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:06 v #7244 > > 00:05:06 v #7245 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:06 v #7246 > > inl iterable_set_contains forall t. 00:05:06 v #7247 > > (x : rust.ref t) 00:05:06 v #7248 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:06 v #7249 > > : bool 00:05:06 v #7250 > > = 00:05:06 v #7251 > > !\\(x, $'$"!set.contains($0)"') 00:05:06 v #7252 > > 00:05:06 v #7253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:06 v #7254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:06 v #7255 > > │ ### near_token │ 00:05:06 v #7256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:06 v #7257 > > 00:05:06 v #7258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:06 v #7259 > > nominal near_token = 00:05:06 v #7260 > > `( 00:05:06 v #7261 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:06 v #7262 > > Fable.Core.Emit(\"near_token::NearToken\")>]]\n#endif\ntype near_token_NearToken 00:05:06 v #7263 > > = class end" 00:05:06 v #7264 > > $'' : $'near_token_NearToken' 00:05:06 v #7265 > > ) 00:05:07 v #7266 > > 00:05:07 v #7267 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:07 v #7268 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:07 v #7269 > > │ ### near_token_sdk │ 00:05:07 v #7270 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:07 v #7271 > > 00:05:07 v #7272 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #7273 > > nominal near_token_sdk = 00:05:07 v #7274 > > `( 00:05:07 v #7275 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:07 v #7276 > > Fable.Core.Emit(\"near_sdk::NearToken\")>]]\n#endif\ntype near_sdk_NearToken = 00:05:07 v #7277 > > class end" 00:05:07 v #7278 > > $'' : $'near_sdk_NearToken' 00:05:07 v #7279 > > ) 00:05:07 v #7280 > > 00:05:07 v #7281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:07 v #7282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:07 v #7283 > > │ ### random_seed │ 00:05:07 v #7284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:07 v #7285 > > 00:05:07 v #7286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #7287 > > inl random_seed () : am'.vec u8 = 00:05:07 v #7288 > > !\($'$"near_sdk::env::random_seed()"') 00:05:08 v #7289 > > 00:05:08 v #7290 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:08 v #7291 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:08 v #7292 > > │ ### block_timestamp │ 00:05:08 v #7293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:08 v #7294 > > 00:05:08 v #7295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:08 v #7296 > > inl block_timestamp () : u64 = 00:05:08 v #7297 > > !\($'$"near_sdk::env::block_timestamp()"') 00:05:08 v #7298 > > 00:05:08 v #7299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:08 v #7300 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:08 v #7301 > > │ ### block_height │ 00:05:08 v #7302 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:08 v #7303 > > 00:05:08 v #7304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:08 v #7305 > > inl block_height () : u64 = 00:05:08 v #7306 > > !\($'$"near_sdk::env::block_height()"') 00:05:09 v #7307 > > 00:05:09 v #7308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:09 v #7309 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:09 v #7310 > > │ ### epoch_height │ 00:05:09 v #7311 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:09 v #7312 > > 00:05:09 v #7313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:09 v #7314 > > inl epoch_height () : u64 = 00:05:09 v #7315 > > !\($'$"near_sdk::env::epoch_height()"') 00:05:09 v #7316 > > 00:05:09 v #7317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:09 v #7318 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:09 v #7319 > > │ ### account_balance │ 00:05:09 v #7320 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:09 v #7321 > > 00:05:09 v #7322 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:09 v #7323 > > inl account_balance () : near_token = 00:05:09 v #7324 > > !\($'$"near_sdk::env::account_balance()"') 00:05:09 v #7325 > > 00:05:09 v #7326 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:09 v #7327 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:09 v #7328 > > │ ### predecessor_account_id │ 00:05:09 v #7329 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:09 v #7330 > > 00:05:09 v #7331 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:09 v #7332 > > inl predecessor_account_id () : account_id = 00:05:09 v #7333 > > !\($'$"near_sdk::env::predecessor_account_id()"') 00:05:10 v #7334 > > 00:05:10 v #7335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:10 v #7336 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:10 v #7337 > > │ ### signer_account_id │ 00:05:10 v #7338 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:10 v #7339 > > 00:05:10 v #7340 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:10 v #7341 > > inl signer_account_id () : account_id = 00:05:10 v #7342 > > !\($'$"near_sdk::env::signer_account_id()"') 00:05:10 v #7343 > > 00:05:10 v #7344 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:10 v #7345 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:10 v #7346 > > │ ### as_yoctonear │ 00:05:10 v #7347 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:10 v #7348 > > 00:05:10 v #7349 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:10 v #7350 > > inl as_yoctonear forall t. (gas : t) : rust.u128 = 00:05:10 v #7351 > > !\\(gas, $'"$0.as_yoctonear()"') 00:05:11 v #7352 > > 00:05:11 v #7353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:11 v #7354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:11 v #7355 > > │ ### near_price_in_usd │ 00:05:11 v #7356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:11 v #7357 > > 00:05:11 v #7358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:11 v #7359 > > inl near_price_in_usd () = 00:05:11 v #7360 > > 6.68f64 00:05:11 v #7361 > > 00:05:11 v #7362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:11 v #7363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:11 v #7364 > > │ ### gas_to_usd │ 00:05:11 v #7365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:11 v #7366 > > 00:05:11 v #7367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:11 v #7368 > > inl gas_to_usd (gas : u64) = 00:05:11 v #7369 > > (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd () 00:05:12 v #7370 > > 00:05:12 v #7371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:12 v #7372 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:12 v #7373 > > │ ### tokens_to_usd │ 00:05:12 v #7374 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:12 v #7375 > > 00:05:12 v #7376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:12 v #7377 > > inl tokens_to_usd (tokens : rust.u128) = 00:05:12 v #7378 > > (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd 00:05:12 v #7379 > > () 00:05:12 v #7380 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17158 } 00:05:12 v #7381 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:13 v #7382 > 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/near.dib.ipynb to html 00:05:13 v #7383 > 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:13 v #7384 > 00:00:20 v #7 ! validate(nb) 00:05:14 v #7385 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:14 v #7386 > 00:00:21 v #9 ! return _pygments_highlight( 00:05:14 v #7387 > 00:00:21 v #10 ! [NbConvertApp] Writing 322926 bytes to c:\home\git\polyglot\lib\spiral\rust\near.dib.html 00:05:14 v #7388 > 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:05:14 v #7389 > 00:00:21 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:05:14 v #7390 > 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:15 v #7391 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:15 v #7392 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:15 v #7393 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 18077 } 00:05:15 d #7394 runtime.execute_with_options_async / { exit_code = 0; output_length = 21355 } 00:05:15 d #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/near.dib --retries 3 00:05:15 d #7395 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path rust/near_workspaces.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:15 v #7396 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near_workspaces.dib", "--retries", "3"])) } 00:05:15 v #7397 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib" --output-path "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:16 v #7398 > > 00:05:16 v #7399 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:16 v #7400 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:16 v #7401 > > │ # near_workspaces │ 00:05:16 v #7402 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:20 v #7403 > > 00:05:20 v #7404 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:20 v #7405 > > open rust 00:05:20 v #7406 > > open rust.rust_operators 00:05:21 v #7407 > > 00:05:21 v #7408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:21 v #7409 > > //// test 00:05:21 v #7410 > > 00:05:21 v #7411 > > open testing 00:05:21 v #7412 > > 00:05:21 v #7413 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:21 v #7414 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:21 v #7415 > > │ ## near │ 00:05:21 v #7416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:21 v #7417 > > 00:05:21 v #7418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:21 v #7419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:21 v #7420 > > │ ### near_token_workspaces │ 00:05:21 v #7421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:21 v #7422 > > 00:05:21 v #7423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:21 v #7424 > > nominal near_token_workspaces = 00:05:21 v #7425 > > `( 00:05:21 v #7426 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:21 v #7427 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype 00:05:21 v #7428 > > near_workspaces_types_NearToken = class end" 00:05:21 v #7429 > > $'' : $'near_workspaces_types_NearToken' 00:05:21 v #7430 > > ) 00:05:22 v #7431 > > 00:05:22 v #7432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:22 v #7433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:22 v #7434 > > │ ### gas │ 00:05:22 v #7435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:22 v #7436 > > 00:05:22 v #7437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:22 v #7438 > > nominal gas = 00:05:22 v #7439 > > `( 00:05:22 v #7440 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:22 v #7441 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype 00:05:22 v #7442 > > near_workspaces_types_Gas = class end" 00:05:22 v #7443 > > $'' : $'near_workspaces_types_Gas' 00:05:22 v #7444 > > ) 00:05:22 v #7445 > > 00:05:22 v #7446 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:22 v #7447 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:22 v #7448 > > │ ### near_workspaces_error │ 00:05:22 v #7449 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:22 v #7450 > > 00:05:22 v #7451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:22 v #7452 > > nominal near_workspaces_error = 00:05:22 v #7453 > > `( 00:05:22 v #7454 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:22 v #7455 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype 00:05:22 v #7456 > > near_workspaces_error_Error = class end" 00:05:22 v #7457 > > $'' : $'near_workspaces_error_Error' 00:05:22 v #7458 > > ) 00:05:22 v #7459 > > 00:05:22 v #7460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:22 v #7461 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:22 v #7462 > > │ ### sandbox │ 00:05:22 v #7463 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:22 v #7464 > > 00:05:22 v #7465 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:22 v #7466 > > nominal sandbox = 00:05:22 v #7467 > > `( 00:05:22 v #7468 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:22 v #7469 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype 00:05:22 v #7470 > > near_workspaces_network_Sandbox = class end" 00:05:22 v #7471 > > $'' : $'near_workspaces_network_Sandbox' 00:05:22 v #7472 > > ) 00:05:23 v #7473 > > 00:05:23 v #7474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:23 v #7475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:23 v #7476 > > │ ### worker │ 00:05:23 v #7477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:23 v #7478 > > 00:05:23 v #7479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:23 v #7480 > > nominal worker t = 00:05:23 v #7481 > > `( 00:05:23 v #7482 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:23 v #7483 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype 00:05:23 v #7484 > > near_workspaces_Worker<'T> = class end" 00:05:23 v #7485 > > $'' : $'near_workspaces_Worker<`t>' 00:05:23 v #7486 > > ) 00:05:23 v #7487 > > 00:05:23 v #7488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:23 v #7489 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:23 v #7490 > > │ ### contract │ 00:05:23 v #7491 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:23 v #7492 > > 00:05:23 v #7493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:23 v #7494 > > nominal contract = 00:05:23 v #7495 > > `( 00:05:23 v #7496 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:23 v #7497 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype 00:05:23 v #7498 > > near_workspaces_Contract = class end" 00:05:23 v #7499 > > $'' : $'near_workspaces_Contract' 00:05:23 v #7500 > > ) 00:05:24 v #7501 > > 00:05:24 v #7502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:24 v #7503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:24 v #7504 > > │ ### call_transaction │ 00:05:24 v #7505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:24 v #7506 > > 00:05:24 v #7507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:24 v #7508 > > nominal call_transaction = 00:05:24 v #7509 > > `( 00:05:24 v #7510 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:24 v #7511 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty 00:05:24 v #7512 > > pe near_workspaces_operations_CallTransaction = class end" 00:05:24 v #7513 > > $'' : $'near_workspaces_operations_CallTransaction' 00:05:24 v #7514 > > ) 00:05:24 v #7515 > > 00:05:24 v #7516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:24 v #7517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:24 v #7518 > > │ ### execution_final_result │ 00:05:24 v #7519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:24 v #7520 > > 00:05:24 v #7521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:24 v #7522 > > nominal execution_final_result = 00:05:24 v #7523 > > `( 00:05:24 v #7524 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:24 v #7525 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt 00:05:24 v #7526 > > ype near_workspaces_result_ExecutionFinalResult = class end" 00:05:24 v #7527 > > $'' : $'near_workspaces_result_ExecutionFinalResult' 00:05:24 v #7528 > > ) 00:05:25 v #7529 > > 00:05:25 v #7530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:25 v #7531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:25 v #7532 > > │ ### execution_result │ 00:05:25 v #7533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:25 v #7534 > > 00:05:25 v #7535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:25 v #7536 > > nominal execution_result t = 00:05:25 v #7537 > > `( 00:05:25 v #7538 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:25 v #7539 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty 00:05:25 v #7540 > > pe near_workspaces_result_ExecutionResult<'T> = class end" 00:05:25 v #7541 > > $'' : $'near_workspaces_result_ExecutionResult<`t>' 00:05:25 v #7542 > > ) 00:05:25 v #7543 > > 00:05:25 v #7544 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:25 v #7545 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:25 v #7546 > > │ ### execution_success │ 00:05:25 v #7547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:25 v #7548 > > 00:05:25 v #7549 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:25 v #7550 > > nominal execution_success = 00:05:25 v #7551 > > `( 00:05:25 v #7552 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:25 v #7553 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype 00:05:25 v #7554 > > near_workspaces_result_ExecutionSuccess = class end" 00:05:25 v #7555 > > $'' : $'near_workspaces_result_ExecutionSuccess' 00:05:25 v #7556 > > ) 00:05:26 v #7557 > > 00:05:26 v #7558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:26 v #7559 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:26 v #7560 > > │ ### execution_failure │ 00:05:26 v #7561 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:26 v #7562 > > 00:05:26 v #7563 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:26 v #7564 > > nominal execution_failure = 00:05:26 v #7565 > > `( 00:05:26 v #7566 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:26 v #7567 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype 00:05:26 v #7568 > > near_workspaces_result_ExecutionFailure = class end" 00:05:26 v #7569 > > $'' : $'near_workspaces_result_ExecutionFailure' 00:05:26 v #7570 > > ) 00:05:26 v #7571 > > 00:05:26 v #7572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:26 v #7573 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:26 v #7574 > > │ ### execution_outcome │ 00:05:26 v #7575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:26 v #7576 > > 00:05:26 v #7577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:26 v #7578 > > nominal execution_outcome = 00:05:26 v #7579 > > `( 00:05:26 v #7580 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:26 v #7581 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype 00:05:26 v #7582 > > near_workspaces_result_ExecutionOutcome = class end" 00:05:26 v #7583 > > $'' : $'near_workspaces_result_ExecutionOutcome' 00:05:26 v #7584 > > ) 00:05:26 v #7585 > > 00:05:26 v #7586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:26 v #7587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:26 v #7588 > > │ ### sandbox_worker │ 00:05:26 v #7589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:26 v #7590 > > 00:05:26 v #7591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:26 v #7592 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error = 00:05:26 v #7593 > > !\($'"near_workspaces::sandbox().await"') 00:05:27 v #7594 > > 00:05:27 v #7595 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:27 v #7596 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:27 v #7597 > > │ ### dev_deploy │ 00:05:27 v #7598 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:27 v #7599 > > 00:05:27 v #7600 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:27 v #7601 > > inl dev_deploy 00:05:27 v #7602 > > (wasm : am'.vec u8) 00:05:27 v #7603 > > (worker : worker sandbox) 00:05:27 v #7604 > > : async.future_pin (resultm.result' contract near_workspaces_error) 00:05:27 v #7605 > > = 00:05:27 v #7606 > > inl worker = worker |> rust.emit 00:05:27 v #7607 > > !\\(wasm, $'"Box::pin(!worker.dev_deploy(&$0))"') 00:05:27 v #7608 > > 00:05:27 v #7609 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:27 v #7610 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:27 v #7611 > > │ ### call │ 00:05:27 v #7612 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:27 v #7613 > > 00:05:27 v #7614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:27 v #7615 > > inl call (fn_name : string) (contract : contract) : call_transaction = 00:05:27 v #7616 > > !\\((contract, fn_name), $'"$0.call(&*$1)"') 00:05:28 v #7617 > > 00:05:28 v #7618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:28 v #7619 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:28 v #7620 > > │ ### logs │ 00:05:28 v #7621 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:28 v #7622 > > 00:05:28 v #7623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:28 v #7624 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) = 00:05:28 v #7625 > > !\($'"!result.logs()"') 00:05:28 v #7626 > > 00:05:28 v #7627 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:28 v #7628 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:28 v #7629 > > │ ### into_result │ 00:05:28 v #7630 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:28 v #7631 > > 00:05:28 v #7632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:28 v #7633 > > inl into_result 00:05:28 v #7634 > > (result : execution_final_result) 00:05:28 v #7635 > > : resultm.result' execution_success execution_failure 00:05:28 v #7636 > > = 00:05:28 v #7637 > > !\\(result, $'"$0.into_result()"') 00:05:29 v #7638 > > 00:05:29 v #7639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:29 v #7640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:29 v #7641 > > │ ### receipt_failures │ 00:05:29 v #7642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 v #7643 > > 00:05:29 v #7644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:29 v #7645 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref 00:05:29 v #7646 > > execution_outcome) = 00:05:29 v #7647 > > inl result = join result 00:05:29 v #7648 > > !\($'"!result.receipt_failures()"') 00:05:29 v #7649 > > 00:05:29 v #7650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:29 v #7651 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:29 v #7652 > > │ ### receipt_outcomes │ 00:05:29 v #7653 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 v #7654 > > 00:05:29 v #7655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:29 v #7656 > > inl receipt_outcomes (result : execution_final_result) : am'.vec 00:05:29 v #7657 > > execution_outcome = 00:05:29 v #7658 > > inl result = join result 00:05:29 v #7659 > > inl result : rust.ref (am'.slice execution_outcome) = 00:05:29 v #7660 > > !\($'"!result.receipt_outcomes()"') 00:05:29 v #7661 > > result |> rust.into 00:05:29 v #7662 > > 00:05:29 v #7663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:29 v #7664 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:29 v #7665 > > │ ### json │ 00:05:29 v #7666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 v #7667 > > 00:05:29 v #7668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:29 v #7669 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string 00:05:29 v #7670 > > near_workspaces_error = 00:05:29 v #7671 > > !\\(result, $'"$0.json()"') 00:05:30 v #7672 > > 00:05:30 v #7673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:30 v #7674 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:30 v #7675 > > │ ### borsh │ 00:05:30 v #7676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:30 v #7677 > > 00:05:30 v #7678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:30 v #7679 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string 00:05:30 v #7680 > > near_workspaces_error = 00:05:30 v #7681 > > !\\(result, $'"$0.borsh()"') 00:05:30 v #7682 > > 00:05:30 v #7683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:30 v #7684 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:30 v #7685 > > │ ### total_gas_burnt │ 00:05:30 v #7686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:30 v #7687 > > 00:05:30 v #7688 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:30 v #7689 > > inl total_gas_burnt (result : execution_final_result) : gas = 00:05:30 v #7690 > > !\\(result, $'"$0.total_gas_burnt"') 00:05:31 v #7691 > > 00:05:31 v #7692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:31 v #7693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:31 v #7694 > > │ ### as_gas │ 00:05:31 v #7695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:31 v #7696 > > 00:05:31 v #7697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:31 v #7698 > > inl as_gas (gas : gas) : u64 = 00:05:31 v #7699 > > !\\(gas, $'"$0.as_gas()"') 00:05:31 v #7700 > > 00:05:31 v #7701 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:31 v #7702 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:31 v #7703 > > │ ### outcomes │ 00:05:31 v #7704 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:31 v #7705 > > 00:05:31 v #7706 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:31 v #7707 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref 00:05:31 v #7708 > > execution_outcome) = 00:05:31 v #7709 > > inl result = result |> rust.emit 00:05:31 v #7710 > > !\($'"!result.outcomes()"') 00:05:32 v #7711 > > 00:05:32 v #7712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #7713 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:32 v #7714 > > │ ### is_success │ 00:05:32 v #7715 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:32 v #7716 > > 00:05:32 v #7717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #7718 > > inl is_success (outcome : execution_outcome) : bool = 00:05:32 v #7719 > > !\\(outcome, $'"$0.is_success()"') 00:05:32 v #7720 > > 00:05:32 v #7721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #7722 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:32 v #7723 > > │ ### gas_burnt │ 00:05:32 v #7724 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:32 v #7725 > > 00:05:32 v #7726 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #7727 > > inl gas_burnt (outcome : execution_outcome) : gas = 00:05:32 v #7728 > > !\\(outcome, $'"$0.gas_burnt"') 00:05:33 v #7729 > > 00:05:33 v #7730 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #7731 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:33 v #7732 > > │ ### tokens_burnt │ 00:05:33 v #7733 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:33 v #7734 > > 00:05:33 v #7735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #7736 > > inl tokens_burnt (outcome : execution_outcome) : near_token_workspaces = 00:05:33 v #7737 > > !\\(outcome, $'"$0.tokens_burnt"') 00:05:33 v #7738 > > 00:05:33 v #7739 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #7740 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:33 v #7741 > > │ ### transact │ 00:05:33 v #7742 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:33 v #7743 > > 00:05:33 v #7744 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #7745 > > inl transact 00:05:33 v #7746 > > (call : call_transaction) 00:05:33 v #7747 > > : async.future_pin (resultm.result' execution_final_result 00:05:33 v #7748 > > near_workspaces_error) 00:05:33 v #7749 > > = 00:05:33 v #7750 > > !\($'"Box::pin(!call.transact())"') 00:05:33 v #7751 > > 00:05:33 v #7752 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #7753 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:33 v #7754 > > │ ### gas │ 00:05:33 v #7755 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:33 v #7756 > > 00:05:33 v #7757 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #7758 > > inl gas 00:05:33 v #7759 > > (gas : gas) 00:05:33 v #7760 > > (call : call_transaction) 00:05:33 v #7761 > > : call_transaction 00:05:33 v #7762 > > = 00:05:33 v #7763 > > !\($'"!call.gas(!gas)"') 00:05:34 v #7764 > > 00:05:34 v #7765 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #7766 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:34 v #7767 > > │ ### from_tgas │ 00:05:34 v #7768 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:34 v #7769 > > 00:05:34 v #7770 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #7771 > > inl from_tgas 00:05:34 v #7772 > > (tgas : i32) 00:05:34 v #7773 > > : gas 00:05:34 v #7774 > > = 00:05:34 v #7775 > > !\($'"near_workspaces::types::Gas::from_tgas(!tgas)"') 00:05:34 v #7776 > > 00:05:34 v #7777 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #7778 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:34 v #7779 > > │ ### print_usd │ 00:05:34 v #7780 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:34 v #7781 > > 00:05:34 v #7782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #7783 > > inl print_usd retry (result : execution_final_result) = 00:05:34 v #7784 > > inl total_gas_burnt = result |> total_gas_burnt |> as_gas 00:05:34 v #7785 > > inl total_gas_burnt_usd = total_gas_burnt |> near.gas_to_usd 00:05:34 v #7786 > > 00:05:34 v #7787 > > trace Info 00:05:34 v #7788 > > fun () => "near_workspaces.print_usd" 00:05:34 v #7789 > > fun () => { retry total_gas_burnt_usd total_gas_burnt } 00:05:34 v #7790 > > 00:05:34 v #7791 > > result 00:05:34 v #7792 > > |> outcomes 00:05:34 v #7793 > > |> iter.into_iter 00:05:34 v #7794 > > |> iter.cloned 00:05:34 v #7795 > > |> iter.for_each fun outcome => 00:05:34 v #7796 > > inl is_success = outcome |> is_success 00:05:34 v #7797 > > 00:05:34 v #7798 > > inl gas_burnt = outcome |> gas_burnt |> as_gas 00:05:34 v #7799 > > inl gas_burnt_usd = gas_burnt |> near.gas_to_usd 00:05:34 v #7800 > > 00:05:34 v #7801 > > inl tokens_burnt = outcome |> tokens_burnt |> near.as_yoctonear 00:05:34 v #7802 > > inl tokens_burnt_usd = tokens_burnt |> near.tokens_to_usd 00:05:34 v #7803 > > 00:05:34 v #7804 > > trace Info 00:05:34 v #7805 > > fun () => "near_workspaces.print_usd / outcome" 00:05:34 v #7806 > > fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt 00:05:34 v #7807 > > tokens_burnt } 00:05:35 v #7808 > 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 20065 } 00:05:35 v #7809 > 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:36 v #7810 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb to html 00:05:36 v #7811 > 00:00:21 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:36 v #7812 > 00:00:21 v #7 ! validate(nb) 00:05:37 v #7813 > 00:00:21 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:37 v #7814 > 00:00:21 v #9 ! return _pygments_highlight( 00:05:37 v #7815 > 00:00:22 v #10 ! [NbConvertApp] Writing 329820 bytes to c:\home\git\polyglot\lib\spiral\rust\near_workspaces.dib.html 00:05:37 v #7816 > 00:00:22 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 882 } 00:05:37 v #7817 > 00:00:22 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 882 } 00:05:37 v #7818 > 00:00:22 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:37 v #7819 > 00:00:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:37 v #7820 > 00:00:22 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:37 v #7821 > 00:00:22 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 21006 } 00:05:37 d #7822 runtime.execute_with_options_async / { exit_code = 0; output_length = 24519 } 00:05:37 d #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path rust/near_workspaces.dib --retries 3 00:05:37 d #7823 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path testing.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:37 v #7824 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) } 00:05:37 v #7825 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/testing.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/testing.dib" --output-path "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:39 v #7826 > > 00:05:39 v #7827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:39 v #7828 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:39 v #7829 > > │ # testing │ 00:05:39 v #7830 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:39 v #7831 > > 00:05:39 v #7832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:39 v #7833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:39 v #7834 > > │ ## testing │ 00:05:39 v #7835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:39 v #7836 > > 00:05:39 v #7837 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:39 v #7838 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:39 v #7839 > > │ ### testing_trace │ 00:05:39 v #7840 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:42 v #7841 > > 00:05:42 v #7842 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:42 v #7843 > > union testing_trace = 00:05:42 v #7844 > > | Console 00:05:42 v #7845 > > | Trace 00:05:42 v #7846 > > | TraceRaw 00:05:42 v #7847 > > | Silent 00:05:43 v #7848 > > 00:05:43 v #7849 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #7850 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:43 v #7851 > > │ ### __expect │ 00:05:43 v #7852 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:43 v #7853 > > 00:05:43 v #7854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #7855 > > inl rec __expect fn trace' name b a = 00:05:43 v #7856 > > inl result = fn a b 00:05:43 v #7857 > > inl result = 00:05:43 v #7858 > > result || join result 00:05:43 v #7859 > > inl get_raw_text () = 00:05:43 v #7860 > > backend_switch { 00:05:43 v #7861 > > Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"' 00:05:43 v #7862 > > : string 00:05:43 v #7863 > > Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' : 00:05:43 v #7864 > > string 00:05:43 v #7865 > > } 00:05:43 v #7866 > > match trace' with 00:05:43 v #7867 > > | Console => 00:05:43 v #7868 > > inl text = get_raw_text () 00:05:43 v #7869 > > text |> console.write_line 00:05:43 v #7870 > > text 00:05:43 v #7871 > > | Trace => 00:05:43 v #7872 > > trace Info (fun () => name) fun () => { actual = a; expected = b } 00:05:43 v #7873 > > get_raw_text () 00:05:43 v #7874 > > | TraceRaw => 00:05:43 v #7875 > > inl text = get_raw_text () 00:05:43 v #7876 > > trace_raw Info fun () => text 00:05:43 v #7877 > > text 00:05:43 v #7878 > > | Silent => reflection.nameof { __expect } 00:05:43 v #7879 > > |> assert result 00:05:44 v #7880 > > 00:05:44 v #7881 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #7882 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:44 v #7883 > > │ ### __assert_approx_eq │ 00:05:44 v #7884 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:44 v #7885 > > 00:05:44 v #7886 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #7887 > > inl rec __assert_approx_eq trace e b a = 00:05:44 v #7888 > > __expect 00:05:44 v #7889 > > (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001)) 00:05:44 v #7890 > > trace 00:05:44 v #7891 > > (reflection.nameof { __assert_approx_eq }) 00:05:44 v #7892 > > b 00:05:44 v #7893 > > a 00:05:44 v #7894 > > 00:05:44 v #7895 > > inl _assert_approx_eq e b a = 00:05:44 v #7896 > > __assert_approx_eq Console e b a 00:05:44 v #7897 > > 00:05:44 v #7898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #7899 > > //// test 00:05:44 v #7900 > > ///! fsharp 00:05:44 v #7901 > > ///! cuda 00:05:44 v #7902 > > ///! rust 00:05:44 v #7903 > > ///! typescript 00:05:44 v #7904 > > ///! python 00:05:44 v #7905 > > 00:05:44 v #7906 > > 12.345f64 00:05:44 v #7907 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64 00:05:48 v #7908 > > 00:05:48 v #7909 > > ╭─[ 3.92s - return value ]─────────────────────────────────────────────────────╮ 00:05:48 v #7910 > > │ .py output (Cuda): │ 00:05:48 v #7911 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:05:48 v #7912 > > │ │ 00:05:48 v #7913 > > │ .rs output: │ 00:05:48 v #7914 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:05:48 v #7915 > > │ │ 00:05:48 v #7916 > > │ .ts output: │ 00:05:48 v #7917 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:05:48 v #7918 > > │ │ 00:05:48 v #7919 > > │ .py output: │ 00:05:48 v #7920 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:05:48 v #7921 > > │ │ 00:05:48 v #7922 > > │ │ 00:05:48 v #7923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:48 v #7924 > > 00:05:48 v #7925 > > ╭─[ 3.93s - stdout ]───────────────────────────────────────────────────────────╮ 00:05:48 v #7926 > > │ .fsx output: │ 00:05:48 v #7927 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:05:48 v #7928 > > │ │ 00:05:48 v #7929 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:48 v #7930 > > 00:05:48 v #7931 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:48 v #7932 > > //// test 00:05:48 v #7933 > > //// print_code 00:05:48 v #7934 > > 00:05:48 v #7935 > > 1f64 00:05:48 v #7936 > > |> __assert_approx_eq Console (Some 3) 2 00:05:49 v #7937 > > 00:05:49 v #7938 > > ╭─[ 456.33ms - stdout ]────────────────────────────────────────────────────────╮ 00:05:49 v #7939 > > │ let rec closure0 (v0 : string) () : unit = │ 00:05:49 v #7940 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:05:49 v #7941 > > │ v1 v0 │ 00:05:49 v #7942 > > │ and method0 () : unit = │ 00:05:49 v #7943 > > │ let v0 : string = "__assert_approx_eq" │ 00:05:49 v #7944 > > │ let v1 : string = $"{v0} / actual: %A{1.0} / expected: %A{2.0}" │ 00:05:49 v #7945 > > │ let v4 : unit = () │ 00:05:49 v #7946 > > │ let v5 : (unit -> unit) = closure0(v1) │ 00:05:49 v #7947 > > │ let v6 : unit = (fun () -> v5 (); v4) () │ 00:05:49 v #7948 > > │ () │ 00:05:49 v #7949 > > │ method0() │ 00:05:49 v #7950 > > │ │ 00:05:49 v #7951 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 │ 00:05:49 v #7952 > > │ │ 00:05:49 v #7953 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:49 v #7954 > > 00:05:49 v #7955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:49 v #7956 > > //// test 00:05:49 v #7957 > > //// print_code 00:05:49 v #7958 > > 00:05:49 v #7959 > > (dyn 1f64) 00:05:49 v #7960 > > |> _assert_approx_eq (Some 3) 2 00:05:49 v #7961 > > 00:05:49 v #7962 > > ╭─[ 539.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:05:49 v #7963 > > │ let rec method1 (v0 : bool) : bool = │ 00:05:49 v #7964 > > │ v0 │ 00:05:49 v #7965 > > │ and closure0 (v0 : string) () : unit = │ 00:05:49 v #7966 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:05:49 v #7967 > > │ v1 v0 │ 00:05:49 v #7968 > > │ and method0 () : unit = │ 00:05:49 v #7969 > > │ let v0 : float = 1.0 │ 00:05:49 v #7970 > > │ let v1 : float = 2.0 - v0 │ 00:05:49 v #7971 > > │ let v2 : float = -v1 │ 00:05:49 v #7972 > > │ let v3 : bool = v1 >= v2 │ 00:05:49 v #7973 > > │ let v4 : float = │ 00:05:49 v #7974 > > │ if v3 then │ 00:05:49 v #7975 > > │ v1 │ 00:05:49 v #7976 > > │ else │ 00:05:49 v #7977 > > │ v2 │ 00:05:49 v #7978 > > │ let v5 : bool = v4 < 3.0 │ 00:05:49 v #7979 > > │ let v7 : bool = │ 00:05:49 v #7980 > > │ if v5 then │ 00:05:49 v #7981 > > │ true │ 00:05:49 v #7982 > > │ else │ 00:05:49 v #7983 > > │ method1(v5) │ 00:05:49 v #7984 > > │ let v8 : string = "__assert_approx_eq" │ 00:05:49 v #7985 > > │ let v9 : string = $"{v8} / actual: %A{v0} / expected: %A{2.0}" │ 00:05:49 v #7986 > > │ let v12 : unit = () │ 00:05:49 v #7987 > > │ let v13 : (unit -> unit) = closure0(v9) │ 00:05:49 v #7988 > > │ let v14 : unit = (fun () -> v13 (); v12) () │ 00:05:49 v #7989 > > │ let v16 : bool = v7 = false │ 00:05:49 v #7990 > > │ if v16 then │ 00:05:49 v #7991 > > │ failwith<unit> v9 │ 00:05:49 v #7992 > > │ method0() │ 00:05:49 v #7993 > > │ │ 00:05:49 v #7994 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 │ 00:05:49 v #7995 > > │ │ 00:05:49 v #7996 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:49 v #7997 > > 00:05:49 v #7998 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:49 v #7999 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:49 v #8000 > > │ ### __assert_eq │ 00:05:49 v #8001 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:49 v #8002 > > 00:05:49 v #8003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:49 v #8004 > > inl rec __assert_eq trace b a = 00:05:49 v #8005 > > __expect (=) trace (reflection.nameof { __assert_eq }) b a 00:05:49 v #8006 > > 00:05:49 v #8007 > > inl _assert_eq b a = 00:05:49 v #8008 > > __assert_eq Console b a 00:05:50 v #8009 > > 00:05:50 v #8010 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #8011 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:50 v #8012 > > │ ### __assert_eq' │ 00:05:50 v #8013 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 v #8014 > > 00:05:50 v #8015 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:50 v #8016 > > inl rec __assert_eq' trace b a = 00:05:50 v #8017 > > __expect (=.) trace (reflection.nameof { __assert_eq' }) b a 00:05:50 v #8018 > > 00:05:50 v #8019 > > inl _assert_eq' b a = 00:05:50 v #8020 > > __assert_eq' Console b a 00:05:50 v #8021 > > 00:05:50 v #8022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #8023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:50 v #8024 > > │ ### __assert_ne │ 00:05:50 v #8025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 v #8026 > > 00:05:50 v #8027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:50 v #8028 > > inl rec __assert_ne trace b a = 00:05:50 v #8029 > > __expect (<>.) trace (reflection.nameof { __assert_ne }) b a 00:05:50 v #8030 > > 00:05:50 v #8031 > > inl _assert_ne b a = 00:05:50 v #8032 > > __assert_ne Console b a 00:05:50 v #8033 > > 00:05:50 v #8034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #8035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:50 v #8036 > > │ ### __assert_gt │ 00:05:50 v #8037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 v #8038 > > 00:05:50 v #8039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:50 v #8040 > > inl rec __assert_gt trace b a = 00:05:50 v #8041 > > __expect (>) trace (reflection.nameof { __assert_gt }) b a 00:05:50 v #8042 > > 00:05:50 v #8043 > > inl _assert_gt b a = 00:05:50 v #8044 > > __assert_gt Console b a 00:05:51 v #8045 > > 00:05:51 v #8046 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:51 v #8047 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:51 v #8048 > > │ ### __assert_ge │ 00:05:51 v #8049 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:51 v #8050 > > 00:05:51 v #8051 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 v #8052 > > inl rec __assert_ge trace b a = 00:05:51 v #8053 > > __expect (>=) trace (reflection.nameof { __assert_ge }) b a 00:05:51 v #8054 > > 00:05:51 v #8055 > > inl _assert_ge b a = 00:05:51 v #8056 > > __assert_ge Console b a 00:05:51 v #8057 > > 00:05:51 v #8058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:51 v #8059 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:51 v #8060 > > │ ### __assert_lt │ 00:05:51 v #8061 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:51 v #8062 > > 00:05:51 v #8063 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 v #8064 > > inl rec __assert_lt trace b a = 00:05:51 v #8065 > > __expect (<) trace (reflection.nameof { __assert_lt }) b a 00:05:51 v #8066 > > 00:05:51 v #8067 > > inl _assert_lt b a = 00:05:51 v #8068 > > __assert_lt Console b a 00:05:52 v #8069 > > 00:05:52 v #8070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:52 v #8071 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:52 v #8072 > > │ ### __assert_le │ 00:05:52 v #8073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:52 v #8074 > > 00:05:52 v #8075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:52 v #8076 > > inl rec __assert_le trace b a = 00:05:52 v #8077 > > __expect (<=) trace (reflection.nameof { __assert_le }) b a 00:05:52 v #8078 > > 00:05:52 v #8079 > > inl _assert_le b a = 00:05:52 v #8080 > > __assert_le Console b a 00:05:52 v #8081 > > 00:05:52 v #8082 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:52 v #8083 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:52 v #8084 > > │ ### __assert │ 00:05:52 v #8085 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:52 v #8086 > > 00:05:52 v #8087 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:52 v #8088 > > inl rec __assert fn trace b a = 00:05:52 v #8089 > > __expect fn trace (reflection.nameof { __assert }) a b 00:05:52 v #8090 > > 00:05:52 v #8091 > > inl _assert fn b a = 00:05:52 v #8092 > > __assert fn Console b a 00:05:53 v #8093 > > 00:05:53 v #8094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:53 v #8095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:53 v #8096 > > │ ### __assert_between │ 00:05:53 v #8097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:53 v #8098 > > 00:05:53 v #8099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:53 v #8100 > > inl rec __assert_between trace a b actual = 00:05:53 v #8101 > > inl assert_between actual (a, b) = 00:05:53 v #8102 > > __assert_ge Silent a actual 00:05:53 v #8103 > > __assert_le Silent b actual 00:05:53 v #8104 > > true 00:05:53 v #8105 > > __expect assert_between trace (reflection.nameof { __assert_between }) (a, 00:05:53 v #8106 > > b) actual 00:05:53 v #8107 > > 00:05:53 v #8108 > > inl _assert_between a b actual = 00:05:53 v #8109 > > __assert_between Console a b actual 00:05:53 v #8110 > > 00:05:53 v #8111 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:53 v #8112 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:53 v #8113 > > │ ### _assert_fn │ 00:05:53 v #8114 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:53 v #8115 > > 00:05:53 v #8116 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:53 v #8117 > > inl rec _assert_fn fn list = 00:05:53 v #8118 > > list 00:05:53 v #8119 > > |> listm.rev 00:05:53 v #8120 > > |> listm.map fun input, expected => join 00:05:53 v #8121 > > input 00:05:53 v #8122 > > |> fn 00:05:53 v #8123 > > |> resultm.get 00:05:53 v #8124 > > |> fun x => 00:05:53 v #8125 > > inl expected' = join expected 00:05:53 v #8126 > > inl name = reflection.nameof { _assert_fn } 00:05:53 v #8127 > > try 00:05:53 v #8128 > > fun () => 00:05:53 v #8129 > > console.write_line "" 00:05:53 v #8130 > > trace Verbose 00:05:53 v #8131 > > fun () => name 00:05:53 v #8132 > > fun () => { input } 00:05:53 v #8133 > > x 00:05:53 v #8134 > > |> sm'.format 00:05:53 v #8135 > > |> _assert_eq' (expected' |> sm'.format) 00:05:53 v #8136 > > true 00:05:53 v #8137 > > fun ex => 00:05:53 v #8138 > > trace Critical 00:05:53 v #8139 > > fun () => 00:05:53 v #8140 > > backend_switch { 00:05:53 v #8141 > > Fsharp = fun () => $'$"{!name} / error"' : 00:05:53 v #8142 > > string 00:05:53 v #8143 > > Python = fun () => $'f"{!name} / error"' : 00:05:53 v #8144 > > string 00:05:53 v #8145 > > } 00:05:53 v #8146 > > fun () => { ex expected } 00:05:53 v #8147 > > Some false 00:05:53 v #8148 > > |> optionm.value 00:05:53 v #8149 > > |> listm'.filter not 00:05:53 v #8150 > > |> function 00:05:53 v #8151 > > | [[]] => () 00:05:53 v #8152 > > | x => x |> sm'.format_debug |> failwith 00:05:53 v #8153 > > 00:05:53 v #8154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:53 v #8155 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:53 v #8156 > > │ ## fsharp │ 00:05:53 v #8157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:53 v #8158 > > 00:05:53 v #8159 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:53 v #8160 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:53 v #8161 > > │ ### __assert_contains │ 00:05:53 v #8162 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:53 v #8163 > > 00:05:53 v #8164 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:53 v #8165 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) : 00:05:53 v #8166 > > () = 00:05:53 v #8167 > > __expect 00:05:53 v #8168 > > fun a b => 00:05:53 v #8169 > > a 00:05:53 v #8170 > > |> $'List.ofSeq' 00:05:53 v #8171 > > |> fun x => x : listm'.list' t 00:05:53 v #8172 > > |> $'List.tryFind' ((=) b) 00:05:53 v #8173 > > |> optionm'.unbox 00:05:53 v #8174 > > |> fun (x : option t) => x <> None 00:05:53 v #8175 > > trace 00:05:53 v #8176 > > // TODO: forall nameof (Cannot dyn a forall into a runtime var.) 00:05:53 v #8177 > > // Metavars that are not part of the enclosing function's signature are 00:05:53 v #8178 > > not allowed. They need to be values. 00:05:53 v #8179 > > // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string 00:05:53 v #8180 > > // (reflection.nameof { __assert_contains }) 00:05:53 v #8181 > > "__assert_contains" 00:05:53 v #8182 > > b 00:05:53 v #8183 > > a 00:05:53 v #8184 > > 00:05:53 v #8185 > > inl _assert_contains b a = 00:05:53 v #8186 > > __assert_contains Console b a 00:05:54 v #8187 > > 00:05:54 v #8188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:54 v #8189 > > //// test 00:05:54 v #8190 > > 00:05:54 v #8191 > > ;[[ "a"; "b"; "c" ]] 00:05:54 v #8192 > > |> _assert_contains "b" 00:05:55 v #8193 > > 00:05:55 v #8194 > > ╭─[ 834.96ms - stdout ]────────────────────────────────────────────────────────╮ 00:05:55 v #8195 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b" │ 00:05:55 v #8196 > > │ │ 00:05:55 v #8197 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:55 v #8198 > > 00:05:55 v #8199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:55 v #8200 > > //// test 00:05:55 v #8201 > > 00:05:55 v #8202 > > "abcd" 00:05:55 v #8203 > > |> _assert_contains 'b' 00:05:55 v #8204 > > 00:05:55 v #8205 > > ╭─[ 443.10ms - stdout ]────────────────────────────────────────────────────────╮ 00:05:55 v #8206 > > │ __assert_contains / actual: "abcd" / expected: 'b' │ 00:05:55 v #8207 > > │ │ 00:05:55 v #8208 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:55 v #8209 > > 00:05:55 v #8210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:55 v #8211 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:55 v #8212 > > │ ### _throws │ 00:05:55 v #8213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:55 v #8214 > > 00:05:55 v #8215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:55 v #8216 > > inl _throws (fn : () -> ()) : option exn = 00:05:55 v #8217 > > inl none = None : option exn 00:05:55 v #8218 > > inl some (s : exn) = Some s 00:05:55 v #8219 > > backend_switch { 00:05:55 v #8220 > > Fsharp = fun () => 00:05:55 v #8221 > > $'try !fn (); !none with ex -> ex |> !some ' : option exn 00:05:55 v #8222 > > Python = fun () => 00:05:55 v #8223 > > $'fn = !fn ' 00:05:55 v #8224 > > $'none = !none ' 00:05:55 v #8225 > > $'some = !some ' 00:05:55 v #8226 > > $'try: fn(); x = none ' 00:05:55 v #8227 > > $'except Exception as ex: x = some(ex)' 00:05:55 v #8228 > > $'x' : option exn 00:05:55 v #8229 > > } 00:05:56 v #8230 > > 00:05:56 v #8231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:56 v #8232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:56 v #8233 > > │ ### print_and_return │ 00:05:56 v #8234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:56 v #8235 > > 00:05:56 v #8236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:56 v #8237 > > inl rec print_and_return x = 00:05:56 v #8238 > > inl name = reflection.nameof { print_and_return } 00:05:56 v #8239 > > backend_switch { 00:05:56 v #8240 > > Fsharp = fun () => $'printfn $"{!name} / x: {!x}"' : () 00:05:56 v #8241 > > Python = fun () => $'print(f"{!name} / x: {!x}")' : () 00:05:56 v #8242 > > } 00:05:56 v #8243 > > x 00:05:56 v #8244 > 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 19917 } 00:05:56 v #8245 > 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:57 v #8246 > 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/testing.dib.ipynb to html 00:05:57 v #8247 > 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:57 v #8248 > 00:00:19 v #7 ! validate(nb) 00:05:58 v #8249 > 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:58 v #8250 > 00:00:20 v #9 ! return _pygments_highlight( 00:05:58 v #8251 > 00:00:20 v #10 ! [NbConvertApp] Writing 321524 bytes to c:\home\git\polyglot\lib\spiral\testing.dib.html 00:05:58 v #8252 > 00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:05:58 v #8253 > 00:00:20 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:05:58 v #8254 > 00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:59 v #8255 > 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:59 v #8256 > 00:00:21 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:59 v #8257 > 00:00:21 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 20832 } 00:05:59 d #8258 runtime.execute_with_options_async / { exit_code = 0; output_length = 24244 } 00:05:59 d #7 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path testing.dib --retries 3 00:05:59 d #8259 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path guid.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:59 v #8260 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) } 00:05:59 v #8261 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/guid.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/guid.dib" --output-path "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:00 v #8262 > > 00:06:00 v #8263 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:00 v #8264 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:00 v #8265 > > │ # guid │ 00:06:00 v #8266 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:03 v #8267 > > 00:06:03 v #8268 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #8269 > > //// test 00:06:03 v #8270 > > 00:06:03 v #8271 > > open testing 00:06:05 v #8272 > > 00:06:05 v #8273 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #8274 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:05 v #8275 > > │ ## guid │ 00:06:05 v #8276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:05 v #8277 > > 00:06:05 v #8278 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #8279 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:05 v #8280 > > │ ### guid │ 00:06:05 v #8281 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:05 v #8282 > > 00:06:05 v #8283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #8284 > > nominal guid_python = 00:06:05 v #8285 > > `( 00:06:05 v #8286 > > global "import uuid" 00:06:05 v #8287 > > $'' : $'uuid.UUID' 00:06:05 v #8288 > > ) 00:06:05 v #8289 > > type guid_switch = 00:06:05 v #8290 > > { 00:06:05 v #8291 > > Fsharp : $'System.Guid' 00:06:05 v #8292 > > Python : guid_python 00:06:05 v #8293 > > } 00:06:05 v #8294 > > nominal guid = $'backend_switch `(guid_switch)' 00:06:05 v #8295 > > 00:06:05 v #8296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #8297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:05 v #8298 > > │ ### new_guid │ 00:06:05 v #8299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:05 v #8300 > > 00:06:05 v #8301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #8302 > > inl new_guid (x : string) : guid = 00:06:05 v #8303 > > run_target_args (fun () => x) function 00:06:05 v #8304 > > | Rust (Contract) => fun _ => null () 00:06:05 v #8305 > > | _ => fun x => x |> convert 00:06:05 v #8306 > > 00:06:05 v #8307 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #8308 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:05 v #8309 > > │ ### new_raw_guid │ 00:06:05 v #8310 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:05 v #8311 > > 00:06:05 v #8312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #8313 > > inl new_raw_guid () : guid = 00:06:05 v #8314 > > backend_switch { 00:06:05 v #8315 > > Fsharp = fun () => $'System.Guid.NewGuid' () : guid 00:06:05 v #8316 > > Python = fun () => $'uuid.uuid4()' : guid 00:06:05 v #8317 > > } 00:06:06 v #8318 > > 00:06:06 v #8319 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:06 v #8320 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:06 v #8321 > > │ ### hash_guid │ 00:06:06 v #8322 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:06 v #8323 > > 00:06:06 v #8324 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:06 v #8325 > > type hash_guid = guid 00:06:06 v #8326 > > 00:06:06 v #8327 > > let hash_guid (hash : string) : hash_guid = 00:06:06 v #8328 > > run_target_args (fun () => hash) function 00:06:06 v #8329 > > | Rust (Contract) => fun _ => null () 00:06:06 v #8330 > > | _ => fun hash => 00:06:06 v #8331 > > inl hash = hash |> sm'.pad_left 32i32 '0' 00:06:06 v #8332 > > inl a = hash |> sm'.range (am'.Start 0i32) (am'.End fun _ => 8) 00:06:06 v #8333 > > inl b = hash |> sm'.range (am'.Start 8i32) (am'.End fun _ => 12) 00:06:06 v #8334 > > inl c = hash |> sm'.range (am'.Start 12i32) (am'.End fun _ => 16) 00:06:06 v #8335 > > inl d = hash |> sm'.range (am'.Start 16i32) (am'.End fun _ => 20) 00:06:06 v #8336 > > inl e = hash |> sm'.range (am'.Start 20i32) (am'.End fun _ => 32) 00:06:06 v #8337 > > $'$"{!a}-{!b}-{!c}-{!d}-{!e}"' |> new_guid 00:06:06 v #8338 > > 00:06:06 v #8339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:06 v #8340 > > //// test 00:06:06 v #8341 > > ///! fsharp 00:06:06 v #8342 > > ///! cuda 00:06:06 v #8343 > > ///! rust 00:06:06 v #8344 > > ///! typescript 00:06:06 v #8345 > > ///! python 00:06:06 v #8346 > > 00:06:06 v #8347 > > "" 00:06:06 v #8348 > > |> hash_guid 00:06:06 v #8349 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000") 00:06:06 v #8350 > > 00:06:06 v #8351 > > "123456789012345678901234567890123" 00:06:06 v #8352 > > |> hash_guid 00:06:06 v #8353 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012") 00:06:11 v #8354 > > 00:06:11 v #8355 > > ╭─[ 4.39s - return value ]─────────────────────────────────────────────────────╮ 00:06:11 v #8356 > > │ │ 00:06:11 v #8357 > > │ .py output (Cuda): │ 00:06:11 v #8358 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:06:11 v #8359 > > │ 00000000-0000-0000-0000-000000000000 │ 00:06:11 v #8360 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:06:11 v #8361 > > │ 12345678-9012-3456-7890-123456789012 │ 00:06:11 v #8362 > > │ │ 00:06:11 v #8363 > > │ │ 00:06:11 v #8364 > > │ .rs output: │ 00:06:11 v #8365 > > │ __assert_eq' / actual: Guid(00000000-0000-0000-0000-000000000000) / │ 00:06:11 v #8366 > > │ expected: Guid(00000000-0000-0000-0000-000000000000) │ 00:06:11 v #8367 > > │ __assert_eq' / actual: Guid(12345678-9012-3456-7890-123456789012) / │ 00:06:11 v #8368 > > │ expected: Guid(12345678-9012-3456-7890-123456789012) │ 00:06:11 v #8369 > > │ │ 00:06:11 v #8370 > > │ │ 00:06:11 v #8371 > > │ .ts output: │ 00:06:11 v #8372 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:06:11 v #8373 > > │ 00000000-0000-0000-0000-000000000000 │ 00:06:11 v #8374 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:06:11 v #8375 > > │ 12345678-9012-3456-7890-123456789012 │ 00:06:11 v #8376 > > │ │ 00:06:11 v #8377 > > │ │ 00:06:11 v #8378 > > │ .py output: │ 00:06:11 v #8379 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:06:11 v #8380 > > │ 00000000-0000-0000-0000-000000000000 │ 00:06:11 v #8381 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:06:11 v #8382 > > │ 12345678-9012-3456-7890-123456789012 │ 00:06:11 v #8383 > > │ │ 00:06:11 v #8384 > > │ │ 00:06:11 v #8385 > > │ │ 00:06:11 v #8386 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 v #8387 > > 00:06:11 v #8388 > > ╭─[ 4.41s - stdout ]───────────────────────────────────────────────────────────╮ 00:06:11 v #8389 > > │ .fsx output: │ 00:06:11 v #8390 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:06:11 v #8391 > > │ 00000000-0000-0000-0000-000000000000 │ 00:06:11 v #8392 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:06:11 v #8393 > > │ 12345678-9012-3456-7890-123456789012 │ 00:06:11 v #8394 > > │ │ 00:06:11 v #8395 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 v #8396 > > 00:06:11 v #8397 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:11 v #8398 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:11 v #8399 > > │ ## main │ 00:06:11 v #8400 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 v #8401 > > 00:06:11 v #8402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:11 v #8403 > > inl main () = 00:06:11 v #8404 > > $'let new_guid x = !new_guid x' : () 00:06:11 v #8405 > > $'let hash_guid x = !hash_guid x' : () 00:06:11 v #8406 > > $'let new_raw_guid x = !new_raw_guid x' : () 00:06:11 v #8407 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7768 } 00:06:11 v #8408 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:13 v #8409 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/guid.dib.ipynb to html 00:06:13 v #8410 > 00:00:13 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:13 v #8411 > 00:00:13 v #7 ! validate(nb) 00:06:13 v #8412 > 00:00:14 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:13 v #8413 > 00:00:14 v #9 ! return _pygments_highlight( 00:06:13 v #8414 > 00:00:14 v #10 ! [NbConvertApp] Writing 287153 bytes to c:\home\git\polyglot\lib\spiral\guid.dib.html 00:06:13 v #8415 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:06:13 v #8416 > 00:00:14 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:06:13 v #8417 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:14 v #8418 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:14 v #8419 > 00:00:14 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:14 v #8420 > 00:00:14 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8677 } 00:06:14 d #8421 runtime.execute_with_options_async / { exit_code = 0; output_length = 11514 } 00:06:14 d #8 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path guid.dib --retries 3 00:06:14 d #8422 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path async.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:14 v #8423 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) } 00:06:14 v #8424 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/async.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/async.dib" --output-path "c:/home/git/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:15 v #8425 > > 00:06:15 v #8426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:15 v #8427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:15 v #8428 > > │ # async │ 00:06:15 v #8429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:19 v #8430 > > 00:06:19 v #8431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:19 v #8432 > > //// test 00:06:19 v #8433 > > 00:06:19 v #8434 > > open testing 00:06:20 v #8435 > > 00:06:20 v #8436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:20 v #8437 > > open rust 00:06:20 v #8438 > > open rust_operators 00:06:20 v #8439 > > 00:06:20 v #8440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:20 v #8441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:20 v #8442 > > │ ### base_let' │ 00:06:20 v #8443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:20 v #8444 > > 00:06:20 v #8445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:20 v #8446 > > inl base_let' x = 00:06:20 v #8447 > > let' x 00:06:21 v #8448 > > 00:06:21 v #8449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:21 v #8450 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:21 v #8451 > > │ ## rust │ 00:06:21 v #8452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:21 v #8453 > > 00:06:21 v #8454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:21 v #8455 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:21 v #8456 > > │ ### future │ 00:06:21 v #8457 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:21 v #8458 > > 00:06:21 v #8459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:21 v #8460 > > nominal future t = 00:06:21 v #8461 > > `( 00:06:21 v #8462 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:21 v #8463 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype 00:06:21 v #8464 > > std_future_Future<'T> = class end" 00:06:21 v #8465 > > $'' : $'std_future_Future<`t>' 00:06:21 v #8466 > > ) 00:06:21 v #8467 > > 00:06:21 v #8468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:21 v #8469 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:21 v #8470 > > │ ### future_pin │ 00:06:21 v #8471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:21 v #8472 > > 00:06:21 v #8473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:21 v #8474 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t))) 00:06:21 v #8475 > > 00:06:21 v #8476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:21 v #8477 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:21 v #8478 > > │ ### future_pin_send │ 00:06:21 v #8479 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:21 v #8480 > > 00:06:21 v #8481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:21 v #8482 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t)))) 00:06:22 v #8483 > > 00:06:22 v #8484 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:22 v #8485 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:22 v #8486 > > │ ### block_on_tokio │ 00:06:22 v #8487 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 v #8488 > > 00:06:22 v #8489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 v #8490 > > inl block_on_tokio forall t. (fn : future_pin t) : t = 00:06:22 v #8491 > > inl runtime : infer = 00:06:22 v #8492 > > 00:06:22 v #8493 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap() 00:06:22 v #8494 > > "') 00:06:22 v #8495 > > !\\(fn, $'"!runtime.handle().block_on($0)"') 00:06:22 v #8496 > > 00:06:22 v #8497 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:22 v #8498 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:22 v #8499 > > │ ### block_on_futures_lite │ 00:06:22 v #8500 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 v #8501 > > 00:06:22 v #8502 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 v #8503 > > inl block_on_futures_lite forall t. (fn : future_pin t) : t = 00:06:22 v #8504 > > !\\(fn, $'"futures_lite::future::block_on($0)"') 00:06:23 v #8505 > > 00:06:23 v #8506 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:23 v #8507 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:23 v #8508 > > │ ### block_on_futures │ 00:06:23 v #8509 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:23 v #8510 > > 00:06:23 v #8511 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:23 v #8512 > > inl block_on_futures forall t. (fn : future_pin t) : t = 00:06:23 v #8513 > > !\\(fn, $'"futures::executor::block_on($0)"') 00:06:23 v #8514 > > 00:06:23 v #8515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:23 v #8516 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:23 v #8517 > > │ ### block_on_async_std │ 00:06:23 v #8518 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:23 v #8519 > > 00:06:23 v #8520 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:23 v #8521 > > inl block_on_async_std forall t. (fn : future_pin t) : t = 00:06:23 v #8522 > > !\\(fn, $'"async_std::task::block_on($0)"') 00:06:23 v #8523 > > 00:06:23 v #8524 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:23 v #8525 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:23 v #8526 > > │ ### block_on_tokio_send │ 00:06:23 v #8527 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:23 v #8528 > > 00:06:23 v #8529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:23 v #8530 > > inl block_on_tokio_send forall t. (fn : future_pin_send t) : t = 00:06:23 v #8531 > > !\($'"tokio::runtime::block_on(!fn)"') 00:06:24 v #8532 > > 00:06:24 v #8533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:24 v #8534 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:24 v #8535 > > │ ### stream_ext_tokio │ 00:06:24 v #8536 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:24 v #8537 > > 00:06:24 v #8538 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:24 v #8539 > > nominal stream_ext_tokio = 00:06:24 v #8540 > > `( 00:06:24 v #8541 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:24 v #8542 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype 00:06:24 v #8543 > > tokio_stream_StreamExt = class end" 00:06:24 v #8544 > > $'' : $'tokio_stream_StreamExt' 00:06:24 v #8545 > > ) 00:06:24 v #8546 > > 00:06:24 v #8547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:24 v #8548 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:24 v #8549 > > │ ### join_handle_tokio │ 00:06:24 v #8550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:24 v #8551 > > 00:06:24 v #8552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:24 v #8553 > > nominal join_handle_tokio t = 00:06:24 v #8554 > > `( 00:06:24 v #8555 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:24 v #8556 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype 00:06:24 v #8557 > > tokio_task_JoinHandle<'T> = class end" 00:06:24 v #8558 > > $'' : $'tokio_task_JoinHandle<`t>' 00:06:24 v #8559 > > ) 00:06:25 v #8560 > > 00:06:25 v #8561 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:25 v #8562 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:25 v #8563 > > │ ### stream_collect_tokio │ 00:06:25 v #8564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:25 v #8565 > > 00:06:25 v #8566 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:25 v #8567 > > inl stream_collect_tokio forall t u. 00:06:25 v #8568 > > (stream : t) 00:06:25 v #8569 > > : future_pin (am'.vec u) 00:06:25 v #8570 > > = 00:06:25 v #8571 > > !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"') 00:06:25 v #8572 > > 00:06:25 v #8573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:25 v #8574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:25 v #8575 > > │ ### stream_collect_futures │ 00:06:25 v #8576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:25 v #8577 > > 00:06:25 v #8578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:25 v #8579 > > inl stream_collect_futures forall t u. 00:06:25 v #8580 > > (stream : t) 00:06:25 v #8581 > > : future_pin (am'.vec u) 00:06:25 v #8582 > > = 00:06:25 v #8583 > > !\($'"Box::pin(futures::stream::StreamExt::collect(!stream))"') 00:06:26 v #8584 > > 00:06:26 v #8585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:26 v #8586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:26 v #8587 > > │ ### stream_next_tokio │ 00:06:26 v #8588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:26 v #8589 > > 00:06:26 v #8590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:26 v #8591 > > inl stream_next_tokio forall t u. 00:06:26 v #8592 > > (stream : t) 00:06:26 v #8593 > > : future_pin (optionm'.option' u) 00:06:26 v #8594 > > = 00:06:26 v #8595 > > !\($'"let mut !stream = !stream"') 00:06:26 v #8596 > > !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"') 00:06:26 v #8597 > > 00:06:26 v #8598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:26 v #8599 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:26 v #8600 > > │ ### stream_filter_map_tokio │ 00:06:26 v #8601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:26 v #8602 > > 00:06:26 v #8603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:26 v #8604 > > inl stream_filter_map_tokio forall t u v. 00:06:26 v #8605 > > (fn : u -> optionm'.option' v) 00:06:26 v #8606 > > (stream : t) 00:06:26 v #8607 > > : infer' v 00:06:26 v #8608 > > = 00:06:26 v #8609 > > inl fn = join fn 00:06:26 v #8610 > > !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"') 00:06:27 v #8611 > > 00:06:27 v #8612 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:27 v #8613 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:27 v #8614 > > │ ### stream_filter_map_futures │ 00:06:27 v #8615 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:27 v #8616 > > 00:06:27 v #8617 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:27 v #8618 > > inl stream_filter_map_futures forall t u v. 00:06:27 v #8619 > > (fn : u -> optionm'.option' v) 00:06:27 v #8620 > > (stream : t) 00:06:27 v #8621 > > : infer' v 00:06:27 v #8622 > > = 00:06:27 v #8623 > > inl fn = join fn 00:06:27 v #8624 > > !\($'"futures::stream::StreamExt::filter_map(!stream, |x| async { !fn(x) 00:06:27 v #8625 > > })"') 00:06:27 v #8626 > > 00:06:27 v #8627 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:27 v #8628 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:27 v #8629 > > │ ### spawn_tokio │ 00:06:27 v #8630 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:27 v #8631 > > 00:06:27 v #8632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:27 v #8633 > > inl spawn_tokio forall t. (fn : future_pin_send t) : join_handle_tokio t = 00:06:27 v #8634 > > !\($'"tokio::runtime::spawn(!fn)"') 00:06:27 v #8635 > > 00:06:27 v #8636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:27 v #8637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:27 v #8638 > > │ ### try_join_all │ 00:06:27 v #8639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:27 v #8640 > > 00:06:27 v #8641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:27 v #8642 > > nominal try_join_all t = 00:06:27 v #8643 > > `( 00:06:27 v #8644 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:27 v #8645 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype 00:06:27 v #8646 > > futures_future_TryJoinAll<'T> = class end" 00:06:27 v #8647 > > $'' : $'futures_future_TryJoinAll<`t>' 00:06:27 v #8648 > > ) 00:06:27 v #8649 > > 00:06:27 v #8650 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t 00:06:27 v #8651 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string)) 00:06:27 v #8652 > > = 00:06:27 v #8653 > > inl x = join x 00:06:27 v #8654 > > !\($'"futures::future::try_join_all(!x)"') 00:06:28 v #8655 > > 00:06:28 v #8656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:28 v #8657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:28 v #8658 > > │ ### fuse_tokio │ 00:06:28 v #8659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:28 v #8660 > > 00:06:28 v #8661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:28 v #8662 > > nominal fuse_tokio t = 00:06:28 v #8663 > > `( 00:06:28 v #8664 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:28 v #8665 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype 00:06:28 v #8666 > > tokio_prelude_stream_Fuse<'T> = class end" 00:06:28 v #8667 > > $'' : $'tokio_prelude_stream_Fuse<`t>' 00:06:28 v #8668 > > ) 00:06:28 v #8669 > > 00:06:28 v #8670 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:28 v #8671 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:28 v #8672 > > │ ### fuse' │ 00:06:28 v #8673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:28 v #8674 > > 00:06:28 v #8675 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:28 v #8676 > > type fuse' t = fuse_tokio t 00:06:29 v #8677 > > 00:06:29 v #8678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #8679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:29 v #8680 > > │ ### future_fuse │ 00:06:29 v #8681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:29 v #8682 > > 00:06:29 v #8683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #8684 > > inl future_fuse forall t. (x : future_pin t) : fuse' (future_pin t) = 00:06:29 v #8685 > > !\($'"futures::future::FutureExt::fuse(!x)"') 00:06:29 v #8686 > > 00:06:29 v #8687 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #8688 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:29 v #8689 > > │ ### join_all │ 00:06:29 v #8690 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:29 v #8691 > > 00:06:29 v #8692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #8693 > > nominal join_all t = 00:06:29 v #8694 > > `( 00:06:29 v #8695 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:29 v #8696 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype 00:06:29 v #8697 > > futures_future_JoinAll<'T> = class end" 00:06:29 v #8698 > > $'' : $'futures_future_JoinAll<`t>' 00:06:29 v #8699 > > ) 00:06:29 v #8700 > > 00:06:29 v #8701 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) = 00:06:29 v #8702 > > inl x = join x 00:06:29 v #8703 > > !\($'"futures::future::join_all(!x)"') 00:06:30 v #8704 > > 00:06:30 v #8705 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #8706 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:30 v #8707 > > │ ### join_all_send │ 00:06:30 v #8708 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:30 v #8709 > > 00:06:30 v #8710 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #8711 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all 00:06:30 v #8712 > > (future_pin_send t) = 00:06:30 v #8713 > > inl x = join x 00:06:30 v #8714 > > !\($'"futures::future::join_all(!x)"') 00:06:30 v #8715 > > 00:06:30 v #8716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #8717 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:30 v #8718 > > │ ### join_handle' │ 00:06:30 v #8719 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:30 v #8720 > > 00:06:30 v #8721 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #8722 > > type join_handle' t = join_handle_tokio t 00:06:30 v #8723 > > 00:06:30 v #8724 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #8725 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:30 v #8726 > > │ ### await_handle │ 00:06:30 v #8727 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:30 v #8728 > > 00:06:30 v #8729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #8730 > > inl await_handle forall t. (x : join_handle' t) : t = 00:06:30 v #8731 > > !\($'"!x.await"') 00:06:31 v #8732 > > 00:06:31 v #8733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #8734 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:31 v #8735 > > │ ### await_all │ 00:06:31 v #8736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:31 v #8737 > > 00:06:31 v #8738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #8739 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t = 00:06:31 v #8740 > > !\($'"!x.await"') 00:06:31 v #8741 > > 00:06:31 v #8742 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #8743 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:31 v #8744 > > │ ### await_all_send │ 00:06:31 v #8745 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:31 v #8746 > > 00:06:31 v #8747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #8748 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t = 00:06:31 v #8749 > > !\($'"!x.await"') 00:06:32 v #8750 > > 00:06:32 v #8751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #8752 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:32 v #8753 > > │ ### try_await_all │ 00:06:32 v #8754 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:32 v #8755 > > 00:06:32 v #8756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #8757 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t 00:06:32 v #8758 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string = 00:06:32 v #8759 > > !\($'"!x.await"') 00:06:32 v #8760 > > 00:06:32 v #8761 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #8762 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:32 v #8763 > > │ ### try_await_all_send │ 00:06:32 v #8764 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:32 v #8765 > > 00:06:32 v #8766 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #8767 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send 00:06:32 v #8768 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t) 00:06:32 v #8769 > > sm'.std_string = 00:06:32 v #8770 > > !\($'"!x.await"') 00:06:33 v #8771 > > 00:06:33 v #8772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #8773 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:33 v #8774 > > │ ### await │ 00:06:33 v #8775 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 v #8776 > > 00:06:33 v #8777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #8778 > > inl await forall t. (x : future_pin t) : t = 00:06:33 v #8779 > > !\($'"!x.await"') 00:06:33 v #8780 > > 00:06:33 v #8781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #8782 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:33 v #8783 > > │ ### await │ 00:06:33 v #8784 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 v #8785 > > 00:06:33 v #8786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #8787 > > inl await_send forall t. (x : future_pin_send t) : t = 00:06:33 v #8788 > > !\($'"!x.await"') 00:06:33 v #8789 > > 00:06:33 v #8790 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #8791 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:33 v #8792 > > │ ### into_iter │ 00:06:33 v #8793 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 v #8794 > > 00:06:33 v #8795 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #8796 > > nominal into_iter t = 00:06:33 v #8797 > > `( 00:06:33 v #8798 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:33 v #8799 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype 00:06:33 v #8800 > > rayon_vec_IntoIter<'T> = class end" 00:06:33 v #8801 > > $'' : $'rayon_vec_IntoIter<`t>' 00:06:33 v #8802 > > ) 00:06:34 v #8803 > > 00:06:34 v #8804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8805 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:34 v #8806 > > │ ### into_par_iter │ 00:06:34 v #8807 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:34 v #8808 > > 00:06:34 v #8809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8810 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t = 00:06:34 v #8811 > > !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"') 00:06:34 v #8812 > > 00:06:34 v #8813 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8814 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:34 v #8815 > > │ ### par_iter │ 00:06:34 v #8816 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:34 v #8817 > > 00:06:34 v #8818 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8819 > > inl par_iter forall t. (x : am'.vec t) : into_iter t = 00:06:34 v #8820 > > !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"') 00:06:35 v #8821 > > 00:06:35 v #8822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8823 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:35 v #8824 > > │ ### iter_map │ 00:06:35 v #8825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:35 v #8826 > > 00:06:35 v #8827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8828 > > nominal iter_map t u = 00:06:35 v #8829 > > `( 00:06:35 v #8830 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:35 v #8831 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T> 00:06:35 v #8832 > > = class end" 00:06:35 v #8833 > > $'' : $'rayon_iter_Map<`t>' 00:06:35 v #8834 > > ) 00:06:35 v #8835 > > 00:06:35 v #8836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:35 v #8838 > > │ ### par_map │ 00:06:35 v #8839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:35 v #8840 > > 00:06:35 v #8841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8842 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter 00:06:35 v #8843 > > t) u = 00:06:35 v #8844 > > !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"') 00:06:36 v #8845 > > 00:06:36 v #8846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:36 v #8848 > > │ ### par_collect │ 00:06:36 v #8849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:36 v #8850 > > 00:06:36 v #8851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8852 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u = 00:06:36 v #8853 > > !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"') 00:06:36 v #8854 > > 00:06:36 v #8855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:36 v #8857 > > │ ### try_join_all_iter │ 00:06:36 v #8858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:36 v #8859 > > 00:06:36 v #8860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8861 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t 00:06:36 v #8862 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t 00:06:36 v #8863 > > sm'.std_string)) = 00:06:36 v #8864 > > inl x = join x 00:06:36 v #8865 > > !\($'"futures::future::try_join_all(!x)"') 00:06:36 v #8866 > > 00:06:36 v #8867 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8868 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:36 v #8869 > > │ ### future_init │ 00:06:36 v #8870 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:36 v #8871 > > 00:06:36 v #8872 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8873 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t = 00:06:36 v #8874 > > (!\($'"true; let __future_init = Box::pin(/*"') : bool) |> ignore 00:06:36 v #8875 > > if move 00:06:36 v #8876 > > then (!\($'"*/ async move { /*"') : bool) |> ignore 00:06:36 v #8877 > > else (!\($'"*/ async { /*"') : bool) |> ignore 00:06:36 v #8878 > > (!\($'"*/ //"') : bool) |> ignore 00:06:36 v #8879 > > 00:06:36 v #8880 > > inl x' = x () 00:06:36 v #8881 > > // inl x' = join x' 00:06:36 v #8882 > > 00:06:36 v #8883 > > inl depth = 1, 0 00:06:36 v #8884 > > 00:06:36 v #8885 > > x' |> rust.fix_closure depth 00:06:36 v #8886 > > 00:06:36 v #8887 > > !\($'"__future_init"') 00:06:37 v #8888 > > 00:06:37 v #8889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8890 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:37 v #8891 > > │ ### new_future │ 00:06:37 v #8892 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:37 v #8893 > > 00:06:37 v #8894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8895 > > inl new_future forall t. (x : () -> t) : future_pin t = 00:06:37 v #8896 > > inl result = future_init false x 00:06:37 v #8897 > > !\($'"!result"') 00:06:37 v #8898 > > 00:06:37 v #8899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:37 v #8901 > > │ ### new_future_move │ 00:06:37 v #8902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:37 v #8903 > > 00:06:37 v #8904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8905 > > inl new_future_move forall t. (x : () -> t) : future_pin t = 00:06:37 v #8906 > > inl result = future_init true x 00:06:37 v #8907 > > !\($'"!result"') 00:06:38 v #8908 > > 00:06:38 v #8909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8910 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:38 v #8911 > > │ ### new_future_send │ 00:06:38 v #8912 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:38 v #8913 > > 00:06:38 v #8914 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8915 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t = 00:06:38 v #8916 > > inl result = future_init false x 00:06:38 v #8917 > > !\($'"!result"') 00:06:38 v #8918 > > 00:06:38 v #8919 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8920 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:38 v #8921 > > │ ### new_future_move_send │ 00:06:38 v #8922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:38 v #8923 > > 00:06:38 v #8924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8925 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t = 00:06:38 v #8926 > > inl result = future_init true x 00:06:38 v #8927 > > !\($'"!result"') 00:06:39 v #8928 > > 00:06:39 v #8929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:39 v #8931 > > │ ## fsharp │ 00:06:39 v #8932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:39 v #8933 > > 00:06:39 v #8934 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8935 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:39 v #8936 > > │ ### async │ 00:06:39 v #8937 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:39 v #8938 > > 00:06:39 v #8939 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8940 > > nominal async_python t = 00:06:39 v #8941 > > `( 00:06:39 v #8942 > > backend_switch `(()) `({}) { 00:06:39 v #8943 > > Python = (fun () => global "import asyncio") : () -> () 00:06:39 v #8944 > > } 00:06:39 v #8945 > > $'' : $'any' 00:06:39 v #8946 > > ) 00:06:39 v #8947 > > type async_switch t = 00:06:39 v #8948 > > { 00:06:39 v #8949 > > Fsharp : $'Async<`t>' 00:06:39 v #8950 > > Python : async_python t 00:06:39 v #8951 > > } 00:06:39 v #8952 > > nominal async t = $'backend_switch `(async_switch t)' 00:06:39 v #8953 > > 00:06:39 v #8954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:39 v #8956 > > │ ### task │ 00:06:39 v #8957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:39 v #8958 > > 00:06:39 v #8959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8960 > > nominal task t = 00:06:39 v #8961 > > `( 00:06:39 v #8962 > > typecase t with 00:06:39 v #8963 > > | () => $'' : $'System.Threading.Tasks.Task' 00:06:39 v #8964 > > | _ => $'' : $'System.Threading.Tasks.Task<`t>' 00:06:39 v #8965 > > ) 00:06:39 v #8966 > > 00:06:39 v #8967 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8968 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:39 v #8969 > > │ ### new_async_unit │ 00:06:39 v #8970 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:39 v #8971 > > 00:06:40 v #8972 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #8973 > > inl new_async_unit forall t. (fn : () -> ()) : async t = 00:06:40 v #8974 > > join 00:06:40 v #8975 > > run_target_args' fn function 00:06:40 v #8976 > > | Fsharp _ 00:06:40 v #8977 > > // | Rust _ 00:06:40 v #8978 > > | TypeScript _ 00:06:40 v #8979 > > | Python _ => fun fn => 00:06:40 v #8980 > > fun () => 00:06:40 v #8981 > > $'async {' 00:06:40 v #8982 > > fun () => 00:06:40 v #8983 > > fn () 00:06:40 v #8984 > > real 00:06:40 v #8985 > > typecase t with 00:06:40 v #8986 > > | () => $'()' : () 00:06:40 v #8987 > > | _ => () 00:06:40 v #8988 > > |> indent 00:06:40 v #8989 > > $'}' : () 00:06:40 v #8990 > > |> base_let' 00:06:40 v #8991 > > | Cuda _ => fun fn => 00:06:40 v #8992 > > $'async def __new_async_unit__():' 00:06:40 v #8993 > > fun () => 00:06:40 v #8994 > > fn () 00:06:40 v #8995 > > $'""" new_async_unit' 00:06:40 v #8996 > > |> indent 00:06:40 v #8997 > > $'new_async_unit """' 00:06:40 v #8998 > > $'__new_async_unit__' 00:06:40 v #8999 > > | _ => fun _ => null () 00:06:40 v #9000 > > 00:06:40 v #9001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #9002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:40 v #9003 > > │ ### new_async │ 00:06:40 v #9004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:40 v #9005 > > 00:06:40 v #9006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #9007 > > inl new_async forall t. (fn : () -> t) : async t = 00:06:40 v #9008 > > new_async_unit (fn >> ignore) 00:06:40 v #9009 > > 00:06:40 v #9010 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #9011 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:40 v #9012 > > │ ### new_task │ 00:06:40 v #9013 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:40 v #9014 > > 00:06:40 v #9015 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #9016 > > inl new_task forall t. (fn : () -> t) : task t = 00:06:40 v #9017 > > run_target_args' fn function 00:06:40 v #9018 > > | Fsharp _ => fun fn => 00:06:40 v #9019 > > inl result : optionm'.option' (task t) = optionm'.none' () 00:06:40 v #9020 > > $'let mutable _new_task_!result = !result ' 00:06:40 v #9021 > > $'task {' 00:06:40 v #9022 > > fn () |> ignore 00:06:40 v #9023 > > $'}' 00:06:40 v #9024 > > $'|> fun x -> _new_task_!result <- Some x' 00:06:40 v #9025 > > $'match _new_task_!result with Some x -> x | None -> failwith 00:06:40 v #9026 > > "async.new_task / _new_task_!result=None"' 00:06:40 v #9027 > > | _ => fun _ => null () 00:06:41 v #9028 > > 00:06:41 v #9029 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:41 v #9030 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:41 v #9031 > > │ ### await_task │ 00:06:41 v #9032 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:41 v #9033 > > 00:06:41 v #9034 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:41 v #9035 > > inl await_task forall t. (a : task t) : async t = 00:06:41 v #9036 > > run_target function 00:06:41 v #9037 > > | Fsharp _ 00:06:41 v #9038 > > // | Rust _ 00:06:41 v #9039 > > | TypeScript _ 00:06:41 v #9040 > > | Python _ => fun () => 00:06:41 v #9041 > > a |> $'Async.AwaitTask' 00:06:41 v #9042 > > | _ => fun () => null () 00:06:41 v #9043 > > 00:06:41 v #9044 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:41 v #9045 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:41 v #9046 > > │ ### ignore │ 00:06:41 v #9047 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:41 v #9048 > > 00:06:41 v #9049 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:41 v #9050 > > inl ignore forall t. (a : async t) : async () = 00:06:41 v #9051 > > run_target function 00:06:41 v #9052 > > | Fsharp _ 00:06:41 v #9053 > > // | Rust _ 00:06:41 v #9054 > > | TypeScript _ 00:06:41 v #9055 > > | Python _ => fun () => 00:06:41 v #9056 > > a |> $'Async.Ignore' 00:06:41 v #9057 > > | _ => fun () => null () 00:06:42 v #9058 > > 00:06:42 v #9059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:42 v #9060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:42 v #9061 > > │ ### run_synchronously │ 00:06:42 v #9062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:42 v #9063 > > 00:06:42 v #9064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:42 v #9065 > > inl run_synchronously forall t. (a : async t) : t = 00:06:42 v #9066 > > run_target function 00:06:42 v #9067 > > | Fsharp _ 00:06:42 v #9068 > > // | Rust _ 00:06:42 v #9069 > > | Python _ => fun () => 00:06:42 v #9070 > > a |> $'Async.RunSynchronously' 00:06:42 v #9071 > > | Cuda (Native) => fun () => 00:06:42 v #9072 > > $'asyncio.run(!a())' 00:06:42 v #9073 > > | _ => fun () => null () 00:06:42 v #9074 > > 00:06:42 v #9075 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:42 v #9076 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:42 v #9077 > > │ ### start │ 00:06:42 v #9078 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:42 v #9079 > > 00:06:42 v #9080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:42 v #9081 > > inl start (a : async ()) : () = 00:06:42 v #9082 > > run_target function 00:06:42 v #9083 > > | Fsharp _ 00:06:42 v #9084 > > | Rust _ 00:06:42 v #9085 > > | TypeScript _ 00:06:42 v #9086 > > | Python _ => fun () => 00:06:42 v #9087 > > a |> $'Async.Start' 00:06:42 v #9088 > > | _ => fun () => null () 00:06:42 v #9089 > > 00:06:42 v #9090 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:42 v #9091 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:42 v #9092 > > │ ### start_child │ 00:06:42 v #9093 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:42 v #9094 > > 00:06:42 v #9095 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:42 v #9096 > > inl start_child forall t. (a : async t) : async (async t) = 00:06:42 v #9097 > > run_target function 00:06:42 v #9098 > > | Fsharp _ 00:06:42 v #9099 > > | TypeScript _ 00:06:42 v #9100 > > | Python _ => fun () => 00:06:42 v #9101 > > a |> $'Async.StartChild' 00:06:42 v #9102 > > | _ => fun () => null () 00:06:43 v #9103 > > 00:06:43 v #9104 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:43 v #9105 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:43 v #9106 > > │ ### start_child_timeout │ 00:06:43 v #9107 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:43 v #9108 > > 00:06:43 v #9109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:43 v #9110 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async 00:06:43 v #9111 > > t) = 00:06:43 v #9112 > > run_target function 00:06:43 v #9113 > > | Fsharp _ 00:06:43 v #9114 > > | TypeScript _ 00:06:43 v #9115 > > | Python _ => fun () => 00:06:43 v #9116 > > $'Async.StartChild (!a, !timeout)' 00:06:43 v #9117 > > | _ => fun () => null () 00:06:43 v #9118 > > 00:06:43 v #9119 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:43 v #9120 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:43 v #9121 > > │ ### start_immediate │ 00:06:43 v #9122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:43 v #9123 > > 00:06:43 v #9124 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:43 v #9125 > > inl start_immediate forall t. (a : async t) : () = 00:06:43 v #9126 > > run_target function 00:06:43 v #9127 > > | Fsharp _ 00:06:43 v #9128 > > // | Rust _ 00:06:43 v #9129 > > | TypeScript _ 00:06:43 v #9130 > > | Python _ => fun () => 00:06:43 v #9131 > > a |> $'Async.StartImmediate' 00:06:43 v #9132 > > | _ => fun () => null () 00:06:44 v #9133 > > 00:06:44 v #9134 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:44 v #9135 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:44 v #9136 > > │ ### start_with_continuations │ 00:06:44 v #9137 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:44 v #9138 > > 00:06:44 v #9139 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:44 v #9140 > > inl start_with_continuations forall t. (a : async t) : () = 00:06:44 v #9141 > > run_target_args' a function 00:06:44 v #9142 > > | Fsharp _ 00:06:44 v #9143 > > | Rust _ 00:06:44 v #9144 > > | TypeScript _ 00:06:44 v #9145 > > | Python _ => fun a => 00:06:44 v #9146 > > $'Async.StartWithContinuations (!a, ignore, ignore, ignore)' 00:06:44 v #9147 > > | _ => fun _ => null () 00:06:44 v #9148 > > 00:06:44 v #9149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:44 v #9150 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:44 v #9151 > > │ ### task_canceled_exception │ 00:06:44 v #9152 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:44 v #9153 > > 00:06:44 v #9154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:44 v #9155 > > nominal task_canceled_exception = 00:06:44 v #9156 > > $'System.Threading.Tasks.TaskCanceledException' 00:06:45 v #9157 > > 00:06:45 v #9158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:45 v #9159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:45 v #9160 > > │ ### sleep │ 00:06:45 v #9161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:45 v #9162 > > 00:06:45 v #9163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:45 v #9164 > > inl sleep (ms : i32) : async () = 00:06:45 v #9165 > > run_target function 00:06:45 v #9166 > > | Fsharp _ 00:06:45 v #9167 > > | Rust _ 00:06:45 v #9168 > > | TypeScript _ 00:06:45 v #9169 > > | Python _ => fun () => 00:06:45 v #9170 > > ms |> $'Async.Sleep' 00:06:45 v #9171 > > | Cuda _ => fun () => 00:06:45 v #9172 > > $'asyncio.sleep(!ms / 1000)' 00:06:45 v #9173 > > | _ => fun () => null () 00:06:45 v #9174 > > 00:06:45 v #9175 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:45 v #9176 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:45 v #9177 > > │ ### do │ 00:06:45 v #9178 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:45 v #9179 > > 00:06:45 v #9180 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:45 v #9181 > > inl do (a : async ()) : () = 00:06:45 v #9182 > > backend_switch { 00:06:45 v #9183 > > Fsharp = fun () => $'do\! !a ' : () 00:06:45 v #9184 > > Python = fun () => $'await !a ' : () 00:06:45 v #9185 > > } 00:06:45 v #9186 > > 00:06:45 v #9187 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:45 v #9188 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:45 v #9189 > > │ ### let' │ 00:06:45 v #9190 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:45 v #9191 > > 00:06:45 v #9192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:45 v #9193 > > inl let' forall t. (a : async t) : t = 00:06:45 v #9194 > > $'let\! !a = !a ' 00:06:45 v #9195 > > $'!a ' 00:06:46 v #9196 > > 00:06:46 v #9197 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:46 v #9198 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:46 v #9199 > > │ ### return_await │ 00:06:46 v #9200 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:46 v #9201 > > 00:06:46 v #9202 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:46 v #9203 > > inl return_await forall t. (a : async t) : () = 00:06:46 v #9204 > > backend_switch { 00:06:46 v #9205 > > Fsharp = fun () => $'return\! !a ' : () 00:06:46 v #9206 > > Python = fun () => $'asyncio.run(!a())' : () 00:06:46 v #9207 > > } 00:06:46 v #9208 > > 00:06:46 v #9209 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:46 v #9210 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:46 v #9211 > > │ ### return_await' │ 00:06:46 v #9212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:46 v #9213 > > 00:06:46 v #9214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:46 v #9215 > > inl return_await' forall t. (a : async t) : t = 00:06:46 v #9216 > > backend_switch { 00:06:46 v #9217 > > Fsharp = fun () => $'return\! !a ' : () 00:06:46 v #9218 > > Python = fun () => $'await !a()' : () 00:06:46 v #9219 > > } 00:06:47 v #9220 > > 00:06:47 v #9221 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:47 v #9222 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:47 v #9223 > > │ ### map │ 00:06:47 v #9224 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:47 v #9225 > > 00:06:47 v #9226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:47 v #9227 > > inl map forall t u. (fn : t -> u) (a : async t) : async u = 00:06:47 v #9228 > > fun () => 00:06:47 v #9229 > > inl x = a |> let' 00:06:47 v #9230 > > fn x |> return 00:06:47 v #9231 > > |> new_async_unit 00:06:47 v #9232 > > 00:06:47 v #9233 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:47 v #9234 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:47 v #9235 > > │ ### catch' │ 00:06:47 v #9236 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:47 v #9237 > > 00:06:47 v #9238 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:47 v #9239 > > inl catch' forall t e. (a : async t) : async (choice2' t e) = 00:06:47 v #9240 > > run_target function 00:06:47 v #9241 > > | Fsharp _ 00:06:47 v #9242 > > // | Rust _ 00:06:47 v #9243 > > | TypeScript _ 00:06:47 v #9244 > > | Python _ => fun () => 00:06:47 v #9245 > > a |> $'Async.Catch' 00:06:47 v #9246 > > | _ => fun () => null () 00:06:48 v #9247 > > 00:06:48 v #9248 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:48 v #9249 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:48 v #9250 > > │ ### catch │ 00:06:48 v #9251 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:48 v #9252 > > 00:06:48 v #9253 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:48 v #9254 > > inl catch forall t e. (a : async t) : async (result t e) = 00:06:48 v #9255 > > a 00:06:48 v #9256 > > |> catch' 00:06:48 v #9257 > > |> map choice2_unbox 00:06:48 v #9258 > > |> map function 00:06:48 v #9259 > > | C1of2 result => Ok result 00:06:48 v #9260 > > | C2of2 ex => Error ex 00:06:48 v #9261 > > 00:06:48 v #9262 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:48 v #9263 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:48 v #9264 > > │ ### run_with_timeout_async │ 00:06:48 v #9265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:48 v #9266 > > 00:06:48 v #9267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:48 v #9268 > > let run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async 00:06:48 v #9269 > > (option t) = 00:06:48 v #9270 > > run_target_args (fun () => timeout, fn) function 00:06:48 v #9271 > > | Fsharp _ 00:06:48 v #9272 > > | Rust _ 00:06:48 v #9273 > > | TypeScript _ 00:06:48 v #9274 > > | Python _ => fun timeout, fn => 00:06:48 v #9275 > > fun () => 00:06:48 v #9276 > > fn 00:06:48 v #9277 > > |> start_child_timeout timeout 00:06:48 v #9278 > > |> let' 00:06:48 v #9279 > > |> catch 00:06:48 v #9280 > > |> map function 00:06:48 v #9281 > > | Ok result => Some result 00:06:48 v #9282 > > | Error ex when ex |> sm'.format_debug |> sm'.contains 00:06:48 v #9283 > > "System.TimeoutException" => 00:06:48 v #9284 > > trace Verbose 00:06:48 v #9285 > > fun () => "async.run_with_timeout_async" 00:06:48 v #9286 > > fun () => { timeout } 00:06:48 v #9287 > > None 00:06:48 v #9288 > > | Error (ex : exn) => 00:06:48 v #9289 > > trace Critical 00:06:48 v #9290 > > fun () => "async.run_with_timeout_async**" 00:06:48 v #9291 > > fun () => { timeout ex = ex |> sm'.format_exception 00:06:48 v #9292 > > } 00:06:48 v #9293 > > None 00:06:48 v #9294 > > |> return_await 00:06:48 v #9295 > > |> new_async_unit 00:06:48 v #9296 > > | _ => fun _ => null () 00:06:49 v #9297 > > 00:06:49 v #9298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:49 v #9299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:49 v #9300 > > │ ### run_with_timeout │ 00:06:49 v #9301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:49 v #9302 > > 00:06:49 v #9303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:49 v #9304 > > inl run_with_timeout timeout fn = 00:06:49 v #9305 > > fn 00:06:49 v #9306 > > |> run_with_timeout_async timeout 00:06:49 v #9307 > > |> run_synchronously 00:06:49 v #9308 > > 00:06:49 v #9309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:49 v #9310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:49 v #9311 > > │ ### cancellation_token │ 00:06:49 v #9312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:49 v #9313 > > 00:06:49 v #9314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:49 v #9315 > > inl cancellation_token () : async threading.cancellation_token = 00:06:49 v #9316 > > $'Async.CancellationToken' 00:06:49 v #9317 > > 00:06:49 v #9318 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:49 v #9319 > > inl default_cancellation_token () : threading.cancellation_token = 00:06:49 v #9320 > > $'Async.DefaultCancellationToken' 00:06:50 v #9321 > > 00:06:50 v #9322 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:50 v #9323 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:50 v #9324 > > │ ### merge_cancellation_token_with_default_async │ 00:06:50 v #9325 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:50 v #9326 > > 00:06:50 v #9327 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:50 v #9328 > > inl merge_cancellation_token_with_default_async 00:06:50 v #9329 > > (token : threading.cancellation_token) 00:06:50 v #9330 > > : async threading.cancellation_token 00:06:50 v #9331 > > = 00:06:50 v #9332 > > fun () => 00:06:50 v #9333 > > run_target function 00:06:50 v #9334 > > | Fsharp (Native) => fun () => 00:06:50 v #9335 > > inl ct = cancellation_token () |> let' 00:06:50 v #9336 > > inl dct = default_cancellation_token () 00:06:50 v #9337 > > inl cts = threading.create_linked_token_source ;[[ ct; dct; 00:06:50 v #9338 > > token ]] 00:06:50 v #9339 > > cts |> threading.cancellation_source_token |> return 00:06:50 v #9340 > > | _ => fun () => (null () : threading.cancellation_token) |> return 00:06:50 v #9341 > > |> new_async_unit 00:06:50 v #9342 > > 00:06:50 v #9343 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:50 v #9344 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:50 v #9345 > > │ ### with_trace_level │ 00:06:50 v #9346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:50 v #9347 > > 00:06:50 v #9348 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:50 v #9349 > > inl with_trace_level forall t. level fn : _ t = new_async fun () => 00:06:50 v #9350 > > inl trace_state = get_trace_state_or_init None 00:06:50 v #9351 > > inl old_trace_level = *trace_state.level 00:06:50 v #9352 > > inl trace_level = trace_state.level 00:06:50 v #9353 > > try_finally 00:06:50 v #9354 > > fun () => 00:06:50 v #9355 > > trace_level <- level 00:06:50 v #9356 > > fn |> return_await 00:06:50 v #9357 > > fun () => 00:06:50 v #9358 > > trace_level <- old_trace_level 00:06:51 v #9359 > > 00:06:51 v #9360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:51 v #9361 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:51 v #9362 > > │ ### value_task │ 00:06:51 v #9363 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:51 v #9364 > > 00:06:51 v #9365 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:51 v #9366 > > nominal value_task = $'System.Threading.Tasks.ValueTask' 00:06:51 v #9367 > > 00:06:51 v #9368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:51 v #9369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:51 v #9370 > > │ ### value_task_as_task │ 00:06:51 v #9371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:51 v #9372 > > 00:06:51 v #9373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:51 v #9374 > > inl value_task_as_task (task : value_task) : task () = 00:06:51 v #9375 > > run_target function 00:06:51 v #9376 > > | Fsharp (Native) => fun () => $'!task.AsTask' () 00:06:51 v #9377 > > | _ => fun () => null () 00:06:52 v #9378 > > 00:06:52 v #9379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:52 v #9380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:52 v #9381 > > │ ### await_value_task_unit │ 00:06:52 v #9382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:52 v #9383 > > 00:06:52 v #9384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:52 v #9385 > > inl await_value_task_unit (task : value_task) : async () = 00:06:52 v #9386 > > task |> value_task_as_task |> await_task 00:06:52 v #9387 > > 00:06:52 v #9388 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:52 v #9389 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:52 v #9390 > > │ ## main │ 00:06:52 v #9391 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:52 v #9392 > > 00:06:52 v #9393 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:52 v #9394 > > inl main () = 00:06:52 v #9395 > > $'let merge_cancellation_token_with_default_async x = 00:06:52 v #9396 > > !merge_cancellation_token_with_default_async x' : () 00:06:53 v #9397 > 00:00:39 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 46740 } 00:06:53 v #9398 > 00:00:39 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:55 v #9399 > 00:00:40 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/async.dib.ipynb to html 00:06:55 v #9400 > 00:00:40 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:55 v #9401 > 00:00:40 v #7 ! validate(nb) 00:06:55 v #9402 > 00:00:41 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:55 v #9403 > 00:00:41 v #9 ! return _pygments_highlight( 00:06:56 v #9404 > 00:00:42 v #10 ! [NbConvertApp] Writing 422228 bytes to c:\home\git\polyglot\lib\spiral\async.dib.html 00:06:56 v #9405 > 00:00:42 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:06:56 v #9406 > 00:00:42 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:06:56 v #9407 > 00:00:42 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:57 v #9408 > 00:00:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:57 v #9409 > 00:00:42 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:57 v #9410 > 00:00:42 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 47651 } 00:06:57 d #9411 runtime.execute_with_options_async / { exit_code = 0; output_length = 52153 } 00:06:57 d #9 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path async.dib --retries 3 00:06:57 d #9412 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path runtime.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:57 v #9413 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) } 00:06:57 v #9414 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/runtime.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/runtime.dib" --output-path "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:58 v #9415 > > 00:06:58 v #9416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:58 v #9417 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:58 v #9418 > > │ # runtime │ 00:06:58 v #9419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:01 v #9420 > > 00:07:01 v #9421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:01 v #9422 > > open rust 00:07:01 v #9423 > > open rust_operators 00:07:01 v #9424 > > open sm'_operators 00:07:02 v #9425 > > 00:07:02 v #9426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:02 v #9427 > > //// test 00:07:02 v #9428 > > 00:07:02 v #9429 > > open testing 00:07:02 v #9430 > > open file_system_operators 00:07:03 v #9431 > > 00:07:03 v #9432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:03 v #9433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:03 v #9434 > > │ ## runtime │ 00:07:03 v #9435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:03 v #9436 > > 00:07:03 v #9437 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:03 v #9438 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:03 v #9439 > > │ ### split_args │ 00:07:03 v #9440 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:03 v #9441 > > 00:07:03 v #9442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:03 v #9443 > > let split_args (args : string) : result (array_base string) string = 00:07:03 v #9444 > > open parsing 00:07:03 v #9445 > > inl esc = [[ '\\'; '`' ]] 00:07:03 v #9446 > > inl quotes = [[ '"' ]] 00:07:03 v #9447 > > inl special = esc ++ quotes 00:07:03 v #9448 > > inl p_esc_char c = 00:07:03 v #9449 > > p_char c >>. any_char () |>> fun c' => $c +. $c' 00:07:03 v #9450 > > inl p_word = special |> none_of |>> sm'.obj_to_string 00:07:03 v #9451 > > inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars 00:07:03 v #9452 > > inl p_text = p_word |> many1_strings 00:07:03 v #9453 > > inl p_esc = esc |> listm.map p_esc_char |> choice 00:07:03 v #9454 > > inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list "" 00:07:03 v #9455 > > inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"') 00:07:03 v #9456 > > inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list "" 00:07:03 v #9457 > > inl p_content = p_plain <|> p_quoted_all <|> p_esc_root 00:07:03 v #9458 > > inl p_args = spaces1 () |> sep_by p_content 00:07:03 v #9459 > > args 00:07:03 v #9460 > > |> parse p_args 00:07:03 v #9461 > > |> resultm.map (fst >> listm'.box >> listm'.to_array') 00:07:03 v #9462 > > 00:07:03 v #9463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:03 v #9464 > > //// test 00:07:03 v #9465 > > ///! fsharp 00:07:03 v #9466 > > ///! cuda 00:07:03 v #9467 > > ///! rust 00:07:03 v #9468 > > ///! typescript 00:07:03 v #9469 > > ///! python 00:07:03 v #9470 > > 00:07:03 v #9471 > > [[ 00:07:03 v #9472 > > "a b c", 00:07:03 v #9473 > > ;[[ "a"; "b"; "c" ]] 00:07:03 v #9474 > > 00:07:03 v #9475 > > "e f \"g h\" i", 00:07:03 v #9476 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:07:03 v #9477 > > 00:07:03 v #9478 > > "\"j k\" \"l\" \"m\"", 00:07:03 v #9479 > > ;[[ "j k"; "l"; "m" ]] 00:07:03 v #9480 > > 00:07:03 v #9481 > > "s -t \"u \`\"v\`\" w\"", 00:07:03 v #9482 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:07:03 v #9483 > > 00:07:03 v #9484 > > "n -o \"p \\\"q\\\" r\"", 00:07:03 v #9485 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:07:03 v #9486 > > 00:07:03 v #9487 > > "r -s \"t \\\"u\\\"\"", 00:07:03 v #9488 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:07:03 v #9489 > > 00:07:03 v #9490 > > $'"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{8}\', { \`$_[[1]] + \`$d++ 00:07:03 v #9491 > > }\\\""', 00:07:03 v #9492 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:07:03 v #9493 > > ]] 00:07:03 v #9494 > > 00:07:03 v #9495 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:07:03 v #9496 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:07:03 v #9497 > > ]] 00:07:03 v #9498 > > 00:07:03 v #9499 > > $'"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:07:03 v #9500 > > ;[[ "--l"; "''' m '''" ]] 00:07:03 v #9501 > > 00:07:03 v #9502 > > $'"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:07:03 v #9503 > > \\\"\\\\e{f-g}\\\" h.i \\\"j (k)\\\""', 00:07:03 v #9504 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:07:03 v #9505 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:07:03 v #9506 > > 00:07:03 v #9507 > > $'"l \\\"m n:\\\\o.p\\\""', 00:07:03 v #9508 > > ;[[ "l"; "m n:\\o.p" ]] 00:07:03 v #9509 > > ]] 00:07:03 v #9510 > > |> _assert_fn split_args 00:07:11 v #9511 > > 00:07:11 v #9512 > > ╭─[ 7.96s - return value ]─────────────────────────────────────────────────────╮ 00:07:11 v #9513 > > │ │ 00:07:11 v #9514 > > │ .py output (Cuda): │ 00:07:11 v #9515 > > │ │ 00:07:11 v #9516 > > │ 00:00:00 v #1 _assert_fn / { input = a b c } │ 00:07:11 v #9517 > > │ __assert_eq' / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c'] │ 00:07:11 v #9518 > > │ │ 00:07:11 v #9519 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i } │ 00:07:11 v #9520 > > │ __assert_eq' / actual: ['e' 'f' 'g h' 'i'] / expected: ['e' 'f' 'g h' 'i'] │ 00:07:11 v #9521 > > │ │ 00:07:11 v #9522 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" } │ 00:07:11 v #9523 > > │ __assert_eq' / actual: ['j k' 'l' 'm'] / expected: ['j k' 'l' 'm'] │ 00:07:11 v #9524 > > │ │ 00:07:11 v #9525 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" } │ 00:07:11 v #9526 > > │ __assert_eq' / actual: ['s' '-t' 'u `"v`" w'] / expected: ['s' '-t' 'u `"v`" │ 00:07:11 v #9527 > > │ w'] │ 00:07:11 v #9528 > > │ │ 00:07:11 v #9529 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" } │ 00:07:11 v #9530 > > │ __assert_eq' / actual: ['n' '-o' 'p \\"q\\" r'] / expected: ['n' '-o' 'p │ 00:07:11 v #9531 > > │ \\"q\\" r'] │ 00:07:11 v #9532 > > │ │ 00:07:11 v #9533 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:07:11 v #9534 > > │ __assert_eq' / actual: ['r' '-s' 't \\"u\\"'] / expected: ['r' '-s' 't │ 00:07:11 v #9535 > > │ \\"u\\"'] │ 00:07:11 v #9536 > > │ │ 00:07:11 v #9537 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:07:11 v #9538 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:07:11 v #9539 > > │ __assert_eq' / actual: ['x' '-y' '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { │ 00:07:11 v #9540 > > │ `$_[1] + `$d++ }'] / expected: ['x' '-y' '$z -a \'(b=\\"c-id=)[ │ 00:07:11 v #9541 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] │ 00:07:11 v #9542 > > │ │ 00:07:11 v #9543 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:07:11 v #9544 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } │ 00:07:11 v #9545 > > │ __assert_eq' / actual: ['e' '-f' '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_ │ 00:07:11 v #9546 > > │ [1] + `$k++ }'] / expected: ['e' '-f' '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', │ 00:07:11 v #9547 > > │ { `$_[1] + `$k++ }'] │ 00:07:11 v #9548 > > │ │ 00:07:11 v #9549 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" } │ 00:07:11 v #9550 > > │ __assert_eq' / a...t_fn / { input = n -o "p \"q\" r" } │ 00:07:11 v #9551 > > │ __assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected: ['n', '-o', 'p │ 00:07:11 v #9552 > > │ \\"q\\" r'] │ 00:07:11 v #9553 > > │ │ 00:07:11 v #9554 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:07:11 v #9555 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected: ['r', '-s', 't │ 00:07:11 v #9556 > > │ \\"u\\"'] │ 00:07:11 v #9557 > > │ │ 00:07:11 v #9558 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:07:11 v #9559 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:07:11 v #9560 > > │ __assert_eq' / actual: ['x', '-y', '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { │ 00:07:11 v #9561 > > │ `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z -a \'(b=\\"c-id=)[ │ 00:07:11 v #9562 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] │ 00:07:11 v #9563 > > │ │ 00:07:11 v #9564 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:07:11 v #9565 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } │ 00:07:11 v #9566 > > │ __assert_eq' / actual: ['e', '-f', '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { │ 00:07:11 v #9567 > > │ `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g -h \'(i=`"j-id=)[ │ 00:07:11 v #9568 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] │ 00:07:11 v #9569 > > │ │ 00:07:11 v #9570 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" } │ 00:07:11 v #9571 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected: ['--l', "''' m '''"] │ 00:07:11 v #9572 > > │ │ 00:07:11 v #9573 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r "s:/t u/v.w" --x │ 00:07:11 v #9574 > > │ "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } │ 00:07:11 v #9575 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x', │ 00:07:11 v #9576 > > │ 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected: ['n', '--o', │ 00:07:11 v #9577 > > │ '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}', │ 00:07:11 v #9578 > > │ 'h.i', 'j (k)'] │ 00:07:11 v #9579 > > │ │ 00:07:11 v #9580 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" } │ 00:07:11 v #9581 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l', 'm n:\\o.p'] │ 00:07:11 v #9582 > > │ │ 00:07:11 v #9583 > > │ │ 00:07:11 v #9584 > > │ │ 00:07:11 v #9585 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:11 v #9586 > > 00:07:11 v #9587 > > ╭─[ 7.98s - stdout ]───────────────────────────────────────────────────────────╮ 00:07:11 v #9588 > > │ .fsx output: │ 00:07:11 v #9589 > > │ │ 00:07:11 v #9590 > > │ 00:00:00 v #1 _assert_fn / { input = a b c } │ 00:07:11 v #9591 > > │ __assert_eq' / actual: "[|"a"; "b"; "c"|]" / expected: "[|"a"; "b"; "c"|]" │ 00:07:11 v #9592 > > │ │ 00:07:11 v #9593 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i } │ 00:07:11 v #9594 > > │ __assert_eq' / actual: "[|"e"; "f"; "g h"; "i"|]" / expected: "[|"e"; "f"; │ 00:07:11 v #9595 > > │ "g h"; "i"|]" │ 00:07:11 v #9596 > > │ │ 00:07:11 v #9597 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" } │ 00:07:11 v #9598 > > │ __assert_eq' / actual: "[|"j k"; "l"; "m"|]" / expected: "[|"j k"; "l"; │ 00:07:11 v #9599 > > │ "m"|]" │ 00:07:11 v #9600 > > │ │ 00:07:11 v #9601 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" } │ 00:07:11 v #9602 > > │ __assert_eq' / actual: "[|"s"; "-t"; "u `"v`" w"|]" / expected: "[|"s"; │ 00:07:11 v #9603 > > │ "-t"; "u `"v`" w"|]" │ 00:07:11 v #9604 > > │ │ 00:07:11 v #9605 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" } │ 00:07:11 v #9606 > > │ __assert_eq' / actual: "[|"n"; "-o"; "p \"q\" r"|]" / expected: "[|"n"; │ 00:07:11 v #9607 > > │ "-o"; "p \"q\" r"|]" │ 00:07:11 v #9608 > > │ │ 00:07:11 v #9609 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:07:11 v #9610 > > │ __assert_eq' / actual: "[|"r"; "-s"; "t \"u\""|]" / expected: "[|"r"; "-s"; │ 00:07:11 v #9611 > > │ "t \"u\""|]" │ 00:07:11 v #9612 > > │ │ 00:07:11 v #9613 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:07:11 v #9614 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:07:11 v #9615 > > │ __assert_eq' / actual: "[|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { │ 00:07:11 v #9616 > > │ `$_[1] + `$d++ }"|]" / expected: "[|"x"; "-y"; "$z -a '(b=\"c-id=)[ │ 00:07:11 v #9617 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]" │ 00:07:11 v #9618 > > │ │ 00:07:11 v #9619 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:07:11 v #9620 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } │ 00:07:11 v #9621 > > │ __assert_eq' / actual: "[|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { │ 00:07:11 v #9622 > > │ `$_[1] + `$k++ }"|]" / expected: "[|"e"; "-f"; "$g -h '(i=`"j-id=)[ │ 00:07:11 v #9623 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]" │ 00:07:11 v #9624 > > │ │ 00:07:11 v #9625 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" } │ 00:07:11 v #9626 > > │ __assert_eq' / actual: "[|"--l"; "''' m '''"|]" / expected: "[|"--l"; "''' m │ 00:07:11 v #9627 > > │ '''"|]" │ 00:07:11 v #9628 > > │ │ 00:07:11 v #9629 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r "s:/t u/v.w" --x │ 00:07:11 v #9630 > > │ "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } │ 00:07:11 v #9631 > > │ __assert_eq' / actual: "[|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; │ 00:07:11 v #9632 > > │ "--x"; "y:/z.a"; "--b"; "c.d"; │ 00:07:11 v #9633 > > │ "\e{f-g}"; "h.i"; "j (k)"|]" / expected: "[|"n"; "--o"; "--p"; "q"; "--r"; │ 00:07:11 v #9634 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; │ 00:07:11 v #9635 > > │ "\e{f-g}"; "h.i"; "j (k)"|]" │ 00:07:11 v #9636 > > │ │ 00:07:11 v #9637 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" } │ 00:07:11 v #9638 > > │ __assert_eq' / actual: "[|"l"; "m n:\o.p"|]" / expected: "[|"l"; "m │ 00:07:11 v #9639 > > │ n:\o.p"|]" │ 00:07:11 v #9640 > > │ │ 00:07:11 v #9641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:11 v #9642 > > 00:07:11 v #9643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:11 v #9644 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:11 v #9645 > > │ ### split_command │ 00:07:11 v #9646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:11 v #9647 > > 00:07:11 v #9648 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:11 v #9649 > > let split_command (command : string) : result (string * option string) string = 00:07:11 v #9650 > > open parsing 00:07:11 v #9651 > > inl quotes = [[ '"'; '\'' ]] 00:07:11 v #9652 > > inl p_quoted_char = quotes |> listm.map p_char |> choice 00:07:11 v #9653 > > inl normalize = function '\\' => '/' | c => c 00:07:11 v #9654 > > inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between 00:07:11 v #9655 > > p_quoted_char p_quoted_char 00:07:11 v #9656 > > inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars 00:07:11 v #9657 > > inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces () 00:07:11 v #9658 > > inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars) 00:07:11 v #9659 > > inl p_command = p_path .>>. (p_args |> opt) 00:07:11 v #9660 > > command 00:07:11 v #9661 > > |> parse p_command 00:07:11 v #9662 > > |> resultm.map fst 00:07:12 v #9663 > > 00:07:12 v #9664 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:12 v #9665 > > //// test 00:07:12 v #9666 > > ///! fsharp 00:07:12 v #9667 > > ///! cuda 00:07:12 v #9668 > > ///! rust 00:07:12 v #9669 > > ///! typescript 00:07:12 v #9670 > > ///! python 00:07:12 v #9671 > > 00:07:12 v #9672 > > [[ 00:07:12 v #9673 > > "", 00:07:12 v #9674 > > ("", None) 00:07:12 v #9675 > > 00:07:12 v #9676 > > "/a/b/c", 00:07:12 v #9677 > > ("/a/b/c", None) 00:07:12 v #9678 > > 00:07:12 v #9679 > > "d e.f", 00:07:12 v #9680 > > ("d", Some "e.f") 00:07:12 v #9681 > > 00:07:12 v #9682 > > "..\\..\\g.h i.j k.l", 00:07:12 v #9683 > > ("../../g.h", Some "i.j k.l") 00:07:12 v #9684 > > 00:07:12 v #9685 > > "m:\\n\\o.p \"q.r s.t\"", 00:07:12 v #9686 > > ("m:/n/o.p", Some "\"q.r s.t\"") 00:07:12 v #9687 > > 00:07:12 v #9688 > > "\"..\\..\\u v\\w.x\" \"y z.a\" b.c", 00:07:12 v #9689 > > ("../../u v/w.x", Some "\"y z.a\" b.c") 00:07:12 v #9690 > > 00:07:12 v #9691 > > "\"..\\..\\d e.f\" -g \\\\\"h i\\\\\"", 00:07:12 v #9692 > > ("../../d e.f", Some "-g \\\\\"h i\\\\\"") 00:07:12 v #9693 > > 00:07:12 v #9694 > > "..\\..\\j k.l -m \\\\\"n o\\\\\"", 00:07:12 v #9695 > > ("../../j", Some "k.l -m \\\\\"n o\\\\\"") 00:07:12 v #9696 > > ]] 00:07:12 v #9697 > > |> _assert_fn split_command 00:07:18 v #9698 > > 00:07:18 v #9699 > > ╭─[ 5.91s - return value ]─────────────────────────────────────────────────────╮ 00:07:18 v #9700 > > │ │ 00:07:18 v #9701 > > │ .py output (Cuda): │ 00:07:18 v #9702 > > │ │ 00:07:18 v #9703 > > │ 00:00:00 v #1 _assert_fn / { input = } │ 00:07:18 v #9704 > > │ __assert_eq' / actual: , US1_1() / expected: , US1_1() │ 00:07:18 v #9705 > > │ │ 00:07:18 v #9706 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } │ 00:07:18 v #9707 > > │ __assert_eq' / actual: /a/b/c, US1_1() / expected: /a/b/c, US1_1() │ 00:07:18 v #9708 > > │ │ 00:07:18 v #9709 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } │ 00:07:18 v #9710 > > │ __assert_eq' / actual: d, US1_0(v0='e.f') / expected: d, US1_0(v0='e.f') │ 00:07:18 v #9711 > > │ │ 00:07:18 v #9712 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:07:18 v #9713 > > │ __assert_eq' / actual: ../../g.h, US1_0(v0='i.j k.l') / expected: ../../g.h, │ 00:07:18 v #9714 > > │ US1_0(v0='i.j k.l') │ 00:07:18 v #9715 > > │ │ 00:07:18 v #9716 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:07:18 v #9717 > > │ __assert_eq' / actual: m:/n/o.p, US1_0(v0='"q.r s.t"') / expected: m:/n/o.p, │ 00:07:18 v #9718 > > │ US1_0(v0='"q.r s.t"') │ 00:07:18 v #9719 > > │ │ 00:07:18 v #9720 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c } │ 00:07:18 v #9721 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0(v0='"y z.a" b.c') / expected: │ 00:07:18 v #9722 > > │ ../../u v/w.x, US1_0(v0='"y z.a" b.c') │ 00:07:18 v #9723 > > │ │ 00:07:18 v #9724 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │ 00:07:18 v #9725 > > │ __assert_eq' / actual: ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"') / expected: │ 00:07:18 v #9726 > > │ ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"') │ 00:07:18 v #9727 > > │ │ 00:07:18 v #9728 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:07:18 v #9729 > > │ __assert_eq' / actual: ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"') / expected: │ 00:07:18 v #9730 > > │ ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"') │ 00:07:18 v #9731 > > │ │ 00:07:18 v #9732 > > │ │ 00:07:18 v #9733 > > │ .rs output: │ 00:07:18 v #9734 > > │ │ 00:07:18 v #9735 > > │ 00:00:00 v #1 _assert_fn / { input = } │ 00:07:18 v #9736 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1" │ 00:07:18 v #9737 > > │ │ 00:07:18 v #9738 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } │ 00:07:18 v #9739 > > │ __assert_eq' / actual: "/a/b/c, US1_1...eq' / actual: ../../d e.f, US1_0 (-g │ 00:07:18 v #9740 > > │ \\"h i\\") / expected: ../../d e.f, US1_0 (-g \\"h i\\") │ 00:07:18 v #9741 > > │ │ 00:07:18 v #9742 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:07:18 v #9743 > > │ __assert_eq' / actual: ../../j, US1_0 (k.l -m \\"n o\\") / expected: │ 00:07:18 v #9744 > > │ ../../j, US1_0 (k.l -m \\"n o\\") │ 00:07:18 v #9745 > > │ │ 00:07:18 v #9746 > > │ │ 00:07:18 v #9747 > > │ .py output: │ 00:07:18 v #9748 > > │ │ 00:07:18 v #9749 > > │ 00:00:00 v #1 _assert_fn / { input = } │ 00:07:18 v #9750 > > │ __assert_eq' / actual: , US1_1 / expected: , US1_1 │ 00:07:18 v #9751 > > │ │ 00:07:18 v #9752 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } │ 00:07:18 v #9753 > > │ __assert_eq' / actual: /a/b/c, US1_1 / expected: /a/b/c, US1_1 │ 00:07:18 v #9754 > > │ │ 00:07:18 v #9755 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } │ 00:07:18 v #9756 > > │ __assert_eq' / actual: d, US1_0 "e.f" / expected: d, US1_0 "e.f" │ 00:07:18 v #9757 > > │ │ 00:07:18 v #9758 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:07:18 v #9759 > > │ __assert_eq' / actual: ../../g.h, US1_0 ("i.j k.l") / expected: ../../g.h, │ 00:07:18 v #9760 > > │ US1_0 ("i.j k.l") │ 00:07:18 v #9761 > > │ │ 00:07:18 v #9762 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:07:18 v #9763 > > │ __assert_eq' / actual: m:/n/o.p, US1_0 (""q.r s.t"") / expected: m:/n/o.p, │ 00:07:18 v #9764 > > │ US1_0 (""q.r s.t"") │ 00:07:18 v #9765 > > │ │ 00:07:18 v #9766 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c } │ 00:07:18 v #9767 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0 (""y z.a" b.c") / expected: │ 00:07:18 v #9768 > > │ ../../u v/w.x, US1_0 (""y z.a" b.c") │ 00:07:18 v #9769 > > │ │ 00:07:18 v #9770 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │ 00:07:18 v #9771 > > │ __assert_eq' / actual: ../../d e.f, US1_0 ("-g \\"h i\\"") / expected: │ 00:07:18 v #9772 > > │ ../../d e.f, US1_0 ("-g \\"h i\\"") │ 00:07:18 v #9773 > > │ │ 00:07:18 v #9774 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:07:18 v #9775 > > │ __assert_eq' / actual: ../../j, US1_0 ("k.l -m \\"n o\\"") / expected: │ 00:07:18 v #9776 > > │ ../../j, US1_0 ("k.l -m \\"n o\\"") │ 00:07:18 v #9777 > > │ │ 00:07:18 v #9778 > > │ │ 00:07:18 v #9779 > > │ │ 00:07:18 v #9780 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:18 v #9781 > > 00:07:18 v #9782 > > ╭─[ 5.91s - stdout ]───────────────────────────────────────────────────────────╮ 00:07:18 v #9783 > > │ .fsx output: │ 00:07:18 v #9784 > > │ │ 00:07:18 v #9785 > > │ 00:00:00 v #1 _assert_fn / { input = } │ 00:07:18 v #9786 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1" │ 00:07:18 v #9787 > > │ │ 00:07:18 v #9788 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } │ 00:07:18 v #9789 > > │ __assert_eq' / actual: "/a/b/c, US1_1" / expected: "/a/b/c, US1_1" │ 00:07:18 v #9790 > > │ │ 00:07:18 v #9791 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } │ 00:07:18 v #9792 > > │ __assert_eq' / actual: "d, US1_0 "e.f"" / expected: "d, US1_0 "e.f"" │ 00:07:18 v #9793 > > │ │ 00:07:18 v #9794 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:07:18 v #9795 > > │ __assert_eq' / actual: "../../g.h, US1_0 "i.j k.l"" / expected: "../../g.h, │ 00:07:18 v #9796 > > │ US1_0 "i.j k.l"" │ 00:07:18 v #9797 > > │ │ 00:07:18 v #9798 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:07:18 v #9799 > > │ __assert_eq' / actual: "m:/n/o.p, US1_0 ""q.r s.t""" / expected: "m:/n/o.p, │ 00:07:18 v #9800 > > │ US1_0 ""q.r s.t""" │ 00:07:18 v #9801 > > │ │ 00:07:18 v #9802 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c } │ 00:07:18 v #9803 > > │ __assert_eq' / actual: "../../u v/w.x, US1_0 ""y z.a" b.c"" / expected: │ 00:07:18 v #9804 > > │ "../../u v/w.x, US1_0 ""y z.a" b.c"" │ 00:07:18 v #9805 > > │ │ 00:07:18 v #9806 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │ 00:07:18 v #9807 > > │ __assert_eq' / actual: "../../d e.f, US1_0 "-g \\"h i\\""" / expected: │ 00:07:18 v #9808 > > │ "../../d e.f, US1_0 "-g \\"h i\\""" │ 00:07:18 v #9809 > > │ │ 00:07:18 v #9810 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:07:18 v #9811 > > │ __assert_eq' / actual: "../../j, US1_0 "k.l -m \\"n o\\""" / expected: │ 00:07:18 v #9812 > > │ "../../j, US1_0 "k.l -m \\"n o\\""" │ 00:07:18 v #9813 > > │ │ 00:07:18 v #9814 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:18 v #9815 > > 00:07:18 v #9816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:18 v #9818 > > │ ### execution_line │ 00:07:18 v #9819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:18 v #9820 > > 00:07:18 v #9821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9822 > > type execution_line = 00:07:18 v #9823 > > { 00:07:18 v #9824 > > process_id : int 00:07:18 v #9825 > > line : string 00:07:18 v #9826 > > error : bool 00:07:18 v #9827 > > } 00:07:18 v #9828 > > 00:07:18 v #9829 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9830 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:18 v #9831 > > │ ## rust │ 00:07:18 v #9832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:18 v #9833 > > 00:07:18 v #9834 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9835 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:18 v #9836 > > │ ### process_child │ 00:07:18 v #9837 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:18 v #9838 > > 00:07:18 v #9839 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9840 > > nominal process_child = 00:07:18 v #9841 > > `( 00:07:18 v #9842 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:18 v #9843 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child = 00:07:18 v #9844 > > class end" 00:07:18 v #9845 > > $'' : $'std_process_Child' 00:07:18 v #9846 > > ) 00:07:19 v #9847 > > 00:07:19 v #9848 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9849 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:19 v #9850 > > │ ### process_child_stdin │ 00:07:19 v #9851 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:19 v #9852 > > 00:07:19 v #9853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9854 > > nominal process_child_stdin = 00:07:19 v #9855 > > `( 00:07:19 v #9856 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:19 v #9857 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype 00:07:19 v #9858 > > std_process_ChildStdin = class end" 00:07:19 v #9859 > > $'' : $'std_process_ChildStdin' 00:07:19 v #9860 > > ) 00:07:19 v #9861 > > 00:07:19 v #9862 > > inl process_child_stdin 00:07:19 v #9863 > > (child : rust.ref (rust.mut' process_child)) 00:07:19 v #9864 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdin)) 00:07:19 v #9865 > > = 00:07:19 v #9866 > > !\\(child, $'"&mut $0.stdin"') 00:07:19 v #9867 > > 00:07:19 v #9868 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9869 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:19 v #9870 > > │ ## runtime │ 00:07:19 v #9871 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:19 v #9872 > > 00:07:19 v #9873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:19 v #9875 > > │ ### execution_options │ 00:07:19 v #9876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:19 v #9877 > > 00:07:19 v #9878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9879 > > type execution_options = 00:07:19 v #9880 > > { 00:07:19 v #9881 > > command : string 00:07:19 v #9882 > > cancellation_token : optionm'.option' threading.cancellation_token 00:07:19 v #9883 > > environment_variables : array_base (string * string) 00:07:19 v #9884 > > on_line : optionm'.option' (execution_line -> async.async ()) 00:07:19 v #9885 > > stdin : optionm'.option' (threading.arc (threading.mutex 00:07:19 v #9886 > > process_child_stdin) -> ()) 00:07:19 v #9887 > > trace : bool 00:07:19 v #9888 > > working_directory : optionm'.option' string 00:07:19 v #9889 > > } 00:07:19 v #9890 > > 00:07:19 v #9891 > > inl execution_options (fn : execution_options -> execution_options) : 00:07:19 v #9892 > > execution_options = 00:07:19 v #9893 > > { 00:07:19 v #9894 > > command = "" 00:07:19 v #9895 > > cancellation_token = None |> optionm'.box 00:07:19 v #9896 > > environment_variables = ;[[]] 00:07:19 v #9897 > > on_line = None |> optionm'.box 00:07:19 v #9898 > > stdin = None |> optionm'.box 00:07:19 v #9899 > > trace = true 00:07:19 v #9900 > > working_directory = None |> optionm'.box 00:07:19 v #9901 > > } 00:07:19 v #9902 > > |> fn 00:07:19 v #9903 > > 00:07:19 v #9904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9905 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:19 v #9906 > > │ ## rust │ 00:07:19 v #9907 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:19 v #9908 > > 00:07:19 v #9909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9910 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:19 v #9911 > > │ ### process_child_stderr │ 00:07:19 v #9912 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:19 v #9913 > > 00:07:19 v #9914 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9915 > > nominal process_child_stderr = 00:07:19 v #9916 > > `( 00:07:19 v #9917 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:19 v #9918 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype 00:07:19 v #9919 > > std_process_ChildStderr = class end" 00:07:19 v #9920 > > $'' : $'std_process_ChildStderr' 00:07:19 v #9921 > > ) 00:07:19 v #9922 > > 00:07:19 v #9923 > > inl process_child_stderr 00:07:19 v #9924 > > (child : rust.ref (rust.mut' process_child)) 00:07:19 v #9925 > > : rust.ref (rust.mut' (optionm'.option' process_child_stderr)) 00:07:19 v #9926 > > = 00:07:19 v #9927 > > !\\(child, $'"&mut $0.stderr"') 00:07:20 v #9928 > > 00:07:20 v #9929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:20 v #9931 > > │ ### process_child_stdout │ 00:07:20 v #9932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:20 v #9933 > > 00:07:20 v #9934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9935 > > nominal process_child_stdout = 00:07:20 v #9936 > > `( 00:07:20 v #9937 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:20 v #9938 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype 00:07:20 v #9939 > > std_process_ChildStdout = class end" 00:07:20 v #9940 > > $'' : $'std_process_ChildStdout' 00:07:20 v #9941 > > ) 00:07:20 v #9942 > > 00:07:20 v #9943 > > inl process_child_stdout 00:07:20 v #9944 > > (child : rust.ref (rust.mut' process_child)) 00:07:20 v #9945 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdout)) 00:07:20 v #9946 > > = 00:07:20 v #9947 > > !\\(child, $'"&mut $0.stdout"') 00:07:20 v #9948 > > 00:07:20 v #9949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:20 v #9951 > > │ ### process_command │ 00:07:20 v #9952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:20 v #9953 > > 00:07:20 v #9954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9955 > > nominal process_command = 00:07:20 v #9956 > > `( 00:07:20 v #9957 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:20 v #9958 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command 00:07:20 v #9959 > > = class end" 00:07:20 v #9960 > > $'' : $'std_process_Command' 00:07:20 v #9961 > > ) 00:07:21 v #9962 > > 00:07:21 v #9963 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:21 v #9964 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:21 v #9965 > > │ ### process_stdio │ 00:07:21 v #9966 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:21 v #9967 > > 00:07:21 v #9968 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:21 v #9969 > > nominal process_stdio = 00:07:21 v #9970 > > `( 00:07:21 v #9971 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:21 v #9972 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio = 00:07:21 v #9973 > > class end" 00:07:21 v #9974 > > $'' : $'std_process_Stdio' 00:07:21 v #9975 > > ) 00:07:21 v #9976 > > 00:07:21 v #9977 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:21 v #9978 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:21 v #9979 > > │ ### process_output │ 00:07:21 v #9980 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:21 v #9981 > > 00:07:21 v #9982 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:21 v #9983 > > nominal process_output = 00:07:21 v #9984 > > `( 00:07:21 v #9985 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:21 v #9986 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output = 00:07:21 v #9987 > > class end" 00:07:21 v #9988 > > $'' : $'std_process_Output' 00:07:21 v #9989 > > ) 00:07:22 v #9990 > > 00:07:22 v #9991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:22 v #9992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:22 v #9993 > > │ ### process_exit_status │ 00:07:22 v #9994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:22 v #9995 > > 00:07:22 v #9996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:22 v #9997 > > nominal process_exit_status = 00:07:22 v #9998 > > `( 00:07:22 v #9999 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:22 v #10000 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype 00:07:22 v #10001 > > std_process_ExitStatus = class end" 00:07:22 v #10002 > > $'' : $'std_process_ExitStatus' 00:07:22 v #10003 > > ) 00:07:22 v #10004 > > 00:07:22 v #10005 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:22 v #10006 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:22 v #10007 > > │ ### process_output_status │ 00:07:22 v #10008 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:22 v #10009 > > 00:07:22 v #10010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:22 v #10011 > > inl process_output_status (output : process_output) : process_exit_status = 00:07:22 v #10012 > > !\\(output, $'"$0.status"') 00:07:23 v #10013 > > 00:07:23 v #10014 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:23 v #10015 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:23 v #10016 > > │ ### process_exit_status_code │ 00:07:23 v #10017 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:23 v #10018 > > 00:07:23 v #10019 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:23 v #10020 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option' 00:07:23 v #10021 > > i32 = 00:07:23 v #10022 > > !\\(status, $'"$0.code()"') 00:07:23 v #10023 > > 00:07:23 v #10024 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:23 v #10025 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:23 v #10026 > > │ ### stdin_write_all │ 00:07:23 v #10027 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:23 v #10028 > > 00:07:23 v #10029 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:23 v #10030 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text : 00:07:23 v #10031 > > string) : () = 00:07:23 v #10032 > > inl stream = text |> sm'.as_bytes 00:07:23 v #10033 > > inl stdin = join stdin 00:07:23 v #10034 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:07:23 v #10035 > > (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0, 00:07:23 v #10036 > > !stream).unwrap()"') : bool) |> ignore 00:07:23 v #10037 > > 00:07:23 v #10038 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:23 v #10039 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:23 v #10040 > > │ ### stdin_flush │ 00:07:23 v #10041 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:23 v #10042 > > 00:07:23 v #10043 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:23 v #10044 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () = 00:07:23 v #10045 > > inl stdin = join stdin 00:07:23 v #10046 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:07:23 v #10047 > > (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |> 00:07:23 v #10048 > > ignore 00:07:24 v #10049 > > 00:07:24 v #10050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:24 v #10051 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:24 v #10052 > > │ ### new_process_command │ 00:07:24 v #10053 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:24 v #10054 > > 00:07:24 v #10055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:24 v #10056 > > inl new_process_command (file_name : string) : process_command = 00:07:24 v #10057 > > !\\(file_name, $'"std::process::Command::new(&*$0)"') 00:07:24 v #10058 > > 00:07:24 v #10059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:24 v #10060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:24 v #10061 > > │ ### process_stdio_piped │ 00:07:24 v #10062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:24 v #10063 > > 00:07:24 v #10064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:24 v #10065 > > inl process_stdio_piped () : process_stdio = 00:07:24 v #10066 > > !\($'"std::process::Stdio::piped()"') 00:07:25 v #10067 > > 00:07:25 v #10068 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 v #10069 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 v #10070 > > │ ### process_command_args │ 00:07:25 v #10071 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 v #10072 > > 00:07:25 v #10073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 v #10074 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) : 00:07:25 v #10075 > > process_command = 00:07:25 v #10076 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:25 v #10077 > > (!\\(args, $'"true; std::process::Command::args(&mut !c, &*$0)"') : bool) |> 00:07:25 v #10078 > > ignore 00:07:25 v #10079 > > c |> rust.emit 00:07:25 v #10080 > > 00:07:25 v #10081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 v #10082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 v #10083 > > │ ### process_command_stdout │ 00:07:25 v #10084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 v #10085 > > 00:07:25 v #10086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 v #10087 > > inl process_command_stdout (stdio : process_stdio) (c : process_command) : 00:07:25 v #10088 > > process_command = 00:07:25 v #10089 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:25 v #10090 > > (!\($'"true; std::process::Command::stdout(&mut !c, 00:07:25 v #10091 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:25 v #10092 > > c |> rust.emit 00:07:26 v #10093 > > 00:07:26 v #10094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:26 v #10095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:26 v #10096 > > │ ### process_command_stderr │ 00:07:26 v #10097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:26 v #10098 > > 00:07:26 v #10099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:26 v #10100 > > inl process_command_stderr (stdio : process_stdio) (c : process_command) : 00:07:26 v #10101 > > process_command = 00:07:26 v #10102 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:26 v #10103 > > (!\($'"true; std::process::Command::stderr(&mut !c, 00:07:26 v #10104 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:26 v #10105 > > c |> rust.emit 00:07:26 v #10106 > > 00:07:26 v #10107 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:26 v #10108 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:26 v #10109 > > │ ### process_command_stdin │ 00:07:26 v #10110 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:26 v #10111 > > 00:07:26 v #10112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:26 v #10113 > > inl process_command_stdin (stdio : process_stdio) (c : process_command) : 00:07:26 v #10114 > > process_command = 00:07:26 v #10115 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:26 v #10116 > > (!\($'"true; std::process::Command::stdin(&mut !c, 00:07:26 v #10117 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:26 v #10118 > > c |> rust.emit 00:07:26 v #10119 > > 00:07:26 v #10120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:26 v #10121 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:26 v #10122 > > │ ### process_command_current_dir │ 00:07:26 v #10123 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:26 v #10124 > > 00:07:26 v #10125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:26 v #10126 > > inl process_command_current_dir (dir : string) (c : process_command) : 00:07:26 v #10127 > > process_command = 00:07:26 v #10128 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:26 v #10129 > > (!\\(dir, $'"true; std::process::Command::current_dir(&mut !c, &*$0)"') : 00:07:26 v #10130 > > bool) |> ignore 00:07:26 v #10131 > > !\($'$"!c"') 00:07:27 v #10132 > > 00:07:27 v #10133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:27 v #10134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:27 v #10135 > > │ ### process_command_env │ 00:07:27 v #10136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:27 v #10137 > > 00:07:27 v #10138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:27 v #10139 > > inl process_command_env (key : string) (value : string) (c : process_command) : 00:07:27 v #10140 > > process_command = 00:07:27 v #10141 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:27 v #10142 > > (!\\((key, value), $'"true; std::process::Command::env(&mut !c, &*$0, 00:07:27 v #10143 > > &*$1)"') : bool) |> ignore 00:07:27 v #10144 > > c |> rust.emit 00:07:27 v #10145 > > 00:07:27 v #10146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:27 v #10147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:27 v #10148 > > │ ### process_command_spawn │ 00:07:27 v #10149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:27 v #10150 > > 00:07:27 v #10151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:27 v #10152 > > inl process_command_spawn 00:07:27 v #10153 > > (c : process_command) 00:07:27 v #10154 > > : resultm.result' process_child stream.io_error 00:07:27 v #10155 > > = 00:07:27 v #10156 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:27 v #10157 > > !\($'"std::process::Command::spawn(&mut !c)"') 00:07:28 v #10158 > > 00:07:28 v #10159 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:28 v #10160 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:28 v #10161 > > │ ### child_wait_with_output │ 00:07:28 v #10162 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:28 v #10163 > > 00:07:28 v #10164 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:28 v #10165 > > inl child_wait_with_output 00:07:28 v #10166 > > (child : process_child) 00:07:28 v #10167 > > : resultm.result' process_output stream.io_error 00:07:28 v #10168 > > = 00:07:28 v #10169 > > !\\(child, $'"$0.wait_with_output()"') 00:07:28 v #10170 > > 00:07:28 v #10171 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:28 v #10172 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:28 v #10173 > > │ ### stdio_line │ 00:07:28 v #10174 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:28 v #10175 > > 00:07:28 v #10176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:28 v #10177 > > inl stdio_line 00:07:28 v #10178 > > (stdio : result () ()) 00:07:28 v #10179 > > (trace' : bool) 00:07:28 v #10180 > > (channel_sender : threading.arc (threading.mutex (threading.channel_sender 00:07:28 v #10181 > > sm'.std_string))) 00:07:28 v #10182 > > (line : resultm.result' sm'.std_string stream.io_error) 00:07:28 v #10183 > > : resultm.result' () sm'.std_string 00:07:28 v #10184 > > = 00:07:28 v #10185 > > inl highlight text = 00:07:28 v #10186 > > $'$"\\u001b[[4;7m{!text}\\u001b[[0m"' 00:07:28 v #10187 > > inl line = 00:07:28 v #10188 > > match 00:07:28 v #10189 > > line 00:07:28 v #10190 > > |> resultm.map_error' sm'.format' 00:07:28 v #10191 > > |> resultm.unbox' 00:07:28 v #10192 > > with 00:07:28 v #10193 > > | Ok line => 00:07:28 v #10194 > > inl line = 00:07:28 v #10195 > > line 00:07:28 v #10196 > > |> sm'.from_std_string 00:07:28 v #10197 > > // |> sm'.as_bytes 00:07:28 v #10198 > > // |> am'.slice_to_vec 00:07:28 v #10199 > > |> sm'.encoding_encode' (sm'.encoding_utf8' ()) 00:07:28 v #10200 > > |> rust.cow_as_ref 00:07:28 v #10201 > > |> sm'.str_from_utf8 00:07:28 v #10202 > > // |> sm'.utf8_decode 00:07:28 v #10203 > > |> resultm.unwrap' 00:07:28 v #10204 > > |> sm'.ref_to_std_string 00:07:28 v #10205 > > // String::from_utf8_lossy(line.as_bytes()).into() 00:07:28 v #10206 > > inl line_log = line |> sm'.from_std_string 00:07:28 v #10207 > > inl text = 00:07:28 v #10208 > > match stdio with 00:07:28 v #10209 > > | Ok () => $'$"> {!line_log}"' 00:07:28 v #10210 > > | Error () => $'$"\! {!line_log}"' 00:07:28 v #10211 > > if trace' 00:07:28 v #10212 > > then trace Verbose (fun () => text) id 00:07:28 v #10213 > > else text |> console.write_line 00:07:28 v #10214 > > match stdio with 00:07:28 v #10215 > > | Ok () => line 00:07:28 v #10216 > > | Error () => line |> highlight |> sm'.to_std_string 00:07:28 v #10217 > > | Error e => 00:07:28 v #10218 > > trace Critical 00:07:28 v #10219 > > fun () => "runtime.stdio_line" 00:07:28 v #10220 > > fun () => { trace' e } 00:07:28 v #10221 > > e |> highlight |> sm'.to_std_string 00:07:28 v #10222 > > channel_sender 00:07:28 v #10223 > > |> threading.arc_mutex_lock 00:07:28 v #10224 > > |> resultm.unwrap' 00:07:28 v #10225 > > |> threading.mutex_guard_ref 00:07:28 v #10226 > > |> threading.channel_send line 00:07:28 v #10227 > > |> resultm.map_error' sm'.format' 00:07:29 v #10228 > > 00:07:29 v #10229 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:29 v #10230 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:29 v #10231 > > │ ### command │ 00:07:29 v #10232 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:29 v #10233 > > 00:07:29 v #10234 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:29 v #10235 > > nominal command = 00:07:29 v #10236 > > `( 00:07:29 v #10237 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:29 v #10238 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end" 00:07:29 v #10239 > > $'' : $'clap_Command' 00:07:29 v #10240 > > ) 00:07:29 v #10241 > > 00:07:29 v #10242 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:29 v #10243 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:29 v #10244 > > │ ### new_command │ 00:07:29 v #10245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:29 v #10246 > > 00:07:29 v #10247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:29 v #10248 > > inl new_command (s : rust.static_ref sm'.str) : command = 00:07:29 v #10249 > > !\\(s, $'"clap::Command::new($0)"') 00:07:29 v #10250 > > 00:07:29 v #10251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:29 v #10252 > > //// test 00:07:29 v #10253 > > ///! rust -d clap 00:07:29 v #10254 > > 00:07:29 v #10255 > > ##"command" 00:07:29 v #10256 > > |> new_command 00:07:29 v #10257 > > |> sm'.format_pretty 00:07:29 v #10258 > > |> _assert sm'.contains "\"command\"" 00:07:32 v #10259 > > 00:07:32 v #10260 > > ╭─[ 2.61s - return value ]─────────────────────────────────────────────────────╮ 00:07:32 v #10261 > > │ __assert / actual: ""command"" / expected: "Command { │ 00:07:32 v #10262 > > │ name: "command", │ 00:07:32 v #10263 > > │ long_flag: None, │ 00:07:32 v #10264 > > │ short_flag: None, │ 00:07:32 v #10265 > > │ display_name: None, │ 00:07:32 v #10266 > > │ bin_name: None, │ 00:07:32 v #10267 > > │ author: None, │ 00:07:32 v #10268 > > │ version: None, │ 00:07:32 v #10269 > > │ long_version: None, │ 00:07:32 v #10270 > > │ about: None, │ 00:07:32 v #10271 > > │ long_about: None, │ 00:07:32 v #10272 > > │ before_help: None, │ 00:07:32 v #10273 > > │ before_long_help: None, │ 00:07:32 v #10274 > > │ after_help: None, │ 00:07:32 v #10275 > > │ after_long_help: None, │ 00:07:32 v #10276 > > │ aliases: [], │ 00:07:32 v #10277 > > │ short_flag_aliases: [], │ 00:07:32 v #10278 > > │ long_flag_aliases: [], │ 00:07:32 v #10279 > > │ usage_str: None, │ 00:07:32 v #10280 > > │ usage_name: None, │ 00:07:32 v #10281 > > │ help_str: None, │ 00:07:32 v #10282 > > │ disp_ord: None, │ 00:07:32 v #10283 > > │ template: None, │ 00:07:32 v #10284 > > │ settings: AppFlags( │ 00:07:32 v #10285 > > │ 0, │ 00:07:32 v #10286 > > │ ), │ 00:07:32 v #10287 > > │ g_settings: AppFlags( │ 00:07:32 v #10288 > > │ 0, │ 00:07:32 v #10289 > > │ ), │ 00:07:32 v #10290 > > │ args: MKeyMap { │ 00:07:32 v #10291 > > │ args: [], │ 00:07:32 v #10292 > > │ keys: [], │ 00:07:32 v #10293 > > │ }, │ 00:07:32 v #10294 > > │ subcommands: [], │ 00:07:32 v #10295 > > │ groups: [], │ 00:07:32 v #10296 > > │ current_help_heading: None, │ 00:07:32 v #10297 > > │ current_disp_ord: Some( │ 00:07:32 v #10298 > > │ 0, │ 00:07:32 v #10299 > > │ ), │ 00:07:32 v #10300 > > │ subcommand_value_name: None, │ 00:07:32 v #10301 > > │ subcommand_heading: None, │ 00:07:32 v #10302 > > │ external_value_parser: None, │ 00:07:32 v #10303 > > │ long_help_exists: false, │ 00:07:32 v #10304 > > │ deferred: None, │ 00:07:32 v #10305 > > │ app_ext: Extensions { │ 00:07:32 v #10306 > > │ extensions: FlatMap { │ 00:07:32 v #10307 > > │ keys: [], │ 00:07:32 v #10308 > > │ values: [], │ 00:07:32 v #10309 > > │ }, │ 00:07:32 v #10310 > > │ }, │ 00:07:32 v #10311 > > │ }" │ 00:07:32 v #10312 > > │ │ 00:07:32 v #10313 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:32 v #10314 > > 00:07:32 v #10315 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:32 v #10316 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:32 v #10317 > > │ ### arg │ 00:07:32 v #10318 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:32 v #10319 > > 00:07:32 v #10320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:32 v #10321 > > nominal arg = 00:07:32 v #10322 > > `( 00:07:32 v #10323 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:32 v #10324 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end" 00:07:32 v #10325 > > $'' : $'clap_Arg' 00:07:32 v #10326 > > ) 00:07:33 v #10327 > > 00:07:33 v #10328 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:33 v #10329 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:33 v #10330 > > │ ### new_arg │ 00:07:33 v #10331 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:33 v #10332 > > 00:07:33 v #10333 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:33 v #10334 > > inl new_arg (s : rust.static_ref sm'.str) : arg = 00:07:33 v #10335 > > !\\(s, $'"clap::Arg::new($0)"') 00:07:33 v #10336 > > 00:07:33 v #10337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:33 v #10338 > > //// test 00:07:33 v #10339 > > ///! rust -d clap 00:07:33 v #10340 > > 00:07:33 v #10341 > > ##"arg" 00:07:33 v #10342 > > |> new_arg 00:07:33 v #10343 > > |> sm'.format_pretty 00:07:33 v #10344 > > |> _assert sm'.contains "\"arg\"" 00:07:36 v #10345 > > 00:07:36 v #10346 > > ╭─[ 2.56s - return value ]─────────────────────────────────────────────────────╮ 00:07:36 v #10347 > > │ __assert / actual: ""arg"" / expected: "Arg { │ 00:07:36 v #10348 > > │ id: "arg", │ 00:07:36 v #10349 > > │ help: None, │ 00:07:36 v #10350 > > │ long_help: None, │ 00:07:36 v #10351 > > │ action: None, │ 00:07:36 v #10352 > > │ value_parser: None, │ 00:07:36 v #10353 > > │ blacklist: [], │ 00:07:36 v #10354 > > │ settings: ArgFlags( │ 00:07:36 v #10355 > > │ 0, │ 00:07:36 v #10356 > > │ ), │ 00:07:36 v #10357 > > │ overrides: [], │ 00:07:36 v #10358 > > │ groups: [], │ 00:07:36 v #10359 > > │ requires: [], │ 00:07:36 v #10360 > > │ r_ifs: [], │ 00:07:36 v #10361 > > │ r_unless: [], │ 00:07:36 v #10362 > > │ short: None, │ 00:07:36 v #10363 > > │ long: None, │ 00:07:36 v #10364 > > │ aliases: [], │ 00:07:36 v #10365 > > │ short_aliases: [], │ 00:07:36 v #10366 > > │ disp_ord: None, │ 00:07:36 v #10367 > > │ val_names: [], │ 00:07:36 v #10368 > > │ num_vals: None, │ 00:07:36 v #10369 > > │ val_delim: None, │ 00:07:36 v #10370 > > │ default_vals: [], │ 00:07:36 v #10371 > > │ default_vals_ifs: [], │ 00:07:36 v #10372 > > │ terminator: None, │ 00:07:36 v #10373 > > │ index: None, │ 00:07:36 v #10374 > > │ help_heading: None, │ 00:07:36 v #10375 > > │ default_missing_vals: [], │ 00:07:36 v #10376 > > │ ext: Extensions { │ 00:07:36 v #10377 > > │ extensions: FlatMap { │ 00:07:36 v #10378 > > │ keys: [], │ 00:07:36 v #10379 > > │ values: [], │ 00:07:36 v #10380 > > │ }, │ 00:07:36 v #10381 > > │ }, │ 00:07:36 v #10382 > > │ }" │ 00:07:36 v #10383 > > │ │ 00:07:36 v #10384 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:36 v #10385 > > 00:07:36 v #10386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #10387 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:36 v #10388 > > │ ### command_arg │ 00:07:36 v #10389 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:36 v #10390 > > 00:07:36 v #10391 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #10392 > > inl command_arg (arg : arg) (command : command) : command = 00:07:36 v #10393 > > !\\((command, arg), $'"clap::Command::arg($0, $1)"') 00:07:36 v #10394 > > 00:07:36 v #10395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #10396 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:36 v #10397 > > │ ### arg_required │ 00:07:36 v #10398 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:36 v #10399 > > 00:07:36 v #10400 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #10401 > > inl arg_required (value : bool) (arg : arg) : arg = 00:07:36 v #10402 > > !\\((arg, value), $'"$0.required($1)"') 00:07:36 v #10403 > > 00:07:36 v #10404 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #10405 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:36 v #10406 > > │ ### arg_require_equals │ 00:07:36 v #10407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:36 v #10408 > > 00:07:36 v #10409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #10410 > > inl arg_require_equals (value : bool) (arg : arg) : arg = 00:07:36 v #10411 > > !\\((arg, value), $'"$0.require_equals($1)"') 00:07:37 v #10412 > > 00:07:37 v #10413 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #10414 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:37 v #10415 > > │ ### arg_default_value │ 00:07:37 v #10416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:37 v #10417 > > 00:07:37 v #10418 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #10419 > > inl arg_default_value (value : string) (arg : arg) : arg = 00:07:37 v #10420 > > inl value = #value 00:07:37 v #10421 > > !\\((arg, value), $'"$0.default_value($1)"') 00:07:37 v #10422 > > 00:07:37 v #10423 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #10424 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:37 v #10425 > > │ ### arg_default_missing_value │ 00:07:37 v #10426 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:37 v #10427 > > 00:07:37 v #10428 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #10429 > > inl arg_default_missing_value (value : string) (arg : arg) : arg = 00:07:37 v #10430 > > inl value = #value 00:07:37 v #10431 > > !\\((arg, value), $'"$0.default_missing_value($1)"') 00:07:38 v #10432 > > 00:07:38 v #10433 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #10434 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:38 v #10435 > > │ ### arg_overrides_with │ 00:07:38 v #10436 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:38 v #10437 > > 00:07:38 v #10438 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #10439 > > inl arg_overrides_with (value : string) (arg : arg) : arg = 00:07:38 v #10440 > > inl value = #value 00:07:38 v #10441 > > !\\((arg, value), $'"$0.overrides_with($1)"') 00:07:38 v #10442 > > 00:07:38 v #10443 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #10444 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:38 v #10445 > > │ ### arg_short │ 00:07:38 v #10446 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:38 v #10447 > > 00:07:38 v #10448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #10449 > > inl arg_short (value : char) (arg : arg) : arg = 00:07:38 v #10450 > > !\\((arg, value), $'"$0.short($1)"') 00:07:39 v #10451 > > 00:07:39 v #10452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #10453 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:39 v #10454 > > │ ### arg_long │ 00:07:39 v #10455 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:39 v #10456 > > 00:07:39 v #10457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #10458 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg = 00:07:39 v #10459 > > !\\((arg, value), $'"$0.long($1)"') 00:07:39 v #10460 > > 00:07:39 v #10461 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #10462 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:39 v #10463 > > │ ### arg_value_names │ 00:07:39 v #10464 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:39 v #10465 > > 00:07:39 v #10466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #10467 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg) 00:07:39 v #10468 > > : arg = 00:07:39 v #10469 > > inl values = values |> am'.to_vec 00:07:39 v #10470 > > !\\((arg, values), $'"$0.value_names($1)"') 00:07:40 v #10471 > > 00:07:40 v #10472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #10473 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:40 v #10474 > > │ ### arg_num_args │ 00:07:40 v #10475 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:40 v #10476 > > 00:07:40 v #10477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #10478 > > inl arg_num_args (value : i32) (arg : arg) : arg = 00:07:40 v #10479 > > !\\((arg, value), $'"$0.num_args($1)"') 00:07:40 v #10480 > > 00:07:40 v #10481 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #10482 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:40 v #10483 > > │ ### value_range │ 00:07:40 v #10484 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:40 v #10485 > > 00:07:40 v #10486 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #10487 > > nominal value_range = 00:07:40 v #10488 > > `( 00:07:40 v #10489 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:40 v #10490 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype 00:07:40 v #10491 > > clap_builder_ValueRange = class end" 00:07:40 v #10492 > > $'' : $'clap_builder_ValueRange' 00:07:40 v #10493 > > ) 00:07:40 v #10494 > > 00:07:40 v #10495 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #10496 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:40 v #10497 > > │ ### new_value_range │ 00:07:40 v #10498 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:40 v #10499 > > 00:07:40 v #10500 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #10501 > > inl new_value_range forall t. inclusive (start : _ t) (end : _ t) : value_range 00:07:40 v #10502 > > = 00:07:40 v #10503 > > inl len () = 00:07:40 v #10504 > > 0i32 |> convert 00:07:40 v #10505 > > inl start, end = 00:07:40 v #10506 > > open am' 00:07:40 v #10507 > > match start, end with 00:07:40 v #10508 > > | Start start, End fn => 00:07:40 v #10509 > > start, len |> fn 00:07:40 v #10510 > > | End start_fn, End end_fn => 00:07:40 v #10511 > > start_fn len, end_fn len 00:07:40 v #10512 > > inl inclusive = 00:07:40 v #10513 > > if inclusive 00:07:40 v #10514 > > then "=" 00:07:40 v #10515 > > else "" 00:07:40 v #10516 > > match start, end with 00:07:40 v #10517 > > | start, end when end =. len () => !\\(start, 00:07:40 v #10518 > > $'"clap::builder::ValueRange::new($0..)"') 00:07:40 v #10519 > > | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." + 00:07:40 v #10520 > > !inclusive + "$1)"') 00:07:41 v #10521 > > 00:07:41 v #10522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #10523 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:41 v #10524 > > │ ### arg_num_args_range │ 00:07:41 v #10525 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:41 v #10526 > > 00:07:41 v #10527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #10528 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg = 00:07:41 v #10529 > > !\\((arg, value), $'"$0.num_args($1)"') 00:07:41 v #10530 > > 00:07:41 v #10531 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #10532 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:41 v #10533 > > │ ### arg_value_name │ 00:07:41 v #10534 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:41 v #10535 > > 00:07:41 v #10536 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #10537 > > inl arg_value_name (value : string) (arg : arg) : arg = 00:07:41 v #10538 > > inl value = value |> sm'.as_str 00:07:41 v #10539 > > !\\((arg, value), $'"$0.value_name($1)"') 00:07:42 v #10540 > > 00:07:42 v #10541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:42 v #10542 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:42 v #10543 > > │ ### value_parser │ 00:07:42 v #10544 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:42 v #10545 > > 00:07:42 v #10546 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:42 v #10547 > > nominal value_parser = 00:07:42 v #10548 > > `( 00:07:42 v #10549 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:42 v #10550 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype 00:07:42 v #10551 > > clap_builder_ValueParser = class end" 00:07:42 v #10552 > > $'' : $'clap_builder_ValueParser' 00:07:42 v #10553 > > ) 00:07:42 v #10554 > > 00:07:42 v #10555 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:42 v #10556 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:42 v #10557 > > │ ### possible_value │ 00:07:42 v #10558 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:42 v #10559 > > 00:07:42 v #10560 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:42 v #10561 > > nominal possible_value = 00:07:42 v #10562 > > `( 00:07:42 v #10563 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:42 v #10564 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype 00:07:42 v #10565 > > clap_builder_PossibleValue = class end" 00:07:42 v #10566 > > $'' : $'clap_builder_PossibleValue' 00:07:42 v #10567 > > ) 00:07:43 v #10568 > > 00:07:43 v #10569 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:43 v #10570 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:43 v #10571 > > │ ### new_possible_value │ 00:07:43 v #10572 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:43 v #10573 > > 00:07:43 v #10574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:43 v #10575 > > inl new_possible_value forall t. (x : t) : possible_value = 00:07:43 v #10576 > > !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"') 00:07:43 v #10577 > > 00:07:43 v #10578 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:43 v #10579 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:43 v #10580 > > │ ### value_parser_path_buf │ 00:07:43 v #10581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:43 v #10582 > > 00:07:43 v #10583 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:43 v #10584 > > inl value_parser_path_buf () : value_parser = 00:07:43 v #10585 > > !\($'"clap::value_parser\!(std::path::PathBuf)"') 00:07:44 v #10586 > > 00:07:44 v #10587 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:44 v #10588 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:44 v #10589 > > │ ### value_parser_expr │ 00:07:44 v #10590 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:44 v #10591 > > 00:07:44 v #10592 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:44 v #10593 > > inl value_parser_expr (expr : string) : value_parser = 00:07:44 v #10594 > > !\($'"clap::value_parser\!(" + !expr + ").into()"') 00:07:44 v #10595 > > 00:07:44 v #10596 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:44 v #10597 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:44 v #10598 > > │ ### arg_value_parser │ 00:07:44 v #10599 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:44 v #10600 > > 00:07:44 v #10601 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:44 v #10602 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg = 00:07:44 v #10603 > > !\\((arg, values), $'"$0.value_parser($1)"') 00:07:44 v #10604 > > 00:07:44 v #10605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:44 v #10606 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:44 v #10607 > > │ ### arg_action │ 00:07:44 v #10608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:44 v #10609 > > 00:07:44 v #10610 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:44 v #10611 > > nominal arg_action' = 00:07:44 v #10612 > > `( 00:07:44 v #10613 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:44 v #10614 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class 00:07:44 v #10615 > > end" 00:07:44 v #10616 > > $'' : $'clap_ArgAction' 00:07:44 v #10617 > > ) 00:07:44 v #10618 > > 00:07:44 v #10619 > > union arg_action = 00:07:44 v #10620 > > | Set 00:07:44 v #10621 > > | Append 00:07:44 v #10622 > > | SetTrue 00:07:44 v #10623 > > | SetFalse 00:07:44 v #10624 > > | Count 00:07:44 v #10625 > > | Help 00:07:44 v #10626 > > | HelpShort 00:07:44 v #10627 > > | HelpLong 00:07:44 v #10628 > > | Version 00:07:44 v #10629 > > 00:07:44 v #10630 > > inl arg_action = function 00:07:44 v #10631 > > | Set => !\($'"clap::ArgAction::Set"') : arg_action' 00:07:44 v #10632 > > | Append => !\($'"clap::ArgAction::Append"') : arg_action' 00:07:44 v #10633 > > | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action' 00:07:44 v #10634 > > | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action' 00:07:44 v #10635 > > | Count => !\($'"clap::ArgAction::Count"') : arg_action' 00:07:44 v #10636 > > | Help => !\($'"clap::ArgAction::Help"') : arg_action' 00:07:44 v #10637 > > | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action' 00:07:44 v #10638 > > | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action' 00:07:44 v #10639 > > | Version => !\($'"clap::ArgAction::Version"') : arg_action' 00:07:44 v #10640 > > 00:07:44 v #10641 > > inl arg_action (value : arg_action) (arg : arg) : arg = 00:07:44 v #10642 > > inl value = value |> arg_action 00:07:44 v #10643 > > !\\((arg, value), $'"$0.action($1)"') 00:07:45 v #10644 > > 00:07:45 v #10645 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:45 v #10646 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:45 v #10647 > > │ ### arg_index │ 00:07:45 v #10648 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:45 v #10649 > > 00:07:45 v #10650 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:45 v #10651 > > inl arg_index (value : i32) (arg : arg) : arg = 00:07:45 v #10652 > > !\\((arg, value), $'"$0.index($1)"') 00:07:45 v #10653 > > 00:07:45 v #10654 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:45 v #10655 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:45 v #10656 > > │ ### arg_matches │ 00:07:45 v #10657 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:45 v #10658 > > 00:07:45 v #10659 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:45 v #10660 > > nominal arg_matches = 00:07:45 v #10661 > > `( 00:07:45 v #10662 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:45 v #10663 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class 00:07:45 v #10664 > > end" 00:07:45 v #10665 > > $'' : $'clap_ArgMatches' 00:07:45 v #10666 > > ) 00:07:46 v #10667 > > 00:07:46 v #10668 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:46 v #10669 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:46 v #10670 > > │ ### command_get_matches │ 00:07:46 v #10671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:46 v #10672 > > 00:07:46 v #10673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:46 v #10674 > > inl command_get_matches (command : command) : arg_matches = 00:07:46 v #10675 > > !\\(command, $'"clap::Command::get_matches($0)"') 00:07:46 v #10676 > > 00:07:46 v #10677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:46 v #10678 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:46 v #10679 > > │ ### command_get_matches_from │ 00:07:46 v #10680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:46 v #10681 > > 00:07:46 v #10682 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:46 v #10683 > > inl command_get_matches_from (args : array_base string) (command : command) : 00:07:46 v #10684 > > arg_matches = 00:07:46 v #10685 > > inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string 00:07:46 v #10686 > > !\\(command, $'"clap::Command::get_matches_from($0, !args)"') 00:07:47 v #10687 > > 00:07:47 v #10688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:47 v #10689 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:47 v #10690 > > │ ### command_args_override_self │ 00:07:47 v #10691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:47 v #10692 > > 00:07:47 v #10693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:47 v #10694 > > inl command_args_override_self (yes : bool) (command : command) : command = 00:07:47 v #10695 > > !\\(command, $'"clap::Command::args_override_self($0, !yes)"') 00:07:47 v #10696 > > 00:07:47 v #10697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:47 v #10698 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:47 v #10699 > > │ ### command_init_arg │ 00:07:47 v #10700 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:47 v #10701 > > 00:07:47 v #10702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:47 v #10703 > > inl command_init_arg (long, short) fn command = 00:07:47 v #10704 > > command 00:07:47 v #10705 > > |> command_arg ( 00:07:47 v #10706 > > ##long 00:07:47 v #10707 > > |> new_arg 00:07:47 v #10708 > > |> arg_short short 00:07:47 v #10709 > > |> arg_long ##long 00:07:47 v #10710 > > |> fn 00:07:47 v #10711 > > ) 00:07:48 v #10712 > > 00:07:48 v #10713 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #10714 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:48 v #10715 > > │ ### matches_get_one │ 00:07:48 v #10716 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:48 v #10717 > > 00:07:48 v #10718 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #10719 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) : 00:07:48 v #10720 > > optionm'.option' t = 00:07:48 v #10721 > > inl x = join x 00:07:48 v #10722 > > inl x = x |> sm'.as_str 00:07:48 v #10723 > > !\\((matches, x), $'"clap::ArgMatches::get_one(&$0, $1).cloned()"') 00:07:48 v #10724 > > 00:07:48 v #10725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #10726 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:48 v #10727 > > │ ### matches_get_flag │ 00:07:48 v #10728 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:48 v #10729 > > 00:07:48 v #10730 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #10731 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool = 00:07:48 v #10732 > > inl x = join x 00:07:48 v #10733 > > inl x = x |> sm'.as_str 00:07:48 v #10734 > > !\\((matches, x), $'"clap::ArgMatches::get_flag(&$0, $1)"') 00:07:48 v #10735 > > 00:07:48 v #10736 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #10737 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:48 v #10738 > > │ ### matches_get_many │ 00:07:48 v #10739 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:48 v #10740 > > 00:07:48 v #10741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #10742 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) : 00:07:48 v #10743 > > optionm'.option' (am'.vec t) = 00:07:48 v #10744 > > inl x = join x 00:07:48 v #10745 > > inl x = x |> sm'.as_str 00:07:48 v #10746 > > !\\((matches, x), $'"clap::ArgMatches::get_many(&$0, $1).map(|x| 00:07:48 v #10747 > > x.cloned().into_iter().collect())"') 00:07:49 v #10748 > > 00:07:49 v #10749 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #10750 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:49 v #10751 > > │ ### matches_get_occurrences │ 00:07:49 v #10752 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:49 v #10753 > > 00:07:49 v #10754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #10755 > > inl matches_get_occurrences (x : string) (matches : arg_matches) : 00:07:49 v #10756 > > optionm'.option' (array_base sm'.std_string) = 00:07:49 v #10757 > > inl x = join x 00:07:49 v #10758 > > inl x = x |> sm'.as_str 00:07:49 v #10759 > > !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"') 00:07:49 v #10760 > > 00:07:49 v #10761 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #10762 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:49 v #10763 > > │ ### matches_subcommand │ 00:07:49 v #10764 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:49 v #10765 > > 00:07:49 v #10766 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #10767 > > inl matches_subcommand (matches : arg_matches) : optionm'.option' 00:07:49 v #10768 > > (sm'.std_string * arg_matches) = 00:07:49 v #10769 > > !\\((matches, sm'.ref_to_std_string), 00:07:49 v #10770 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a), 00:07:49 v #10771 > > b.clone()))"') 00:07:50 v #10772 > > 00:07:50 v #10773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #10774 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:50 v #10775 > > │ ### matches_values_of │ 00:07:50 v #10776 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:50 v #10777 > > 00:07:50 v #10778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #10779 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base 00:07:50 v #10780 > > sm'.std_string = 00:07:50 v #10781 > > !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"') 00:07:50 v #10782 > > 00:07:50 v #10783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #10784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:50 v #10785 > > │ ### command_subcommand_required │ 00:07:50 v #10786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:50 v #10787 > > 00:07:50 v #10788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #10789 > > inl command_subcommand_required (value : bool) (command : command) : command = 00:07:50 v #10790 > > !\\(command, $'"clap::Command::subcommand_required($0, !value)"') 00:07:51 v #10791 > > 00:07:51 v #10792 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:51 v #10793 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:51 v #10794 > > │ ### command_subcommand │ 00:07:51 v #10795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:51 v #10796 > > 00:07:51 v #10797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:51 v #10798 > > inl command_subcommand (subcommand : command) (command : command) : command = 00:07:51 v #10799 > > !\\(command, $'"clap::Command::subcommand($0, !subcommand)"') 00:07:51 v #10800 > > 00:07:51 v #10801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:51 v #10802 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:51 v #10803 > > │ ### value_parser_possible_values │ 00:07:51 v #10804 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:51 v #10805 > > 00:07:51 v #10806 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:51 v #10807 > > inl value_parser_possible_values (values : array_base string) : value_parser = 00:07:51 v #10808 > > inl values = 00:07:51 v #10809 > > values 00:07:51 v #10810 > > |> am'.to_vec 00:07:51 v #10811 > > |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >> 00:07:51 v #10812 > > new_possible_value) 00:07:51 v #10813 > > !\\(values, 00:07:51 v #10814 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser: 00:07:51 v #10815 > > :new($0))"') 00:07:52 v #10816 > > 00:07:52 v #10817 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:52 v #10818 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:52 v #10819 > > │ ### arg_union │ 00:07:52 v #10820 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:52 v #10821 > > 00:07:52 v #10822 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:52 v #10823 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg = 00:07:52 v #10824 > > arg 00:07:52 v #10825 > > |> arg_value_parser ( 00:07:52 v #10826 > > real reflection.get_union_fields_untag `union_type () 00:07:52 v #10827 > > |> fun x => x : _ (string * union_type) 00:07:52 v #10828 > > |> listm.map fst 00:07:52 v #10829 > > |> listm'.box 00:07:52 v #10830 > > |> listm'.to_array' 00:07:52 v #10831 > > |> value_parser_possible_values 00:07:52 v #10832 > > ) 00:07:52 v #10833 > > 00:07:52 v #10834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:52 v #10835 > > //// test 00:07:52 v #10836 > > ///! rust -d clap 00:07:52 v #10837 > > 00:07:52 v #10838 > > ##"command" 00:07:52 v #10839 > > |> new_command 00:07:52 v #10840 > > |> command_init_arg ("trace-level", 't') ( 00:07:52 v #10841 > > real arg_union `trace_level ignore 00:07:52 v #10842 > > ) 00:07:52 v #10843 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]] 00:07:52 v #10844 > > |> matches_get_one "trace-level" 00:07:52 v #10845 > > |> optionm'.unwrap 00:07:52 v #10846 > > |> sm'.from_std_string 00:07:52 v #10847 > > |> reflection.union_try_pick 00:07:52 v #10848 > > |> optionm.value 00:07:52 v #10849 > > |> _assert_eq Critical 00:07:55 v #10850 > > 00:07:55 v #10851 > > ╭─[ 2.89s - return value ]─────────────────────────────────────────────────────╮ 00:07:55 v #10852 > > │ __assert_eq / actual: US1_4 / expected: US1_4 │ 00:07:55 v #10853 > > │ │ 00:07:55 v #10854 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:55 v #10855 > > 00:07:55 v #10856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:55 v #10857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:55 v #10858 > > │ ### command_debug_assert │ 00:07:55 v #10859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:55 v #10860 > > 00:07:55 v #10861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:55 v #10862 > > inl command_debug_assert (command : command) : () = 00:07:55 v #10863 > > !\\(command, $'"clap::Command::debug_assert($0)"') 00:07:55 v #10864 > > 00:07:55 v #10865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:55 v #10866 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:55 v #10867 > > │ ## fsharp │ 00:07:55 v #10868 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:55 v #10869 > > 00:07:55 v #10870 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:55 v #10871 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:55 v #10872 > > │ ### process │ 00:07:55 v #10873 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:55 v #10874 > > 00:07:55 v #10875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:55 v #10876 > > nominal process = $'System.Diagnostics.Process' 00:07:56 v #10877 > > 00:07:56 v #10878 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:56 v #10879 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:56 v #10880 > > │ ### process_start_info │ 00:07:56 v #10881 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:56 v #10882 > > 00:07:56 v #10883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:56 v #10884 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo' 00:07:56 v #10885 > > 00:07:56 v #10886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:56 v #10887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:56 v #10888 > > │ ### data_received_event_args │ 00:07:56 v #10889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:56 v #10890 > > 00:07:56 v #10891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:56 v #10892 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs' 00:07:57 v #10893 > > 00:07:57 v #10894 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:57 v #10895 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:57 v #10896 > > │ ### new_process │ 00:07:57 v #10897 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 v #10898 > > 00:07:57 v #10899 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:57 v #10900 > > inl new_process (process_start_info : process_start_info) : process = 00:07:57 v #10901 > > $'new `process (StartInfo = !process_start_info)' 00:07:57 v #10902 > > 00:07:57 v #10903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:57 v #10904 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:57 v #10905 > > │ ### process_start │ 00:07:57 v #10906 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 v #10907 > > 00:07:57 v #10908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:57 v #10909 > > inl process_start (process : process) : bool = 00:07:57 v #10910 > > $'!process.Start' () 00:07:58 v #10911 > > 00:07:58 v #10912 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:58 v #10913 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:58 v #10914 > > │ ### process_exit_code │ 00:07:58 v #10915 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:58 v #10916 > > 00:07:58 v #10917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 v #10918 > > inl process_exit_code (process : process) : i32 = 00:07:58 v #10919 > > run_target function 00:07:58 v #10920 > > | Fsharp (Native) => fun () => $'!process.ExitCode' 00:07:58 v #10921 > > | _ => fun () => null () 00:07:58 v #10922 > > 00:07:58 v #10923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:58 v #10924 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:58 v #10925 > > │ ### process_id │ 00:07:58 v #10926 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:58 v #10927 > > 00:07:58 v #10928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 v #10929 > > let process_id (process : process) : i32 = 00:07:58 v #10930 > > run_target function 00:07:58 v #10931 > > | Fsharp (Native) => fun () => process |> $'_.Id' 00:07:58 v #10932 > > | _ => fun () => null () 00:07:59 v #10933 > > 00:07:59 v #10934 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:59 v #10935 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:59 v #10936 > > │ ### process_has_exited │ 00:07:59 v #10937 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:59 v #10938 > > 00:07:59 v #10939 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:59 v #10940 > > let process_has_exited (process : process) : bool = 00:07:59 v #10941 > > run_target function 00:07:59 v #10942 > > | Fsharp (Native) => fun () => process |> $'_.HasExited' 00:07:59 v #10943 > > | _ => fun () => null () 00:07:59 v #10944 > > 00:07:59 v #10945 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:59 v #10946 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:59 v #10947 > > │ ### process_kill │ 00:07:59 v #10948 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:59 v #10949 > > 00:07:59 v #10950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:59 v #10951 > > let process_kill (process : process) : () = 00:07:59 v #10952 > > run_target function 00:07:59 v #10953 > > | Fsharp (Native) => fun () => process |> $'_.Kill()' 00:07:59 v #10954 > > | _ => fun () => () 00:07:59 v #10955 > > 00:07:59 v #10956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:59 v #10957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:59 v #10958 > > │ ### process_begin_error_read_line │ 00:07:59 v #10959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:59 v #10960 > > 00:07:59 v #10961 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:59 v #10962 > > inl process_begin_error_read_line (process : process) : () = 00:07:59 v #10963 > > process |> $'_.BeginErrorReadLine()' 00:08:00 v #10964 > > 00:08:00 v #10965 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:00 v #10966 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:00 v #10967 > > │ ### process_begin_output_read_line │ 00:08:00 v #10968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:00 v #10969 > > 00:08:00 v #10970 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:00 v #10971 > > inl process_begin_output_read_line (process : process) : () = 00:08:00 v #10972 > > process |> $'_.BeginOutputReadLine()' 00:08:00 v #10973 > > 00:08:00 v #10974 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:00 v #10975 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:00 v #10976 > > │ ### process_add_output_data_received │ 00:08:00 v #10977 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:00 v #10978 > > 00:08:00 v #10979 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:00 v #10980 > > inl process_add_output_data_received fn (process : process) : () = 00:08:00 v #10981 > > $'!process.OutputDataReceived.Add !fn ' 00:08:01 v #10982 > > 00:08:01 v #10983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:01 v #10984 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:01 v #10985 > > │ ### process_add_error_data_received │ 00:08:01 v #10986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:01 v #10987 > > 00:08:01 v #10988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:01 v #10989 > > inl process_add_error_data_received fn (process : process) : () = 00:08:01 v #10990 > > $'!process.ErrorDataReceived.Add !fn ' 00:08:01 v #10991 > > 00:08:01 v #10992 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:01 v #10993 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:01 v #10994 > > │ ### process_wait_for_exit_async │ 00:08:01 v #10995 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:01 v #10996 > > 00:08:01 v #10997 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:01 v #10998 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process : 00:08:01 v #10999 > > process) : async.task () = 00:08:01 v #11000 > > run_target function 00:08:01 v #11001 > > | Fsharp (Native) => fun () => $'!process.WaitForExitAsync !ct ' 00:08:01 v #11002 > > | _ => fun () => null () 00:08:02 v #11003 > > 00:08:02 v #11004 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:02 v #11005 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:02 v #11006 > > │ ### event_data │ 00:08:02 v #11007 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:02 v #11008 > > 00:08:02 v #11009 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:02 v #11010 > > let event_data (e : data_received_event_args) : string = 00:08:02 v #11011 > > run_target function 00:08:02 v #11012 > > | Fsharp (Native) => fun () => e |> $'_.Data' 00:08:02 v #11013 > > | _ => fun () => null () 00:08:02 v #11014 > > 00:08:02 v #11015 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:02 v #11016 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:02 v #11017 > > │ ### execute_with_options_async │ 00:08:02 v #11018 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:02 v #11019 > > 00:08:02 v #11020 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:02 v #11021 > > let execute_with_options_async (options : execution_options) : _ (int * string) 00:08:02 v #11022 > > = 00:08:02 v #11023 > > fun () => 00:08:02 v #11024 > > run_target_args (fun () => options) function 00:08:02 v #11025 > > | Fsharp (Native) => fun options => 00:08:02 v #11026 > > inl file_name, arguments = options.command |> split_command |> 00:08:02 v #11027 > > resultm.get 00:08:02 v #11028 > > inl working_directory = options.working_directory |> 00:08:02 v #11029 > > optionm'.unbox |> optionm'.default_value "" 00:08:02 v #11030 > > 00:08:02 v #11031 > > trace Debug 00:08:02 v #11032 > > fun () => "runtime.execute_with_options_async" 00:08:02 v #11033 > > fun () => { file_name arguments options } 00:08:02 v #11034 > > 00:08:02 v #11035 > > inl utf8 = sm'.encoding_utf8 () 00:08:02 v #11036 > > inl arguments = arguments |> optionm'.default_value "" 00:08:02 v #11037 > > 00:08:02 v #11038 > > $'let start_info = System.Diagnostics.ProcessStartInfo (' 00:08:02 v #11039 > > $' Arguments = !arguments,' 00:08:02 v #11040 > > $' StandardOutputEncoding = !utf8,' 00:08:02 v #11041 > > $' WorkingDirectory = !working_directory,' 00:08:02 v #11042 > > $' FileName = !file_name,' 00:08:02 v #11043 > > $' CreateNoWindow = true,' 00:08:02 v #11044 > > $' RedirectStandardError = true,' 00:08:02 v #11045 > > $' RedirectStandardOutput = true,' 00:08:02 v #11046 > > $' UseShellExecute = false' 00:08:02 v #11047 > > $')' 00:08:02 v #11048 > > inl start_info : process_start_info = $'start_info' 00:08:02 v #11049 > > 00:08:02 v #11050 > > inl environment_variables = join options.environment_variables 00:08:02 v #11051 > > (a environment_variables : _ i32 _) 00:08:02 v #11052 > > |> am.iter fun key, value => 00:08:02 v #11053 > > $'!start_info.EnvironmentVariables.[[!key]] <- !value ' 00:08:02 v #11054 > > 00:08:02 v #11055 > > inl proc = start_info |> new_process |> use 00:08:02 v #11056 > > inl output : _ string = threading.new_concurrent_stack () 00:08:02 v #11057 > > 00:08:02 v #11058 > > let event error (e : data_received_event_args) = 00:08:02 v #11059 > > fun () => 00:08:02 v #11060 > > inl data = e |> event_data 00:08:02 v #11061 > > if data <> null () then 00:08:02 v #11062 > > match options.on_line |> optionm'.unbox with 00:08:02 v #11063 > > | Some on_line => 00:08:02 v #11064 > > on_line 00:08:02 v #11065 > > { 00:08:02 v #11066 > > process_id = proc |> process_id 00:08:02 v #11067 > > line = data 00:08:02 v #11068 > > error = error 00:08:02 v #11069 > > } 00:08:02 v #11070 > > |> async.do 00:08:02 v #11071 > > | None => () 00:08:02 v #11072 > > 00:08:02 v #11073 > > inl text = 00:08:02 v #11074 > > if error 00:08:02 v #11075 > > then $'$"\! {!data}"' 00:08:02 v #11076 > > else $'$"> {!data}"' 00:08:02 v #11077 > > if options.trace 00:08:02 v #11078 > > then trace Verbose (fun () => text) id 00:08:02 v #11079 > > else text |> console.write_line 00:08:02 v #11080 > > 00:08:02 v #11081 > > inl l = if error then $'"\\u001b[[7;4m"' else "" 00:08:02 v #11082 > > inl r = if error then $'"\\u001b[[0m"' else "" 00:08:02 v #11083 > > output |> threading.concurrent_stack_push 00:08:02 v #11084 > > $'$"{!l}{!data}{!r}"' 00:08:02 v #11085 > > |> async.new_async 00:08:02 v #11086 > > 00:08:02 v #11087 > > proc |> process_add_output_data_received (event false >> 00:08:02 v #11088 > > async.start_immediate) 00:08:02 v #11089 > > proc |> process_add_error_data_received (event true >> 00:08:02 v #11090 > > async.start_immediate) 00:08:02 v #11091 > > 00:08:02 v #11092 > > if proc |> process_start |> not 00:08:02 v #11093 > > then failwith $'$"runtime.execute_with_options_async 00:08:02 v #11094 > > process_start error"' 00:08:02 v #11095 > > 00:08:02 v #11096 > > proc |> process_begin_error_read_line 00:08:02 v #11097 > > proc |> process_begin_output_read_line 00:08:02 v #11098 > > 00:08:02 v #11099 > > inl ct = 00:08:02 v #11100 > > options.cancellation_token 00:08:02 v #11101 > > |> optionm'.unbox 00:08:02 v #11102 > > |> optionm'.default_with threading.token_none 00:08:02 v #11103 > > |> async.merge_cancellation_token_with_default_async 00:08:02 v #11104 > > |> async.let' 00:08:02 v #11105 > > 00:08:02 v #11106 > > ct |> threading.token_register fun () => 00:08:02 v #11107 > > if proc |> process_has_exited |> not 00:08:02 v #11108 > > then proc |> process_kill 00:08:02 v #11109 > > |> use 00:08:02 v #11110 > > |> ignore 00:08:02 v #11111 > > 00:08:02 v #11112 > > inl exit_code : i32 = 00:08:02 v #11113 > > fun () => 00:08:02 v #11114 > > try_unit 00:08:02 v #11115 > > fun () => 00:08:02 v #11116 > > proc 00:08:02 v #11117 > > |> process_wait_for_exit_async ct 00:08:02 v #11118 > > |> async.await_task 00:08:02 v #11119 > > |> async.do 00:08:02 v #11120 > > proc |> process_exit_code |> return 00:08:02 v #11121 > > fun ex => 00:08:02 v #11122 > > // with :? 00:08:02 v #11123 > > System.Threading.Tasks.TaskCanceledException as ex => 00:08:02 v #11124 > > inl ex = ex () 00:08:02 v #11125 > > inl ex' = ex |> sm'.format_exception 00:08:02 v #11126 > > output |> threading.concurrent_stack_push ex' 00:08:02 v #11127 > > inl ex : async.task_canceled_exception = ex |> 00:08:02 v #11128 > > unbox 00:08:02 v #11129 > > trace Warning 00:08:02 v #11130 > > fun () => 00:08:02 v #11131 > > "runtime.execute_with_options_async / WaitForExitAsync" 00:08:02 v #11132 > > fun () => { ex } 00:08:02 v #11133 > > (limit.min : i32) |> return 00:08:02 v #11134 > > |> async.new_async_unit 00:08:02 v #11135 > > |> async.let' 00:08:02 v #11136 > > 00:08:02 v #11137 > > inl output = 00:08:02 v #11138 > > output 00:08:02 v #11139 > > |> seq.cast' 00:08:02 v #11140 > > |> seq.rev'' 00:08:02 v #11141 > > |> fun x => x : seq.seq' string 00:08:02 v #11142 > > |> sm'.concat "\n" 00:08:02 v #11143 > > 00:08:02 v #11144 > > trace Debug 00:08:02 v #11145 > > fun () => "runtime.execute_with_options_async" 00:08:02 v #11146 > > fun () => { exit_code output_length = output |> sm'.length : 00:08:02 v #11147 > > i32 } 00:08:02 v #11148 > > 00:08:02 v #11149 > > (exit_code, output) |> return 00:08:02 v #11150 > > | _ => fun _ => 00:08:02 v #11151 > > global "#if FABLE_COMPILER\n[[<CompilationRepresentation 00:08:02 v #11152 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module 00:08:02 v #11153 > > Diagnostics =\n type Process = unit\n type DataReceivedEventArgs = 00:08:02 v #11154 > > unit\n#endif" 00:08:02 v #11155 > > (null () : int * string) |> return 00:08:02 v #11156 > > |> async.new_async_unit 00:08:03 v #11157 > > 00:08:03 v #11158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:03 v #11159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:03 v #11160 > > │ ### execute_async │ 00:08:03 v #11161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:03 v #11162 > > 00:08:03 v #11163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:03 v #11164 > > let execute_async command = 00:08:03 v #11165 > > execution_options fun x => { x with 00:08:03 v #11166 > > command = command 00:08:03 v #11167 > > } 00:08:03 v #11168 > > |> execute_with_options_async 00:08:03 v #11169 > > 00:08:03 v #11170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:03 v #11171 > > //// test 00:08:03 v #11172 > > 00:08:03 v #11173 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:08:03 v #11174 > > fun () => 00:08:03 v #11175 > > inl file_name = "test.txt" 00:08:03 v #11176 > > inl temp_dir, disposable = 00:08:03 v #11177 > > (file_name, content) 00:08:03 v #11178 > > |> sm'.format_debug 00:08:03 v #11179 > > |> crypto.hash_text 00:08:03 v #11180 > > |> file_system.create_temp_dir' 00:08:03 v #11181 > > disposable |> use |> ignore 00:08:03 v #11182 > > 00:08:03 v #11183 > > inl path = temp_dir </> file_name 00:08:03 v #11184 > > 00:08:03 v #11185 > > inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content 00:08:03 v #11186 > > {!path}"""' |> async.let' 00:08:03 v #11187 > > exit_code |> join _assert_eq 1 00:08:03 v #11188 > > result |> _assert sm'.contains "not exist" 00:08:03 v #11189 > > 00:08:03 v #11190 > > content |> file_system.write_all_text_async path |> async.do 00:08:03 v #11191 > > 00:08:03 v #11192 > > execution_options fun x => { x with 00:08:03 v #11193 > > command = $'\@$"cat ""{!file_name}"""' 00:08:03 v #11194 > > working_directory = Some temp_dir |> optionm'.box 00:08:03 v #11195 > > } 00:08:03 v #11196 > > |> execute_with_options_async 00:08:03 v #11197 > > |> async.let' 00:08:03 v #11198 > > |> ignore 00:08:03 v #11199 > > 00:08:03 v #11200 > > execution_options fun x => { x with 00:08:03 v #11201 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:08:03 v #11202 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""' 00:08:03 v #11203 > > working_directory = Some temp_dir |> optionm'.box 00:08:03 v #11204 > > } 00:08:03 v #11205 > > |> execute_with_options_async 00:08:03 v #11206 > > |> async.return_await 00:08:03 v #11207 > > |> async.new_async_unit 00:08:03 v #11208 > > |> async.run_with_timeout 10000 00:08:03 v #11209 > > |> function 00:08:03 v #11210 > > | Some (exit_code, output) => 00:08:03 v #11211 > > exit_code |> join _assert_eq 0i32 00:08:03 v #11212 > > output |> join _assert_eq content 00:08:03 v #11213 > > true 00:08:03 v #11214 > > | _ => false 00:08:03 v #11215 > > |> _assert_eq true 00:08:15 v #11216 > > 00:08:15 v #11217 > > ╭─[ 12.00s - stdout ]──────────────────────────────────────────────────────────╮ 00:08:15 v #11218 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { file_name = pwsh; │ 00:08:15 v #11219 > > │ arguments = US2_0 │ 00:08:15 v #11220 > > │ "-c "Get-Content │ 00:08:15 v #11221 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-81 │ 00:08:15 v #11222 > > │ 3b-88ad-7791-7ce2871edce9\test.txt""; options = { command = pwsh -c │ 00:08:15 v #11223 > > │ "Get-Content │ 00:08:15 v #11224 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-81 │ 00:08:15 v #11225 > > │ 3b-88ad-7791-7ce2871edce9\test.txt"; cancellation_token = None; │ 00:08:15 v #11226 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:08:15 v #11227 > > │ working_directory = None } } │ 00:08:15 v #11228 > > │ 00:00:00 v #2 ! Get-Content: Cannot find path │ 00:08:15 v #11229 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │ 00:08:15 v #11230 > > │ 13b-88ad-7791-7ce2871edce9\test.txt' because it does not exist. │ 00:08:15 v #11231 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { exit_code = 1; │ 00:08:15 v #11232 > > │ output_length = 197 } │ 00:08:15 v #11233 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:08:15 v #11234 > > │ __assert / actual: "not exist" / expected: "Get-Content: [ │ 00:08:15 v #11235 > > │ 31;1mCannot find path │ 00:08:15 v #11236 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │ 00:08:15 v #11237 > > │ 13b-88ad-7791-7ce2871edce9\test.txt' because it does not exist." │ 00:08:15 v #11238 > > │ 00:00:00 d #4 runtime.execute_with_options_async / { file_name = cat; │ 00:08:15 v #11239 > > │ arguments = US2_0 ""test.txt""; options = { command = cat "test.txt"; │ 00:08:15 v #11240 > > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ 00:08:15 v #11241 > > │ stdin = None; trace = true; working_directory = Some │ 00:08:15 v #11242 > > │ │ 00:08:15 v #11243 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │ 00:08:15 v #11244 > > │ 13b-88ad-7791-7ce2871edce9" } } │ 00:08:15 v #11245 > > │ 00:00:00 v #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:08:15 v #11246 > > │ 00:00:00 d #6 runtime.execute_with_options_async / { exit_code = 0; │ 00:08:15 v #11247 > > │ output_length = 22 } │ 00:08:15 v #11248 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { file_name = pwsh; │ 00:08:15 v #11249 > > │ arguments = US2_0 │ 00:08:15 v #11250 > > │ "-c "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; │ 00:08:15 v #11251 > > │ Get-Content test.txt""; options = { command = pwsh -c "[ │ 00:08:15 v #11252 > > │ System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Content │ 00:08:15 v #11253 > > │ test.txt"; cancellation_token = None; environment_variables = [||]; on_line │ 00:08:15 v #11254 > > │ = None; stdin = None; trace = true; working_directory = Some │ 00:08:15 v #11255 > > │ │ 00:08:15 v #11256 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\76793606-8 │ 00:08:15 v #11257 > > │ 13b-88ad-7791-7ce2871edce9" } } │ 00:08:15 v #11258 > > │ 00:00:00 v #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:08:15 v #11259 > > │ 00:00:01 d #9 runtime.execute_with_options_async / { exit_code = 0; │ 00:08:15 v #11260 > > │ output_length = 22 } │ 00:08:15 v #11261 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:08:15 v #11262 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │ 00:08:15 v #11263 > > │ [ 你好,世界!こんにちは世界! ]─╮" │ 00:08:15 v #11264 > > │ __assert_eq / actual: true / expected: true │ 00:08:15 v #11265 > > │ │ 00:08:15 v #11266 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:15 v #11267 > > 00:08:15 v #11268 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:15 v #11269 > > //// test 00:08:15 v #11270 > > 00:08:15 v #11271 > > fun () => 00:08:15 v #11272 > > inl file_name = "test.txt" 00:08:15 v #11273 > > inl text = "0" 00:08:15 v #11274 > > 00:08:15 v #11275 > > inl temp_dir, disposable = 00:08:15 v #11276 > > (file_name, text) 00:08:15 v #11277 > > |> sm'.format_debug 00:08:15 v #11278 > > |> crypto.hash_text 00:08:15 v #11279 > > |> file_system.create_temp_dir' 00:08:15 v #11280 > > disposable |> use |> ignore 00:08:15 v #11281 > > inl path = temp_dir </> file_name 00:08:15 v #11282 > > text |> file_system.write_all_text_async path |> async.do 00:08:15 v #11283 > > 00:08:15 v #11284 > > inl cts = threading.new_cancellation_token_source () 00:08:15 v #11285 > > trace Debug (fun () => "1") id 00:08:15 v #11286 > > inl result = 00:08:15 v #11287 > > execution_options fun x => { x with 00:08:15 v #11288 > > command = $'\@$"pwsh -c ""Get-Content {!path}"""' 00:08:15 v #11289 > > cancellation_token = cts |> threading.cancellation_source_token |> 00:08:15 v #11290 > > Some |> optionm'.box 00:08:15 v #11291 > > } 00:08:15 v #11292 > > |> execute_with_options_async 00:08:15 v #11293 > > |> async.start_child 00:08:15 v #11294 > > |> async.let' 00:08:15 v #11295 > > trace Debug (fun () => "2") id 00:08:15 v #11296 > > async.sleep 100 |> async.do 00:08:15 v #11297 > > trace Debug (fun () => "3") id 00:08:15 v #11298 > > cts |> threading.cancellation_source_cancel 00:08:15 v #11299 > > trace Debug (fun () => "4") id 00:08:15 v #11300 > > inl exit_code, output = result |> async.let' 00:08:15 v #11301 > > trace Debug (fun () => "5") id 00:08:15 v #11302 > > (exit_code, output) |> return 00:08:15 v #11303 > > |> async.new_async_unit 00:08:15 v #11304 > > |> async.run_with_timeout 10000 00:08:15 v #11305 > > |> function 00:08:15 v #11306 > > | Some (exit_code, output) => 00:08:15 v #11307 > > exit_code |> _assert_eq -2147483648i32 00:08:15 v #11308 > > output |> _assert_eq (join 00:08:15 v #11309 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.") 00:08:15 v #11310 > > true 00:08:15 v #11311 > > | _ => false 00:08:15 v #11312 > > |> _assert_eq true 00:08:28 v #11313 > > 00:08:28 v #11314 > > ╭─[ 12.34s - stdout ]──────────────────────────────────────────────────────────╮ 00:08:28 v #11315 > > │ 00:00:00 d #1 1 │ 00:08:28 v #11316 > > │ 00:00:00 d #2 2 │ 00:08:28 v #11317 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { file_name = pwsh; │ 00:08:28 v #11318 > > │ arguments = US2_0 │ 00:08:28 v #11319 > > │ "-c "Get-Content │ 00:08:28 v #11320 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-01 │ 00:08:28 v #11321 > > │ 6e-d959-8d21-02dc1c63c252\test.txt""; options = { command = pwsh -c │ 00:08:28 v #11322 > > │ "Get-Content │ 00:08:28 v #11323 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-01 │ 00:08:28 v #11324 > > │ 6e-d959-8d21-02dc1c63c252\test.txt"; cancellation_token = Some │ 00:08:28 v #11325 > > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ 00:08:28 v #11326 > > │ None; stdin = None; trace = true; working_directory = None } } │ 00:08:28 v #11327 > > │ 00:00:00 d #4 3 │ 00:08:28 v #11328 > > │ 00:00:00 d #5 4 │ 00:08:28 v #11329 > > │ 00:00:00 w #6 runtime.execute_with_options_async / WaitForExitAsync / { │ 00:08:28 v #11330 > > │ ex = System.Threading.Tasks.TaskCanceledException: A task was canceled. } │ 00:08:28 v #11331 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { exit_code = │ 00:08:28 v #11332 > > │ -2147483648; output_length = 66 } │ 00:08:28 v #11333 > > │ 00:00:00 d #8 5 │ 00:08:28 v #11334 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648 │ 00:08:28 v #11335 > > │ __assert_eq / actual: "System.Threading.Tasks.TaskCanceledException: A task │ 00:08:28 v #11336 > > │ was canceled." / expected: "System.Threading.Tasks.TaskCanceledException: A │ 00:08:28 v #11337 > > │ task was canceled." │ 00:08:28 v #11338 > > │ __assert_eq / actual: true / expected: true │ 00:08:28 v #11339 > > │ │ 00:08:28 v #11340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:28 v #11341 > > 00:08:28 v #11342 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:28 v #11343 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:28 v #11344 > > │ ### current_process_kill │ 00:08:28 v #11345 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:28 v #11346 > > 00:08:28 v #11347 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:28 v #11348 > > let current_process_kill () = 00:08:28 v #11349 > > run_target function 00:08:28 v #11350 > > | Fsharp (Native) => fun () => 00:08:28 v #11351 > > inl fn () = 00:08:28 v #11352 > > run_target function 00:08:28 v #11353 > > | Fsharp (Native) => fun () => 00:08:28 v #11354 > > trace Warning (fun () => "runtime.current_process_kill 00:08:28 v #11355 > > exiting... 3") id 00:08:28 v #11356 > > $'System.Threading.Thread.Sleep 300' 00:08:28 v #11357 > > trace Warning (fun () => "runtime.current_process_kill 00:08:28 v #11358 > > exiting... 2") id 00:08:28 v #11359 > > $'System.Console.Out.Flush ()' 00:08:28 v #11360 > > $'System.Threading.Thread.Sleep 60' 00:08:28 v #11361 > > trace Warning (fun () => "runtime.current_process_kill 00:08:28 v #11362 > > exiting... 1") id 00:08:28 v #11363 > > $'System.Diagnostics.Process.GetCurrentProcess().Kill 00:08:28 v #11364 > > ()' : () 00:08:28 v #11365 > > | _ => fun () => () 00:08:28 v #11366 > > inl thread : threading.thread = $'new System.Threading.Thread (!fn)' 00:08:28 v #11367 > > thread |> $'_.Start()' : () 00:08:28 v #11368 > > | _ => fun () => () 00:08:28 v #11369 > > 00:08:28 v #11370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:28 v #11371 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:28 v #11372 > > │ ### gc_collect │ 00:08:28 v #11373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:28 v #11374 > > 00:08:28 v #11375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:28 v #11376 > > inl gc_collect () = 00:08:28 v #11377 > > run_target function 00:08:28 v #11378 > > | Fsharp _ => fun () => $'System.GC.Collect' () : () 00:08:28 v #11379 > > | Python _ => fun () => 00:08:28 v #11380 > > backend_switch { 00:08:28 v #11381 > > Python = fun () => global "import gc" 00:08:28 v #11382 > > } 00:08:28 v #11383 > > ($'gc.collect()' : int) |> ignore 00:08:28 v #11384 > > | _ => fun () => () 00:08:28 v #11385 > > 00:08:28 v #11386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:28 v #11387 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:28 v #11388 > > │ ## runtime │ 00:08:28 v #11389 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:28 v #11390 > > 00:08:28 v #11391 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:28 v #11392 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:28 v #11393 > > │ ### execute_with_options │ 00:08:28 v #11394 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:28 v #11395 > > 00:08:28 v #11396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:28 v #11397 > > let execute_with_options (options : execution_options) : i32 * string = 00:08:28 v #11398 > > run_target_args' options function 00:08:28 v #11399 > > | Fsharp (Native) => fun options => 00:08:28 v #11400 > > options |> execute_with_options_async |> async.run_synchronously 00:08:28 v #11401 > > | Rust (Native) => fun options => 00:08:28 v #11402 > > inl command = join options.command 00:08:28 v #11403 > > inl file_name, arguments = command |> split_command |> resultm.get 00:08:28 v #11404 > > inl arguments = 00:08:28 v #11405 > > arguments 00:08:28 v #11406 > > |> optionm'.default_value "" 00:08:28 v #11407 > > |> split_args 00:08:28 v #11408 > > |> resultm.get 00:08:28 v #11409 > > |> am'.to_vec 00:08:28 v #11410 > > |> am'.vec_map sm'.to_std_string 00:08:28 v #11411 > > trace Debug 00:08:28 v #11412 > > fun () => "runtime.execute_with_options" 00:08:28 v #11413 > > fun () => { file_name arguments = arguments |> sm'.format_debug; 00:08:28 v #11414 > > options } 00:08:28 v #11415 > > fun () => 00:08:28 v #11416 > > fun () => 00:08:28 v #11417 > > // inl new_command_mutex (command : rust.ref (rust.mut' 00:08:28 v #11418 > > process_command)) : threading.arc (threading.mutex process_command) = 00:08:28 v #11419 > > // () 00:08:28 v #11420 > > file_name 00:08:28 v #11421 > > |> new_process_command 00:08:28 v #11422 > > |> process_command_args arguments 00:08:28 v #11423 > > |> process_command_stdout (process_stdio_piped ()) 00:08:28 v #11424 > > |> process_command_stderr (process_stdio_piped ()) 00:08:28 v #11425 > > |> process_command_stdin (process_stdio_piped ()) 00:08:28 v #11426 > > // |> new_command_mutex 00:08:28 v #11427 > > |> fun command => 00:08:28 v #11428 > > match options.working_directory |> optionm'.unbox with 00:08:28 v #11429 > > | Some working_directory => 00:08:28 v #11430 > > command 00:08:28 v #11431 > > |> process_command_current_dir working_directory 00:08:28 v #11432 > > | None => 00:08:28 v #11433 > > !\($'$"!command"') 00:08:28 v #11434 > > // |> rust.emit 00:08:28 v #11435 > > |> fun command => 00:08:28 v #11436 > > match options.environment_variables with 00:08:28 v #11437 > > | ;[[]] => command 00:08:28 v #11438 > > | vars => 00:08:28 v #11439 > > (command, vars |> am'.to_vec) 00:08:28 v #11440 > > ||> am'.vec_fold' fun command (key, value) => 00:08:28 v #11441 > > command |> process_command_env key value 00:08:28 v #11442 > > |> process_command_spawn 00:08:28 v #11443 > > |> resultm.map_error' sm'.format' 00:08:28 v #11444 > > |> resultm.map' (optionm'.some' >> (join id) >> 00:08:28 v #11445 > > threading.new_arc_mutex) 00:08:28 v #11446 > > |> resultm.unbox' 00:08:28 v #11447 > > |> function 00:08:28 v #11448 > > | Ok child => 00:08:28 v #11449 > > inl stdout = 00:08:28 v #11450 > > fun () => 00:08:28 v #11451 > > child 00:08:28 v #11452 > > |> threading.arc_mutex_lock 00:08:28 v #11453 > > |> resultm.unwrap' 00:08:28 v #11454 > > |> threading.mutex_guard_ref_mut 00:08:28 v #11455 > > |> optionm'.as_mut 00:08:28 v #11456 > > |> optionm'.unwrap 00:08:28 v #11457 > > |> process_child_stdout 00:08:28 v #11458 > > |> optionm'.take_ref_mut 00:08:28 v #11459 > > |> optionm'.unwrap 00:08:28 v #11460 > > |> rust.capture 00:08:28 v #11461 > > inl stderr = 00:08:28 v #11462 > > fun () => 00:08:28 v #11463 > > child 00:08:28 v #11464 > > |> threading.arc_mutex_lock 00:08:28 v #11465 > > |> resultm.unwrap' 00:08:28 v #11466 > > |> threading.mutex_guard_ref_mut 00:08:28 v #11467 > > |> optionm'.as_mut 00:08:28 v #11468 > > |> optionm'.unwrap 00:08:28 v #11469 > > |> process_child_stderr 00:08:28 v #11470 > > |> optionm'.take_ref_mut 00:08:28 v #11471 > > |> optionm'.unwrap 00:08:28 v #11472 > > |> rust.capture 00:08:28 v #11473 > > inl stdin = 00:08:28 v #11474 > > fun () => 00:08:28 v #11475 > > child 00:08:28 v #11476 > > |> threading.arc_mutex_lock 00:08:28 v #11477 > > |> resultm.unwrap' 00:08:28 v #11478 > > |> threading.mutex_guard_ref_mut 00:08:28 v #11479 > > |> optionm'.as_mut 00:08:28 v #11480 > > |> optionm'.unwrap 00:08:28 v #11481 > > |> process_child_stdin 00:08:28 v #11482 > > |> optionm'.take_ref_mut 00:08:28 v #11483 > > |> optionm'.unwrap 00:08:28 v #11484 > > |> optionm'.some' 00:08:28 v #11485 > > |> join id 00:08:28 v #11486 > > |> threading.new_arc_mutex 00:08:28 v #11487 > > |> rust.capture 00:08:28 v #11488 > > inl channel_sender, channel_receiver = 00:08:28 v #11489 > > threading.new_channel () 00:08:28 v #11490 > > inl channel_sender'' = channel_sender |> (join id) 00:08:28 v #11491 > > |> threading.new_arc_mutex 00:08:28 v #11492 > > inl channel_sender' = channel_sender |> (join id) |> 00:08:28 v #11493 > > threading.new_arc_mutex 00:08:28 v #11494 > > inl channel_receiver' = channel_receiver |> (join 00:08:28 v #11495 > > id) |> threading.new_arc_mutex 00:08:28 v #11496 > > inl stdout_handle = 00:08:28 v #11497 > > fun () => 00:08:28 v #11498 > > stdout 00:08:28 v #11499 > > |> stream.decode_reader_bytes_build 00:08:28 v #11500 > > |> stream.new_buf_reader 00:08:28 v #11501 > > |> stream.buf_read_lines 00:08:28 v #11502 > > |> iter.try_for_each fun lines => 00:08:28 v #11503 > > inl channel_sender'' = channel_sender'' 00:08:28 v #11504 > > |> rust.clone 00:08:28 v #11505 > > lines 00:08:28 v #11506 > > |> stdio_line (Ok ()) options.trace 00:08:28 v #11507 > > channel_sender'' 00:08:28 v #11508 > > |> resultm.to_try 00:08:28 v #11509 > > |> threading.spawn (1, 0) 1 00:08:28 v #11510 > > inl stderr_handle = 00:08:28 v #11511 > > fun () => 00:08:28 v #11512 > > stderr 00:08:28 v #11513 > > |> stream.decode_reader_bytes_build 00:08:28 v #11514 > > |> stream.new_buf_reader 00:08:28 v #11515 > > |> stream.buf_read_lines 00:08:28 v #11516 > > |> iter.try_for_each fun lines => 00:08:28 v #11517 > > inl channel_sender' = channel_sender' |> 00:08:28 v #11518 > > rust.clone 00:08:28 v #11519 > > lines 00:08:28 v #11520 > > |> stdio_line (Error ()) options.trace 00:08:28 v #11521 > > channel_sender' 00:08:28 v #11522 > > |> resultm.to_try 00:08:28 v #11523 > > |> threading.spawn (1, 0) 1 00:08:28 v #11524 > > match options.stdin |> optionm'.unbox with 00:08:28 v #11525 > > | Some stdin' => 00:08:28 v #11526 > > stdin 00:08:28 v #11527 > > |> threading.arc_mutex_lock 00:08:28 v #11528 > > |> resultm.unwrap' 00:08:28 v #11529 > > |> threading.mutex_guard_ref_mut 00:08:28 v #11530 > > |> optionm'.take_ref_mut 00:08:28 v #11531 > > |> optionm'.map' threading.new_arc_mutex 00:08:28 v #11532 > > |> optionm'.unbox 00:08:28 v #11533 > > |> function 00:08:28 v #11534 > > | Some stdin => 00:08:28 v #11535 > > stdin |> stdin' 00:08:28 v #11536 > > stdin 00:08:28 v #11537 > > |> threading.arc_mutex_lock 00:08:28 v #11538 > > |> resultm.unwrap' 00:08:28 v #11539 > > |> stdin_flush 00:08:28 v #11540 > > | None => () 00:08:28 v #11541 > > | None => () 00:08:28 v #11542 > > inl output = 00:08:28 v #11543 > > child 00:08:28 v #11544 > > |> threading.arc_mutex_lock 00:08:28 v #11545 > > |> resultm.unwrap' 00:08:28 v #11546 > > |> threading.mutex_guard_ref_mut 00:08:28 v #11547 > > |> optionm'.take_ref_mut 00:08:28 v #11548 > > |> optionm'.unwrap 00:08:28 v #11549 > > |> child_wait_with_output 00:08:28 v #11550 > > |> resultm.map_error' sm'.format' 00:08:28 v #11551 > > [[ stdout_handle; stderr_handle ]] 00:08:28 v #11552 > > |> am'.new_vec 00:08:28 v #11553 > > |> am'.vec_for_each' (threading.join' >> 00:08:28 v #11554 > > resultm.unwrap' >> resultm.unwrap') 00:08:28 v #11555 > > match output |> resultm.unbox with 00:08:28 v #11556 > > | Ok output => 00:08:28 v #11557 > > inl exit_code = 00:08:28 v #11558 > > output 00:08:28 v #11559 > > |> process_output_status 00:08:28 v #11560 > > |> process_exit_status_code 00:08:28 v #11561 > > |> optionm'.unbox 00:08:28 v #11562 > > match exit_code with 00:08:28 v #11563 > > | Some exit_code => exit_code, None, Some 00:08:28 v #11564 > > channel_receiver' 00:08:28 v #11565 > > | None => 00:08:28 v #11566 > > -1, 00:08:28 v #11567 > > ("runtime.execute_with_options 00:08:28 v #11568 > > exit_code=None" |> sm'.to_std_string |> Some), 00:08:28 v #11569 > > Some channel_receiver' 00:08:28 v #11570 > > | Error error => 00:08:28 v #11571 > > trace Critical 00:08:28 v #11572 > > fun () => "runtime.execute_with_options 00:08:28 v #11573 > > output error" 00:08:28 v #11574 > > fun () => { error } 00:08:28 v #11575 > > -2i32, error |> Some, None 00:08:28 v #11576 > > | Error error => 00:08:28 v #11577 > > trace Critical 00:08:28 v #11578 > > fun () => "runtime.execute_with_options / child 00:08:28 v #11579 > > error" 00:08:28 v #11580 > > fun () => { error } 00:08:28 v #11581 > > -1i32, error |> Some, None 00:08:28 v #11582 > > |> function 00:08:28 v #11583 > > | exit_code, std_trace, channel_receiver => 00:08:28 v #11584 > > inl std_trace = 00:08:28 v #11585 > > channel_receiver 00:08:28 v #11586 > > |> optionm'.box 00:08:28 v #11587 > > |> optionm'.map' fun channel_receiver => 00:08:28 v #11588 > > channel_receiver 00:08:28 v #11589 > > |> threading.arc_mutex_lock 00:08:28 v #11590 > > |> resultm.unwrap' 00:08:28 v #11591 > > |> iter.iter 00:08:28 v #11592 > > |> iter_collect'' 00:08:28 v #11593 > > |> am'.vec_map sm'.from_std_string 00:08:28 v #11594 > > |> am'.from_vec 00:08:28 v #11595 > > |> fun x => x : _ i32 _ 00:08:28 v #11596 > > |> seq.of_array 00:08:28 v #11597 > > |> sm'.concat "\n" 00:08:28 v #11598 > > |> optionm'.default_value' ( 00:08:28 v #11599 > > std_trace 00:08:28 v #11600 > > |> optionm.map sm'.from_std_string 00:08:28 v #11601 > > |> optionm'.default_value "" 00:08:28 v #11602 > > ) 00:08:28 v #11603 > > trace Verbose 00:08:28 v #11604 > > fun () => "runtime.execute_with_options 00:08:28 v #11605 > > result" 00:08:28 v #11606 > > fun () => { exit_code std_trace_length = 00:08:28 v #11607 > > std_trace |> sm'.length : i32 } 00:08:28 v #11608 > > new_pair exit_code std_trace 00:08:28 v #11609 > > |> capture 00:08:28 v #11610 > > // |> async.new_future_move 00:08:28 v #11611 > > // |> async.block_on 00:08:28 v #11612 > > |> fun x => x () 00:08:28 v #11613 > > |> from_pair 00:08:28 v #11614 > > | _ => fun _ => null () 00:08:29 v #11615 > > 00:08:29 v #11616 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:29 v #11617 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:29 v #11618 > > │ #### execute │ 00:08:29 v #11619 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:29 v #11620 > > 00:08:29 v #11621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:29 v #11622 > > let execute command = 00:08:29 v #11623 > > execution_options fun x => { x with 00:08:29 v #11624 > > command = command 00:08:29 v #11625 > > } 00:08:29 v #11626 > > |> execute_with_options 00:08:29 v #11627 > > 00:08:29 v #11628 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:29 v #11629 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:29 v #11630 > > │ #### tests │ 00:08:29 v #11631 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:30 v #11632 > > 00:08:30 v #11633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:30 v #11634 > > //// test 00:08:30 v #11635 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:08:30 v #11636 > > 00:08:30 v #11637 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:08:30 v #11638 > > 00:08:30 v #11639 > > inl file_name = join "test.txt" 00:08:30 v #11640 > > inl temp_dir, disposable = 00:08:30 v #11641 > > (file_name, content) 00:08:30 v #11642 > > |> sm'.format_debug 00:08:30 v #11643 > > |> crypto.hash_text 00:08:30 v #11644 > > |> file_system.create_temp_dir' 00:08:30 v #11645 > > inl path = temp_dir </> file_name |> file_system.normalize_path 00:08:30 v #11646 > > inl exit_code, result = 00:08:30 v #11647 > > execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""' 00:08:30 v #11648 > > exit_code |> _assert_eq 1 00:08:30 v #11649 > > result |> _assert sm'.contains "not find file" 00:08:30 v #11650 > > 00:08:30 v #11651 > > content |> file_system.write_all_text path 00:08:30 v #11652 > > 00:08:30 v #11653 > > execution_options fun x => { x with 00:08:30 v #11654 > > command = $'\@$"cat ""{!file_name}"""' 00:08:30 v #11655 > > working_directory = Some temp_dir |> optionm'.box 00:08:30 v #11656 > > } 00:08:30 v #11657 > > |> execute_with_options 00:08:30 v #11658 > > |> ignore 00:08:30 v #11659 > > 00:08:30 v #11660 > > inl exit_code, output = 00:08:30 v #11661 > > execution_options fun x => { x with 00:08:30 v #11662 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:08:30 v #11663 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""' 00:08:30 v #11664 > > working_directory = Some temp_dir |> optionm'.box 00:08:30 v #11665 > > } 00:08:30 v #11666 > > |> execute_with_options 00:08:30 v #11667 > > 00:08:30 v #11668 > > exit_code |> _assert_eq 0i32 00:08:30 v #11669 > > output |> _assert_eq content 00:08:30 v #11670 > > 00:08:30 v #11671 > > disposable |> use |> ignore 00:08:43 v #11672 > > 00:08:43 v #11673 > > ╭─[ 13.34s - return value ]────────────────────────────────────────────────────╮ 00:08:43 v #11674 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:08:43 v #11675 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_b8d5bf54 │ 00:08:43 v #11676 > > │ 0d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb913\9242780b-ce0e-9155- │ 00:08:43 v #11677 > > │ 5e07-f6ee5667aa16 } │ 00:08:43 v #11678 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = pwsh; │ 00:08:43 v #11679 > > │ arguments = ["-c", "[ │ 00:08:43 v #11680 > > │ IO.File]::ReadAllText('c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/ │ 00:08:43 v #11681 > > │ spiral_builder_b8d5bf540d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb │ 00:08:43 v #11682 > > │ 913/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt')"]; options = { command = │ 00:08:43 v #11683 > > │ pwsh -c "[ │ 00:08:43 v #11684 > > │ IO.File]::ReadAllText('c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/ │ 00:08:43 v #11685 > > │ spiral_builder_b8d5bf540d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb │ 00:08:43 v #11686 > > │ 913/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt')"; cancellation_token = │ 00:08:43 v #11687 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin = │ 00:08:43 v #11688 > > │ None; trace = true; working_directory = None } } │ 00:08:43 v #11689 > > │ 00:00:00 v #3 ! MethodInvocationException: Exception calling │ 00:08:43 v #11690 > > │ "ReadAllText" with "1" argument(s): "Could not find file │ 00:08:43 v #11691 > > │ 'c:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_b8d5bf5 │ 00:08:43 v #11692 > > │ 40d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb913\9242780b-ce0e-9155 │ 00:08:43 v #11693 > > │ -5e07-f6ee5667aa16\test.txt'." │ 00:08:43 v #11694 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { exit_code = 1; │ 00:08:43 v #11695 > > │ std_trace_length = 312 } │ 00:08:43 v #11696 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:08:43 v #11697 > > │ __assert / actual: "not find file" / expected: "[ │ 00:08:43 v #11698 > > │ 31;1mMethodInvocationException: Exception calling...ions / { file_name │ 00:08:43 v #11699 > > │ = cat; arguments = ["test.txt"]; options = { command = cat "test.txt"; │ 00:08:43 v #11700 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:08:43 v #11701 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:08:43 v #11702 > > │ │ 00:08:43 v #11703 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_b8d5bf5 │ 00:08:43 v #11704 > > │ 40d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb913\9242780b-ce0e-9155 │ 00:08:43 v #11705 > > │ -5e07-f6ee5667aa16", │ 00:08:43 v #11706 > > │ ) } } │ 00:08:43 v #11707 > > │ 00:00:00 v #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:08:43 v #11708 > > │ 00:00:00 v #7 runtime.execute_with_options / result / { exit_code = 0; │ 00:08:43 v #11709 > > │ std_trace_length = 22 } │ 00:08:43 v #11710 > > │ 00:00:00 d #8 runtime.execute_with_options / { file_name = pwsh; │ 00:08:43 v #11711 > > │ arguments = ["-c", "[System.Console]::OutputEncoding = [ │ 00:08:43 v #11712 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"]; options = │ 00:08:43 v #11713 > > │ { command = pwsh -c "[System.Console]::OutputEncoding = [ │ 00:08:43 v #11714 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"; │ 00:08:43 v #11715 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:08:43 v #11716 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:08:43 v #11717 > > │ │ 00:08:43 v #11718 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_b8d5bf5 │ 00:08:43 v #11719 > > │ 40d807459689918925a0107113dca47b2e3f4509f0b7427f21bbcb913\9242780b-ce0e-9155 │ 00:08:43 v #11720 > > │ -5e07-f6ee5667aa16", │ 00:08:43 v #11721 > > │ ) } } │ 00:08:43 v #11722 > > │ 00:00:00 v #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:08:43 v #11723 > > │ 00:00:00 v #10 runtime.execute_with_options / result / { exit_code = │ 00:08:43 v #11724 > > │ 0; std_trace_length = 22 } │ 00:08:43 v #11725 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:08:43 v #11726 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │ 00:08:43 v #11727 > > │ [ 你好,世界!こんにちは世界! ]─╮" │ 00:08:43 v #11728 > > │ │ 00:08:43 v #11729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:43 v #11730 > > 00:08:43 v #11731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:43 v #11732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:43 v #11733 > > │ ### execute_retry │ 00:08:43 v #11734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:43 v #11735 > > 00:08:43 v #11736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:43 v #11737 > > let execute_retry retries options = 00:08:43 v #11738 > > fun () => 00:08:43 v #11739 > > inl exit_code, result = options |> execute_with_options 00:08:43 v #11740 > > if exit_code = 0 00:08:43 v #11741 > > then Ok (exit_code, result) 00:08:43 v #11742 > > else Error (exit_code, result) 00:08:43 v #11743 > > |> retry_fn' retries 00:08:43 v #11744 > > 00:08:43 v #11745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:43 v #11746 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:43 v #11747 > > │ ## main │ 00:08:43 v #11748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:43 v #11749 > > 00:08:43 v #11750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:43 v #11751 > > inl main () = 00:08:43 v #11752 > > init_trace_state None 00:08:43 v #11753 > > $'let current_process_kill () = !current_process_kill ()' : () 00:08:43 v #11754 > > $'let execute_async x = !execute_async x' : () 00:08:43 v #11755 > > $'let execute_with_options_async x = !execute_with_options_async x' : () 00:08:43 v #11756 > > inl execution_options fn = 00:08:43 v #11757 > > execution_options fun x => 00:08:43 v #11758 > > x 00:08:43 v #11759 > > |> heap 00:08:43 v #11760 > > |> fn 00:08:43 v #11761 > > |> fun x => !x 00:08:43 v #11762 > > $'let execution_options x = !execution_options x' : () 00:08:43 v #11763 > > inl split_args x = x |> split_args |> resultm.box 00:08:43 v #11764 > > $'let split_args x = !split_args x' : () 00:08:49 v #11765 > 00:01:52 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 124900 } 00:08:49 v #11766 > 00:01:52 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:50 v #11767 > 00:01:53 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/runtime.dib.ipynb to html 00:08:50 v #11768 > 00:01:53 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:08:50 v #11769 > 00:01:53 v #7 ! validate(nb) 00:08:51 v #11770 > 00:01:54 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:08:51 v #11771 > 00:01:54 v #9 ! return _pygments_highlight( 00:08:53 v #11772 > 00:01:56 v #10 ! [NbConvertApp] Writing 593113 bytes to c:\home\git\polyglot\lib\spiral\runtime.dib.html 00:08:53 v #11773 > 00:01:56 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:08:53 v #11774 > 00:01:56 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:08:53 v #11775 > 00:01:56 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:53 v #11776 > 00:01:56 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:08:53 v #11777 > 00:01:56 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:08:53 v #11778 > 00:01:56 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 125815 } 00:08:53 d #11779 runtime.execute_with_options_async / { exit_code = 0; output_length = 133093 } 00:08:53 d #10 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path runtime.dib --retries 3 00:08:53 d #11780 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path trace.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:53 v #11781 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) } 00:08:53 v #11782 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/trace.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/trace.dib" --output-path "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:08:55 v #11783 > > 00:08:55 v #11784 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:55 v #11785 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:55 v #11786 > > │ # trace │ 00:08:55 v #11787 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:58 v #11788 > > 00:08:58 v #11789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:58 v #11790 > > //// test 00:08:58 v #11791 > > 00:08:58 v #11792 > > open testing 00:08:59 v #11793 > > 00:08:59 v #11794 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:59 v #11795 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:59 v #11796 > > │ ## trace │ 00:08:59 v #11797 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:59 v #11798 > > 00:08:59 v #11799 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:59 v #11800 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:59 v #11801 > > │ ### trace_level │ 00:08:59 v #11802 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:59 v #11803 > > 00:08:59 v #11804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:59 v #11805 > > union trace_level = 00:08:59 v #11806 > > | Verbose 00:08:59 v #11807 > > | Debug 00:08:59 v #11808 > > | Info 00:08:59 v #11809 > > | Warning 00:08:59 v #11810 > > | Critical 00:09:00 v #11811 > > 00:09:00 v #11812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:00 v #11813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:00 v #11814 > > │ ### read_state │ 00:09:00 v #11815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 v #11816 > > 00:09:00 v #11817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:00 v #11818 > > inl read_state () = 00:09:00 v #11819 > > run_target function 00:09:00 v #11820 > > | Rust (Wasm) => fun () => 00:09:00 v #11821 > > { 00:09:00 v #11822 > > trace_level = None 00:09:00 v #11823 > > repl_start = None 00:09:00 v #11824 > > } 00:09:00 v #11825 > > | Rust (Contract) => fun () => 00:09:00 v #11826 > > { 00:09:00 v #11827 > > trace_level = None 00:09:00 v #11828 > > repl_start = 00:09:00 v #11829 > > open rust.rust_operators 00:09:00 v #11830 > > inl automation = env.get_environment_variable_comptime 00:09:00 v #11831 > > "AUTOMATION" 00:09:00 v #11832 > > if automation <>. "True" 00:09:00 v #11833 > > then None 00:09:00 v #11834 > > else 00:09:00 v #11835 > > inl timestamp : u64 = 00:09:00 v #11836 > > !\($'$"near_sdk::env::block_timestamp()"') 00:09:00 v #11837 > > timestamp |> i64 |> Some 00:09:00 v #11838 > > } 00:09:00 v #11839 > > | _ => fun () => 00:09:00 v #11840 > > join 00:09:00 v #11841 > > { 00:09:00 v #11842 > > trace_level = 00:09:00 v #11843 > > "TRACE_LEVEL" 00:09:00 v #11844 > > |> env.get_environment_variable 00:09:00 v #11845 > > |> reflection.union_try_pick 00:09:00 v #11846 > > repl_start = 00:09:00 v #11847 > > inl automation = env.get_environment_variable 00:09:00 v #11848 > > "AUTOMATION" 00:09:00 v #11849 > > if automation <>. "True" 00:09:00 v #11850 > > then None 00:09:00 v #11851 > > else 00:09:00 v #11852 > > date_time.now () 00:09:00 v #11853 > > |> date_time.ticks 00:09:00 v #11854 > > |> fun (date_time.timestamp x) => x |> convert 00:09:00 v #11855 > > |> Some 00:09:00 v #11856 > > } 00:09:00 v #11857 > > 00:09:00 v #11858 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:00 v #11859 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:00 v #11860 > > │ ### trace_state │ 00:09:00 v #11861 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 v #11862 > > 00:09:00 v #11863 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:00 v #11864 > > type trace_state = 00:09:00 v #11865 > > { 00:09:00 v #11866 > > count : mut i64 00:09:00 v #11867 > > trace_file : mut (string -> ()) 00:09:00 v #11868 > > enabled : mut bool 00:09:00 v #11869 > > acc : mut string 00:09:00 v #11870 > > level : mut trace_level 00:09:00 v #11871 > > repl_start : optionm'.option' i64 00:09:00 v #11872 > > } 00:09:00 v #11873 > > 00:09:00 v #11874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:00 v #11875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:00 v #11876 > > │ ### new_trace_state │ 00:09:00 v #11877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 v #11878 > > 00:09:00 v #11879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:00 v #11880 > > let new_trace_state trace_level' = 00:09:00 v #11881 > > inl { repl_start trace_level } = read_state () 00:09:00 v #11882 > > { 00:09:00 v #11883 > > count = mut 1i64 00:09:00 v #11884 > > trace_file = mut ignore 00:09:00 v #11885 > > enabled = mut true 00:09:00 v #11886 > > acc = mut "" 00:09:00 v #11887 > > level = trace_level |> optionm'.default_value trace_level' |> mut 00:09:00 v #11888 > > repl_start = repl_start |> optionm'.box 00:09:00 v #11889 > > } : trace_state 00:09:01 v #11890 > > 00:09:01 v #11891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:01 v #11892 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:01 v #11893 > > │ ### init_trace_state │ 00:09:01 v #11894 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:01 v #11895 > > 00:09:01 v #11896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:01 v #11897 > > inl init_trace_state trace_level : () = 00:09:01 v #11898 > > inl trace_level = trace_level |> optionm'.default_value Verbose 00:09:01 v #11899 > > backend_switch { 00:09:01 v #11900 > > Fsharp = fun () => 00:09:01 v #11901 > > backend_switch { 00:09:01 v #11902 > > Fsharp = fun () => 00:09:01 v #11903 > > global "module TraceState = let mutable trace_state = None" 00:09:01 v #11904 > > } 00:09:01 v #11905 > > fun () => 00:09:01 v #11906 > > if $'TraceState.trace_state.IsNone' then 00:09:01 v #11907 > > inl trace_state = new_trace_state trace_level |> 00:09:01 v #11908 > > optionm'.some' 00:09:01 v #11909 > > $'TraceState.trace_state <- !trace_state ' : () 00:09:01 v #11910 > > |> exec_unit 00:09:01 v #11911 > > Python = fun () => 00:09:01 v #11912 > > global "class TraceState: trace_state = None" 00:09:01 v #11913 > > $'if TraceState.trace_state is None: TraceState.trace_state = 00:09:01 v #11914 > > !new_trace_state(!trace_level)' : () 00:09:01 v #11915 > > } 00:09:01 v #11916 > > 00:09:01 v #11917 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:01 v #11918 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:01 v #11919 > > │ ### get_trace_state_or_init │ 00:09:01 v #11920 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:01 v #11921 > > 00:09:01 v #11922 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:01 v #11923 > > inl get_trace_state_or_init trace_level : trace_state = 00:09:01 v #11924 > > init_trace_state trace_level 00:09:01 v #11925 > > backend_switch { 00:09:01 v #11926 > > Fsharp = fun () => 00:09:01 v #11927 > > $'TraceState.trace_state.Value' : trace_state 00:09:01 v #11928 > > Python = fun () => 00:09:01 v #11929 > > $'TraceState.trace_state' : trace_state 00:09:01 v #11930 > > } 00:09:02 v #11931 > > 00:09:02 v #11932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:02 v #11933 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:02 v #11934 > > │ ### test_trace_level │ 00:09:02 v #11935 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:02 v #11936 > > 00:09:02 v #11937 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:02 v #11938 > > let test_trace_level level : bool = 00:09:02 v #11939 > > inl state = get_trace_state_or_init None 00:09:02 v #11940 > > inl level' = *state.level 00:09:02 v #11941 > > if *state.enabled |> not 00:09:02 v #11942 > > then false 00:09:02 v #11943 > > else 00:09:02 v #11944 > > inl level : i32 = real real_core.union_tag level 00:09:02 v #11945 > > inl level' : i32 = real real_core.union_tag level' 00:09:02 v #11946 > > level >= level' 00:09:02 v #11947 > > 00:09:02 v #11948 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:02 v #11949 > > //// test 00:09:02 v #11950 > > ///! fsharp 00:09:02 v #11951 > > ///! cuda 00:09:02 v #11952 > > ///! rust 00:09:02 v #11953 > > ///! typescript 00:09:02 v #11954 > > ///! python 00:09:02 v #11955 > > 00:09:02 v #11956 > > test_trace_level Critical |> _assert_eq true 00:09:02 v #11957 > > test_trace_level Verbose |> _assert_eq true 00:09:02 v #11958 > > 00:09:02 v #11959 > > inl level = get_trace_state_or_init None .level 00:09:02 v #11960 > > level <- Debug 00:09:02 v #11961 > > test_trace_level Verbose |> _assert_eq false 00:09:02 v #11962 > > level <- Verbose 00:09:02 v #11963 > > test_trace_level Verbose |> _assert_eq true 00:09:08 v #11964 > > 00:09:08 v #11965 > > ╭─[ 5.50s - return value ]─────────────────────────────────────────────────────╮ 00:09:08 v #11966 > > │ │ 00:09:08 v #11967 > > │ .py output (Cuda): │ 00:09:08 v #11968 > > │ __assert_eq / actual: True / expected: True │ 00:09:08 v #11969 > > │ __assert_eq / actual: True / expected: True │ 00:09:08 v #11970 > > │ __assert_eq / actual: False / expected: False │ 00:09:08 v #11971 > > │ __assert_eq / actual: True / expected: True │ 00:09:08 v #11972 > > │ │ 00:09:08 v #11973 > > │ │ 00:09:08 v #11974 > > │ .rs output: │ 00:09:08 v #11975 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11976 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11977 > > │ __assert_eq / actual: false / expected: false │ 00:09:08 v #11978 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11979 > > │ │ 00:09:08 v #11980 > > │ │ 00:09:08 v #11981 > > │ .ts output: │ 00:09:08 v #11982 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11983 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11984 > > │ __assert_eq / actual: false / expected: false │ 00:09:08 v #11985 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11986 > > │ │ 00:09:08 v #11987 > > │ │ 00:09:08 v #11988 > > │ .py output: │ 00:09:08 v #11989 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11990 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11991 > > │ __assert_eq / actual: false / expected: false │ 00:09:08 v #11992 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #11993 > > │ │ 00:09:08 v #11994 > > │ │ 00:09:08 v #11995 > > │ │ 00:09:08 v #11996 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:08 v #11997 > > 00:09:08 v #11998 > > ╭─[ 5.51s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:08 v #11999 > > │ .fsx output: │ 00:09:08 v #12000 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #12001 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #12002 > > │ __assert_eq / actual: false / expected: false │ 00:09:08 v #12003 > > │ __assert_eq / actual: true / expected: true │ 00:09:08 v #12004 > > │ │ 00:09:08 v #12005 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:08 v #12006 > > 00:09:08 v #12007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:08 v #12008 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:08 v #12009 > > │ ### trace_raw │ 00:09:08 v #12010 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:08 v #12011 > > 00:09:08 v #12012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:08 v #12013 > > inl trace_raw level fn = 00:09:08 v #12014 > > fun () => 00:09:08 v #12015 > > if level |> test_trace_level then 00:09:08 v #12016 > > inl text = fn () 00:09:08 v #12017 > > join 00:09:08 v #12018 > > inl ({ count acc } & trace_state) = get_trace_state_or_init None 00:09:08 v #12019 > > fun () => 00:09:08 v #12020 > > count <- *count + 1 00:09:08 v #12021 > > |> exec_unit 00:09:08 v #12022 > > open rust 00:09:08 v #12023 > > open rust.rust_operators 00:09:08 v #12024 > > run_target_args (fun () => text, console.write_line) function 00:09:08 v #12025 > > | Rust (Contract) => fun text, _ => 00:09:08 v #12026 > > inl new_acc = 00:09:08 v #12027 > > if *acc = "" 00:09:08 v #12028 > > then text 00:09:08 v #12029 > > elif text = "" 00:09:08 v #12030 > > then *acc 00:09:08 v #12031 > > else *acc +. "\n" +. text 00:09:08 v #12032 > > 00:09:08 v #12033 > > inl chunks = 00:09:08 v #12034 > > new_acc 00:09:08 v #12035 > > |> sm'.as_str 00:09:08 v #12036 > > |> sm'.chars 00:09:08 v #12037 > > |> rust.from_mut 00:09:08 v #12038 > > |> iter_collect 00:09:08 v #12039 > > |> am'.vec_chunks 15000 00:09:08 v #12040 > > |> am'.vec_map sm'.from_iter 00:09:08 v #12041 > > 00:09:08 v #12042 > > inl chunks_len = chunks |> am'.vec_len |> i32 00:09:08 v #12043 > > 00:09:08 v #12044 > > if text <>. "" && chunks_len <= 1 00:09:08 v #12045 > > then acc <- new_acc 00:09:08 v #12046 > > else 00:09:08 v #12047 > > acc <- "" 00:09:08 v #12048 > > chunks 00:09:08 v #12049 > > |> am'.vec_for_each''' near.log 00:09:08 v #12050 > > | Rust _ => fun text, _ => 00:09:08 v #12051 > > !\\(text, $'\@"println\!(""{}"", $0)"') 00:09:08 v #12052 > > | _ => fun text, write_line => 00:09:08 v #12053 > > text |> write_line 00:09:08 v #12054 > > text |> *trace_state.trace_file 00:09:08 v #12055 > > |> exec_unit 00:09:08 v #12056 > > 00:09:08 v #12057 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:08 v #12058 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:08 v #12059 > > │ ### trace │ 00:09:08 v #12060 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:08 v #12061 > > 00:09:08 v #12062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:08 v #12063 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) = 00:09:08 v #12064 > > fun () => 00:09:08 v #12065 > > inl trace_state = get_trace_state_or_init None 00:09:08 v #12066 > > inl time = 00:09:08 v #12067 > > join 00:09:08 v #12068 > > run_target fun target => 00:09:08 v #12069 > > match target with 00:09:08 v #12070 > > | Rust (Contract) => fun () => 00:09:08 v #12071 > > open rust.rust_operators 00:09:08 v #12072 > > open rust 00:09:08 v #12073 > > inl timestamp = near.block_timestamp () 00:09:08 v #12074 > > inl timestamp = 00:09:08 v #12075 > > match trace_state.repl_start |> optionm'.unbox with 00:09:08 v #12076 > > | Some repl_start => timestamp - u64 repl_start 00:09:08 v #12077 > > | None => timestamp 00:09:08 v #12078 > > inl timestamp_s = timestamp / 1_000_000_000 00:09:08 v #12079 > > inl s = timestamp_s % 60 00:09:08 v #12080 > > inl m = (timestamp_s / 60) % 60 00:09:08 v #12081 > > inl h = (timestamp_s / 3600) % 24 00:09:08 v #12082 > > inl str : sm'.std_string = 00:09:08 v #12083 > > !\\((h, m, s), 00:09:08 v #12084 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"') 00:09:08 v #12085 > > str |> sm'.from_std_string 00:09:08 v #12086 > > | _ => fun () => 00:09:08 v #12087 > > match trace_state.repl_start |> optionm'.unbox with 00:09:08 v #12088 > > | Some repl_start => 00:09:08 v #12089 > > inl t = 00:09:08 v #12090 > > date_time.now () 00:09:08 v #12091 > > |> date_time.ticks 00:09:08 v #12092 > > |> fun (date_time.timestamp x) => x |> convert 00:09:08 v #12093 > > |> flip (-) repl_start 00:09:08 v #12094 > > |> date_time.time_span 00:09:08 v #12095 > > date_time.date_time_milliseconds 00:09:08 v #12096 > > 1i32 1i32 1i32 00:09:08 v #12097 > > (t |> date_time.hours) 00:09:08 v #12098 > > (t |> date_time.minutes) 00:09:08 v #12099 > > (t |> date_time.seconds) 00:09:08 v #12100 > > (t |> date_time.milliseconds) 00:09:08 v #12101 > > | None => date_time.now () 00:09:08 v #12102 > > |> date_time.format ( 00:09:08 v #12103 > > backend_switch { 00:09:08 v #12104 > > Fsharp = fun () => 00:09:08 v #12105 > > match target with 00:09:08 v #12106 > > | Rust _ => join "hh:mm:ss" 00:09:08 v #12107 > > | _ => join "HH:mm:ss" 00:09:08 v #12108 > > Python = fun () => "%H:%M:%S" 00:09:08 v #12109 > > } 00:09:08 v #12110 > > ) 00:09:08 v #12111 > > inl level_str = 00:09:08 v #12112 > > join 00:09:08 v #12113 > > inl level_str = 00:09:08 v #12114 > > level 00:09:08 v #12115 > > |> reflection.union_to_string 00:09:08 v #12116 > > |> sm'.to_lower 00:09:08 v #12117 > > |> sm'.index 0i32 00:09:08 v #12118 > > |> sm'.format 00:09:08 v #12119 > > run_target function 00:09:08 v #12120 > > | Rust _ => fun () => 00:09:08 v #12121 > > open rust 00:09:08 v #12122 > > open rust.rust_operators 00:09:08 v #12123 > > inl color : rust.ref sm'.str = 00:09:08 v #12124 > > match level with 00:09:08 v #12125 > > | Verbose => 00:09:08 v #12126 > > !\($'"inline_colorization::color_bright_black"') 00:09:08 v #12127 > > | Debug => 00:09:08 v #12128 > > !\($'"inline_colorization::color_bright_blue"') 00:09:08 v #12129 > > | Info => 00:09:08 v #12130 > > !\($'"inline_colorization::color_bright_green"') 00:09:08 v #12131 > > | Warning => !\($'"inline_colorization::color_yellow"') 00:09:08 v #12132 > > | Critical => 00:09:08 v #12133 > > !\($'"inline_colorization::color_bright_red"') 00:09:08 v #12134 > > inl level_str = level_str |> sm'.as_str 00:09:08 v #12135 > > inl color_reset : rust.ref sm'.str = 00:09:08 v #12136 > > !\($'"inline_colorization::color_reset"') 00:09:08 v #12137 > > !\\((color, level_str, color_reset), 00:09:08 v #12138 > > $'$"format\!(\\\"{{}}{{}}{{}}\\\", $0, $1, $2)"') 00:09:08 v #12139 > > |> sm'.from_std_string 00:09:08 v #12140 > > | _ => fun () => 00:09:08 v #12141 > > inl color = 00:09:08 v #12142 > > match level with 00:09:08 v #12143 > > | Verbose => $'"\\u001b[[90m"' 00:09:08 v #12144 > > | Debug => $'"\\u001b[[94m"' 00:09:08 v #12145 > > | Info => $'"\\u001b[[92m"' 00:09:08 v #12146 > > | Warning => $'"\\u001b[[93m"' 00:09:08 v #12147 > > | Critical => $'"\\u001b[[91m"' 00:09:08 v #12148 > > inl color_reset = join $'"\\u001b[[0m"' 00:09:08 v #12149 > > color +. level_str +. color_reset 00:09:08 v #12150 > > inl text = text_fn () 00:09:08 v #12151 > > if text = "" 00:09:08 v #12152 > > then "" 00:09:08 v #12153 > > else 00:09:08 v #12154 > > inl locals = locals () 00:09:08 v #12155 > > join 00:09:08 v #12156 > > inl locals = locals |> sm'.format 00:09:08 v #12157 > > inl count = *trace_state.count 00:09:08 v #12158 > > backend_switch { 00:09:08 v #12159 > > Fsharp = fun () => $'$"{!time} {!level_str} #{!count} 00:09:08 v #12160 > > %s{!text} / {!locals}"' : string 00:09:08 v #12161 > > Python = fun () => $'f"{!time} {!level_str} #{!count} 00:09:08 v #12162 > > {!text} / {!locals}"' : string 00:09:08 v #12163 > > } 00:09:08 v #12164 > > |> fun x => 00:09:08 v #12165 > > join 00:09:08 v #12166 > > x 00:09:08 v #12167 > > |> sm'.trim_start [[]] 00:09:08 v #12168 > > |> sm'.trim_end [[ ' '; '/' ]] 00:09:08 v #12169 > > |> trace_raw level 00:09:09 v #12170 > > 00:09:09 v #12171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:09 v #12172 > > //// test 00:09:09 v #12173 > > ///! fsharp 00:09:09 v #12174 > > ///! cuda 00:09:09 v #12175 > > ///! rust 00:09:09 v #12176 > > ///! typescript 00:09:09 v #12177 > > ///! python 00:09:09 v #12178 > > 00:09:09 v #12179 > > trace Debug (fun () => "test1") id 00:09:09 v #12180 > > trace Debug (fun () => "test2") id 00:09:09 v #12181 > > get_trace_state_or_init None .count 00:09:09 v #12182 > > |> fun x => *x 00:09:09 v #12183 > > |> _assert_eq 3 00:09:13 v #12184 > > 00:09:13 v #12185 > > ╭─[ 4.48s - return value ]─────────────────────────────────────────────────────╮ 00:09:13 v #12186 > > │ │ 00:09:13 v #12187 > > │ .py output (Cuda): │ 00:09:13 v #12188 > > │ 00:00:00 d #1 test1 │ 00:09:13 v #12189 > > │ 00:00:00 d #2 test2 │ 00:09:13 v #12190 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:09:13 v #12191 > > │ │ 00:09:13 v #12192 > > │ │ 00:09:13 v #12193 > > │ .rs output: │ 00:09:13 v #12194 > > │ 00:00:00 d #1 test1 │ 00:09:13 v #12195 > > │ 00:00:00 d #2 test2 │ 00:09:13 v #12196 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:09:13 v #12197 > > │ │ 00:09:13 v #12198 > > │ │ 00:09:13 v #12199 > > │ .ts output: │ 00:09:13 v #12200 > > │ 00:00:00 d #1 test1 │ 00:09:13 v #12201 > > │ 00:00:00 d #2 test2 │ 00:09:13 v #12202 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:09:13 v #12203 > > │ │ 00:09:13 v #12204 > > │ │ 00:09:13 v #12205 > > │ .py output: │ 00:09:13 v #12206 > > │ 00:00:00 d #1 test1 │ 00:09:13 v #12207 > > │ 00:00:00 d #2 test2 │ 00:09:13 v #12208 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:09:13 v #12209 > > │ │ 00:09:13 v #12210 > > │ │ 00:09:13 v #12211 > > │ │ 00:09:13 v #12212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:13 v #12213 > > 00:09:13 v #12214 > > ╭─[ 4.48s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:13 v #12215 > > │ .fsx output: │ 00:09:13 v #12216 > > │ 00:00:00 d #1 test1 │ 00:09:13 v #12217 > > │ 00:00:00 d #2 test2 │ 00:09:13 v #12218 > > │ __assert_eq / actual: 3L / expected: 3L │ 00:09:13 v #12219 > > │ │ 00:09:13 v #12220 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:13 v #12221 > > 00:09:13 v #12222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:13 v #12223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:13 v #12224 > > │ ## main │ 00:09:13 v #12225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:13 v #12226 > > 00:09:13 v #12227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:13 v #12228 > > inl main () = 00:09:13 v #12229 > > init_trace_state None 00:09:13 v #12230 > > inl trace level text_fn (locals : () -> string) = trace level text_fn locals 00:09:13 v #12231 > > $'let trace x = !trace x' : () 00:09:14 v #12232 > 00:00:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21765 } 00:09:14 v #12233 > 00:00:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:15 v #12234 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/trace.dib.ipynb to html 00:09:15 v #12235 > 00:00:21 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:09:15 v #12236 > 00:00:21 v #7 ! validate(nb) 00:09:16 v #12237 > 00:00:22 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:09:16 v #12238 > 00:00:22 v #9 ! return _pygments_highlight( 00:09:16 v #12239 > 00:00:22 v #10 ! [NbConvertApp] Writing 324967 bytes to c:\home\git\polyglot\lib\spiral\trace.dib.html 00:09:16 v #12240 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:09:16 v #12241 > 00:00:23 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:09:16 v #12242 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:17 v #12243 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:09:17 v #12244 > 00:00:23 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:09:17 v #12245 > 00:00:23 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 22676 } 00:09:17 d #12246 runtime.execute_with_options_async / { exit_code = 0; output_length = 26132 } 00:09:17 d #11 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path trace.dib --retries 3 00:09:17 d #12247 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path am'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:17 v #12248 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) } 00:09:17 v #12249 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/am'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/am'.dib" --output-path "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:09:18 v #12250 > > 00:09:18 v #12251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:18 v #12252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:18 v #12253 > > │ # am' │ 00:09:18 v #12254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:21 v #12255 > > 00:09:21 v #12256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:21 v #12257 > > //// test 00:09:21 v #12258 > > 00:09:21 v #12259 > > open testing 00:09:22 v #12260 > > 00:09:22 v #12261 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:22 v #12262 > > open rust 00:09:22 v #12263 > > open rust_operators 00:09:23 v #12264 > > 00:09:23 v #12265 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:23 v #12266 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:23 v #12267 > > │ ## am' │ 00:09:23 v #12268 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:23 v #12269 > > 00:09:23 v #12270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:23 v #12271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:23 v #12272 > > │ ### length │ 00:09:23 v #12273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:23 v #12274 > > 00:09:23 v #12275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:23 v #12276 > > inl length forall dim {int} el. (a : a dim el) : dim = 00:09:23 v #12277 > > a |> length 00:09:23 v #12278 > > 00:09:23 v #12279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:23 v #12280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:23 v #12281 > > │ ### index │ 00:09:23 v #12282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:23 v #12283 > > 00:09:23 v #12284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:23 v #12285 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el = 00:09:23 v #12286 > > backend_switch { 00:09:23 v #12287 > > Fsharp = fun () => index a i 00:09:23 v #12288 > > Python = fun () => $'!a[[!i]]' : el 00:09:23 v #12289 > > } 00:09:24 v #12290 > > 00:09:24 v #12291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:24 v #12292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:24 v #12293 > > │ ### index_base │ 00:09:24 v #12294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:24 v #12295 > > 00:09:24 v #12296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:24 v #12297 > > inl index_base forall el. (i : int) (ar : array_base el) : el = 00:09:24 v #12298 > > ar |> a |> index i 00:09:24 v #12299 > > 00:09:24 v #12300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:24 v #12301 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:24 v #12302 > > │ ### base │ 00:09:24 v #12303 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:24 v #12304 > > 00:09:24 v #12305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:24 v #12306 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el = 00:09:24 v #12307 > > a 00:09:25 v #12308 > > 00:09:25 v #12309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:25 v #12310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:25 v #12311 > > │ ### base' │ 00:09:25 v #12312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:25 v #12313 > > 00:09:25 v #12314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:25 v #12315 > > inl base' forall el. ((a a) : a int el) : array_base el = 00:09:25 v #12316 > > a 00:09:25 v #12317 > > 00:09:25 v #12318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:25 v #12319 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:25 v #12320 > > │ ### generic_equable │ 00:09:25 v #12321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:25 v #12322 > > 00:09:25 v #12323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:25 v #12324 > > inl generic_equable x1 x2 = 00:09:25 v #12325 > > if length x1 <>.. length x2 00:09:25 v #12326 > > then false 00:09:25 v #12327 > > else 00:09:25 v #12328 > > let rec loop i = 00:09:25 v #12329 > > if i < length x1 00:09:25 v #12330 > > then index i x1 = index i x2 && loop (i + 1) 00:09:25 v #12331 > > else true 00:09:25 v #12332 > > loop 0 00:09:26 v #12333 > > 00:09:26 v #12334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:26 v #12335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:26 v #12336 > > │ ### equable │ 00:09:26 v #12337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:26 v #12338 > > 00:09:26 v #12339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:26 v #12340 > > instance equable a dim {number; int} t = generic_equable 00:09:26 v #12341 > > 00:09:26 v #12342 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:26 v #12343 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:26 v #12344 > > │ ### append │ 00:09:26 v #12345 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:26 v #12346 > > 00:09:26 v #12347 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:26 v #12348 > > instance append a dim {int; number} t = am.append 00:09:26 v #12349 > > 00:09:26 v #12350 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:26 v #12351 > > //// test 00:09:26 v #12352 > > ///! fsharp 00:09:26 v #12353 > > ///! cuda 00:09:26 v #12354 > > ///! rust 00:09:26 v #12355 > > ///! typescript 00:09:26 v #12356 > > ///! python 00:09:26 v #12357 > > 00:09:26 v #12358 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]] 00:09:26 v #12359 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]]) 00:09:31 v #12360 > > 00:09:31 v #12361 > > ╭─[ 5.00s - return value ]─────────────────────────────────────────────────────╮ 00:09:31 v #12362 > > │ .py output (Cuda): │ 00:09:31 v #12363 > > │ __assert_eq / actual: [-1 0 1 2] / expected: [-1 0 1 2] │ 00:09:31 v #12364 > > │ │ 00:09:31 v #12365 > > │ .rs output: │ 00:09:31 v #12366 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2])) / expected: │ 00:09:31 v #12367 > > │ Array(MutCell([-1, 0, 1, 2])) │ 00:09:31 v #12368 > > │ │ 00:09:31 v #12369 > > │ .ts output: │ 00:09:31 v #12370 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2 │ 00:09:31 v #12371 > > │ │ 00:09:31 v #12372 > > │ .py output: │ 00:09:31 v #12373 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q', [-1, 0, 1, 2]) │ 00:09:31 v #12374 > > │ │ 00:09:31 v #12375 > > │ │ 00:09:31 v #12376 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:31 v #12377 > > 00:09:31 v #12378 > > ╭─[ 5.01s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:31 v #12379 > > │ .fsx output: │ 00:09:31 v #12380 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L; 0L; 1L; 2L|] │ 00:09:31 v #12381 > > │ │ 00:09:31 v #12382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:31 v #12383 > > 00:09:31 v #12384 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:31 v #12385 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:31 v #12386 > > │ ### map_base │ 00:09:31 v #12387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:31 v #12388 > > 00:09:31 v #12389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:31 v #12390 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u = 00:09:31 v #12391 > > a x 00:09:31 v #12392 > > |> am.map fn 00:09:31 v #12393 > > |> fun (a x : _ int _) => x 00:09:32 v #12394 > > 00:09:32 v #12395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:32 v #12396 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:32 v #12397 > > │ ### collect │ 00:09:32 v #12398 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:32 v #12399 > > 00:09:32 v #12400 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:32 v #12401 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r = 00:09:32 v #12402 > > items 00:09:32 v #12403 > > |> am.map fn 00:09:32 v #12404 > > |> am.fold (++) (a ;[[]]) 00:09:32 v #12405 > > 00:09:32 v #12406 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:32 v #12407 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:32 v #12408 > > │ ### init │ 00:09:32 v #12409 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:32 v #12410 > > 00:09:32 v #12411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:32 v #12412 > > inl init n : array_base _ = 00:09:32 v #12413 > > am.init n id 00:09:32 v #12414 > > |> fun (a x : _ int _) => x 00:09:33 v #12415 > > 00:09:33 v #12416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:33 v #12417 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:33 v #12418 > > │ ### choose │ 00:09:33 v #12419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:33 v #12420 > > 00:09:33 v #12421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:33 v #12422 > > inl choose f l = 00:09:33 v #12423 > > (l, [[]]) 00:09:33 v #12424 > > ||> am.foldBack fun x acc => 00:09:33 v #12425 > > match f x with 00:09:33 v #12426 > > | Some y => y :: acc 00:09:33 v #12427 > > | None => acc 00:09:33 v #12428 > > |> listm.toArray 00:09:33 v #12429 > > 00:09:33 v #12430 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:33 v #12431 > > //// test 00:09:33 v #12432 > > ///! fsharp 00:09:33 v #12433 > > ///! cuda 00:09:33 v #12434 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match 00:09:33 v #12435 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize` 00:09:33 v #12436 > > ///! typescript 00:09:33 v #12437 > > ///! python 00:09:33 v #12438 > > 00:09:33 v #12439 > > 10 00:09:33 v #12440 > > |> init 00:09:33 v #12441 > > |> fun x => a x : _ int _ 00:09:33 v #12442 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:09:33 v #12443 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]]) 00:09:35 v #12444 > > 00:09:35 v #12445 > > ╭─[ 2.36s - return value ]─────────────────────────────────────────────────────╮ 00:09:35 v #12446 > > │ .py output (Cuda): │ 00:09:35 v #12447 > > │ __assert_eq / actual: [0 2 4 6 8] / expected: [0 2 4 6 8] │ 00:09:35 v #12448 > > │ │ 00:09:35 v #12449 > > │ .ts output: │ 00:09:35 v #12450 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8 │ 00:09:35 v #12451 > > │ │ 00:09:35 v #12452 > > │ .py output: │ 00:09:35 v #12453 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l', [0, 2, 4, 6, │ 00:09:35 v #12454 > > │ 8]) │ 00:09:35 v #12455 > > │ │ 00:09:35 v #12456 > > │ │ 00:09:35 v #12457 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:35 v #12458 > > 00:09:35 v #12459 > > ╭─[ 2.36s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:35 v #12460 > > │ .fsx output: │ 00:09:35 v #12461 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2; 4; 6; 8|] │ 00:09:35 v #12462 > > │ │ 00:09:35 v #12463 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:35 v #12464 > > 00:09:35 v #12465 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:35 v #12466 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:35 v #12467 > > │ ### sum │ 00:09:35 v #12468 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:35 v #12469 > > 00:09:35 v #12470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:35 v #12471 > > inl sum a = 00:09:35 v #12472 > > a |> am.fold (+) 0 00:09:36 v #12473 > > 00:09:36 v #12474 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:36 v #12475 > > //// test 00:09:36 v #12476 > > ///! fsharp 00:09:36 v #12477 > > ///! cuda 00:09:36 v #12478 > > ///! rust 00:09:36 v #12479 > > ///! typescript 00:09:36 v #12480 > > ///! python 00:09:36 v #12481 > > 00:09:36 v #12482 > > 10 00:09:36 v #12483 > > |> init 00:09:36 v #12484 > > |> fun x => a x : _ int _ 00:09:36 v #12485 > > |> sum 00:09:36 v #12486 > > |> _assert_eq 45 00:09:40 v #12487 > > 00:09:40 v #12488 > > ╭─[ 3.82s - return value ]─────────────────────────────────────────────────────╮ 00:09:40 v #12489 > > │ .py output (Cuda): │ 00:09:40 v #12490 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:09:40 v #12491 > > │ │ 00:09:40 v #12492 > > │ .rs output: │ 00:09:40 v #12493 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:09:40 v #12494 > > │ │ 00:09:40 v #12495 > > │ .ts output: │ 00:09:40 v #12496 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:09:40 v #12497 > > │ │ 00:09:40 v #12498 > > │ .py output: │ 00:09:40 v #12499 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:09:40 v #12500 > > │ │ 00:09:40 v #12501 > > │ │ 00:09:40 v #12502 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:40 v #12503 > > 00:09:40 v #12504 > > ╭─[ 3.82s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:40 v #12505 > > │ .fsx output: │ 00:09:40 v #12506 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:09:40 v #12507 > > │ │ 00:09:40 v #12508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:40 v #12509 > > 00:09:40 v #12510 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:40 v #12511 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:40 v #12512 > > │ ### init_series │ 00:09:40 v #12513 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:40 v #12514 > > 00:09:40 v #12515 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:40 v #12516 > > inl init_series start end inc : array_base _ = 00:09:40 v #12517 > > inl total = conv ((end - start) / inc) + 1 00:09:40 v #12518 > > am.init total (conv >> (*) inc >> (+) start) 00:09:40 v #12519 > > |> fun (a x : _ int _) => x 00:09:40 v #12520 > > 00:09:40 v #12521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:40 v #12522 > > //// test 00:09:40 v #12523 > > ///! fsharp 00:09:40 v #12524 > > ///! cuda 00:09:40 v #12525 > > ///! rust 00:09:40 v #12526 > > ///! typescript 00:09:40 v #12527 > > ///! python 00:09:40 v #12528 > > 00:09:40 v #12529 > > init_series 0i32 6 2 00:09:40 v #12530 > > |> a 00:09:40 v #12531 > > |> fun x => x : _ int _ 00:09:40 v #12532 > > |> _assert_eq (a ;[[ 0i32; 2; 4; 6 ]]) 00:09:44 v #12533 > > 00:09:44 v #12534 > > ╭─[ 3.54s - return value ]─────────────────────────────────────────────────────╮ 00:09:44 v #12535 > > │ .py output (Cuda): │ 00:09:44 v #12536 > > │ __assert_eq / actual: [0 2 4 6] / expected: [0 2 4 6] │ 00:09:44 v #12537 > > │ │ 00:09:44 v #12538 > > │ .rs output: │ 00:09:44 v #12539 > > │ __assert_eq / actual: Array(MutCell([0, 2, 4, 6])) / expected: │ 00:09:44 v #12540 > > │ Array(MutCell([0, 2, 4, 6])) │ 00:09:44 v #12541 > > │ │ 00:09:44 v #12542 > > │ .ts output: │ 00:09:44 v #12543 > > │ __assert_eq / actual: 0,2,4,6 / expected: 0,2,4,6 │ 00:09:44 v #12544 > > │ │ 00:09:44 v #12545 > > │ .py output: │ 00:09:44 v #12546 > > │ __assert_eq / actual: [0, 2, 4, 6] / expected: array('l', [0, 2, 4, 6]) │ 00:09:44 v #12547 > > │ │ 00:09:44 v #12548 > > │ │ 00:09:44 v #12549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 v #12550 > > 00:09:44 v #12551 > > ╭─[ 3.55s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:44 v #12552 > > │ .fsx output: │ 00:09:44 v #12553 > > │ __assert_eq / actual: [|0; 2; 4; 6|] / expected: [|0; 2; 4; 6|] │ 00:09:44 v #12554 > > │ │ 00:09:44 v #12555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 v #12556 > > 00:09:44 v #12557 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 v #12558 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 v #12559 > > │ ### head │ 00:09:44 v #12560 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 v #12561 > > 00:09:44 v #12562 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 v #12563 > > inl head (ar : a _ _) = 00:09:44 v #12564 > > if var_is ar || length ar > 0 00:09:44 v #12565 > > then ar |> index 0 00:09:44 v #12566 > > else error_type "The length of the array should be greater than 0." 00:09:44 v #12567 > > 00:09:44 v #12568 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 v #12569 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 v #12570 > > │ ### last │ 00:09:44 v #12571 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 v #12572 > > 00:09:44 v #12573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 v #12574 > > inl last (ar : a _ _) = 00:09:44 v #12575 > > inl len = length ar 00:09:44 v #12576 > > if var_is ar || len > 0 00:09:44 v #12577 > > then ar |> index (len - 1) 00:09:44 v #12578 > > else error_type "The length of the array should be greater than 0." 00:09:45 v #12579 > > 00:09:45 v #12580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:45 v #12581 > > //// test 00:09:45 v #12582 > > ///! fsharp 00:09:45 v #12583 > > ///! cuda 00:09:45 v #12584 > > ///! rust 00:09:45 v #12585 > > ///! typescript 00:09:45 v #12586 > > ///! python 00:09:45 v #12587 > > 00:09:45 v #12588 > > 10 00:09:45 v #12589 > > |> init 00:09:45 v #12590 > > |> fun x => a x : _ int _ 00:09:45 v #12591 > > |> last 00:09:45 v #12592 > > |> _assert_eq 9 00:09:48 v #12593 > > 00:09:48 v #12594 > > ╭─[ 3.40s - return value ]─────────────────────────────────────────────────────╮ 00:09:48 v #12595 > > │ .py output (Cuda): │ 00:09:48 v #12596 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:09:48 v #12597 > > │ │ 00:09:48 v #12598 > > │ .rs output: │ 00:09:48 v #12599 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:09:48 v #12600 > > │ │ 00:09:48 v #12601 > > │ .ts output: │ 00:09:48 v #12602 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:09:48 v #12603 > > │ │ 00:09:48 v #12604 > > │ .py output: │ 00:09:48 v #12605 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:09:48 v #12606 > > │ │ 00:09:48 v #12607 > > │ │ 00:09:48 v #12608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:48 v #12609 > > 00:09:48 v #12610 > > ╭─[ 3.40s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:48 v #12611 > > │ .fsx output: │ 00:09:48 v #12612 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:09:48 v #12613 > > │ │ 00:09:48 v #12614 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:48 v #12615 > > 00:09:48 v #12616 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:48 v #12617 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:48 v #12618 > > │ ### try_pick │ 00:09:48 v #12619 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:48 v #12620 > > 00:09:48 v #12621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:48 v #12622 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u = 00:09:48 v #12623 > > (array, None) 00:09:48 v #12624 > > ||> am.foldBack fun x acc => 00:09:48 v #12625 > > match acc with 00:09:48 v #12626 > > | Some _ => acc 00:09:48 v #12627 > > | None => x |> fn 00:09:48 v #12628 > > 00:09:48 v #12629 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:48 v #12630 > > //// test 00:09:48 v #12631 > > ///! fsharp 00:09:48 v #12632 > > ///! cuda 00:09:48 v #12633 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ => 00:09:48 v #12634 > > unreachable!(), } == 5_i32 00:09:48 v #12635 > > ///! typescript 00:09:48 v #12636 > > ///! python 00:09:48 v #12637 > > 00:09:48 v #12638 > > 10 00:09:48 v #12639 > > |> init 00:09:48 v #12640 > > |> fun x => a x : _ int _ 00:09:48 v #12641 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:09:48 v #12642 > > |> _assert_eq (Some 5i32) 00:09:51 v #12643 > > 00:09:51 v #12644 > > ╭─[ 2.09s - return value ]─────────────────────────────────────────────────────╮ 00:09:51 v #12645 > > │ .py output (Cuda): │ 00:09:51 v #12646 > > │ __assert_eq / actual: US0_0(v0=5) / expected: US0_0(v0=5) │ 00:09:51 v #12647 > > │ │ 00:09:51 v #12648 > > │ .ts output: │ 00:09:51 v #12649 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:09:51 v #12650 > > │ │ 00:09:51 v #12651 > > │ .py output: │ 00:09:51 v #12652 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:09:51 v #12653 > > │ │ 00:09:51 v #12654 > > │ │ 00:09:51 v #12655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:51 v #12656 > > 00:09:51 v #12657 > > ╭─[ 2.09s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:51 v #12658 > > │ .fsx output: │ 00:09:51 v #12659 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:09:51 v #12660 > > │ │ 00:09:51 v #12661 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:51 v #12662 > > 00:09:51 v #12663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:51 v #12664 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:51 v #12665 > > │ ### indexed │ 00:09:51 v #12666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:51 v #12667 > > 00:09:51 v #12668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:51 v #12669 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) = 00:09:51 v #12670 > > ((0, a ;[[]]), (a ar : _ int _)) 00:09:51 v #12671 > > ||> am.fold fun (i, acc) x => 00:09:51 v #12672 > > i + 1, acc ++ a ;[[i, x]] 00:09:51 v #12673 > > |> snd 00:09:51 v #12674 > > |> fun (a x : _ int _) => x 00:09:51 v #12675 > > 00:09:51 v #12676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:51 v #12677 > > //// test 00:09:51 v #12678 > > ///! fsharp 00:09:51 v #12679 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:09:51 v #12680 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:09:51 v #12681 > > ///! rust 00:09:51 v #12682 > > ///! typescript 00:09:51 v #12683 > > ///! python 00:09:51 v #12684 > > 00:09:51 v #12685 > > am.init 3i32 ((*) 2) 00:09:51 v #12686 > > |> fun (a x : _ int _) => x 00:09:51 v #12687 > > |> indexed 00:09:51 v #12688 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]] 00:09:54 v #12689 > > 00:09:54 v #12690 > > ╭─[ 2.91s - return value ]─────────────────────────────────────────────────────╮ 00:09:54 v #12691 > > │ .rs output: │ 00:09:54 v #12692 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2, 4)])) / expected: │ 00:09:54 v #12693 > > │ Array(MutCell([(0, 0), (1, 2), (2, 4)])) │ 00:09:54 v #12694 > > │ │ 00:09:54 v #12695 > > │ .ts output: │ 00:09:54 v #12696 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4 │ 00:09:54 v #12697 > > │ │ 00:09:54 v #12698 > > │ .py output: │ 00:09:54 v #12699 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected: [(0, 0), (1, 2), │ 00:09:54 v #12700 > > │ (2, 4)] │ 00:09:54 v #12701 > > │ │ 00:09:54 v #12702 > > │ │ 00:09:54 v #12703 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:54 v #12704 > > 00:09:54 v #12705 > > ╭─[ 2.91s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:54 v #12706 > > │ .fsx output: │ 00:09:54 v #12707 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct (2, 4)|] / │ 00:09:54 v #12708 > > │ expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|] │ 00:09:54 v #12709 > > │ │ 00:09:54 v #12710 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:54 v #12711 > > 00:09:54 v #12712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:54 v #12713 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:54 v #12714 > > │ ### slice │ 00:09:54 v #12715 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:54 v #12716 > > 00:09:54 v #12717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:54 v #12718 > > inl slice forall dim {int; number} el. from nearTo s : a dim el = 00:09:54 v #12719 > > am.slice { from nearTo } s 00:09:54 v #12720 > > 00:09:54 v #12721 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:54 v #12722 > > //// test 00:09:54 v #12723 > > ///! fsharp 00:09:54 v #12724 > > ///! cuda 00:09:54 v #12725 > > ///! rust 00:09:54 v #12726 > > ///! typescript 00:09:54 v #12727 > > ///! python 00:09:54 v #12728 > > 00:09:54 v #12729 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]] 00:09:54 v #12730 > > x |> slice 0 0 |> _assert_eq (a ;[[]]) 00:09:54 v #12731 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]]) 00:09:54 v #12732 > > x |> slice 1 1 |> _assert_eq (a ;[[]]) 00:09:54 v #12733 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]]) 00:09:54 v #12734 > > x |> slice 2 2 |> _assert_eq (a ;[[]]) 00:09:54 v #12735 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]]) 00:09:58 v #12736 > > 00:09:58 v #12737 > > ╭─[ 3.58s - return value ]─────────────────────────────────────────────────────╮ 00:09:58 v #12738 > > │ │ 00:09:58 v #12739 > > │ .py output (Cuda): │ 00:09:58 v #12740 > > │ __assert_eq / actual: [] / expected: [] │ 00:09:58 v #12741 > > │ __assert_eq / actual: [1] / expected: [1] │ 00:09:58 v #12742 > > │ __assert_eq / actual: [] / expected: [] │ 00:09:58 v #12743 > > │ __assert_eq / actual: [2] / expected: [2] │ 00:09:58 v #12744 > > │ __assert_eq / actual: [] / expected: [] │ 00:09:58 v #12745 > > │ __assert_eq / actual: [1 2] / expected: [1 2] │ 00:09:58 v #12746 > > │ │ 00:09:58 v #12747 > > │ │ 00:09:58 v #12748 > > │ .rs output: │ 00:09:58 v #12749 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:09:58 v #12750 > > │ __assert_eq / actual: Array(MutCell([1])) / expected: Array(MutCell([1])) │ 00:09:58 v #12751 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:09:58 v #12752 > > │ __assert_eq / actual: Array(MutCell([2])) / expected: Array(MutCell([2])) │ 00:09:58 v #12753 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:09:58 v #12754 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected: Array(MutCell([1, │ 00:09:58 v #12755 > > │ 2])) │ 00:09:58 v #12756 > > │ │ 00:09:58 v #12757 > > │ │ 00:09:58 v #12758 > > │ .ts output: │ 00:09:58 v #12759 > > │ __assert_eq / actual: / expected: │ 00:09:58 v #12760 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:58 v #12761 > > │ __assert_eq / actual: / expected: │ 00:09:58 v #12762 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:09:58 v #12763 > > │ __assert_eq / actual: / expected: │ 00:09:58 v #12764 > > │ __assert_eq / actual: 1,2 / expected: 1,2 │ 00:09:58 v #12765 > > │ │ 00:09:58 v #12766 > > │ │ 00:09:58 v #12767 > > │ .py output: │ 00:09:58 v #12768 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:09:58 v #12769 > > │ __assert_eq / actual: [1] / expected: array('l', [1]) │ 00:09:58 v #12770 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:09:58 v #12771 > > │ __assert_eq / actual: [2] / expected: array('l', [2]) │ 00:09:58 v #12772 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:09:58 v #12773 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2]) │ 00:09:58 v #12774 > > │ │ 00:09:58 v #12775 > > │ │ 00:09:58 v #12776 > > │ │ 00:09:58 v #12777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:58 v #12778 > > 00:09:58 v #12779 > > ╭─[ 3.58s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:58 v #12780 > > │ .fsx output: │ 00:09:58 v #12781 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:09:58 v #12782 > > │ __assert_eq / actual: [|1|] / expected: [|1|] │ 00:09:58 v #12783 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:09:58 v #12784 > > │ __assert_eq / actual: [|2|] / expected: [|2|] │ 00:09:58 v #12785 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:09:58 v #12786 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|] │ 00:09:58 v #12787 > > │ │ 00:09:58 v #12788 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:58 v #12789 > > 00:09:58 v #12790 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:58 v #12791 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:58 v #12792 > > │ ### range │ 00:09:58 v #12793 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:58 v #12794 > > 00:09:58 v #12795 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:58 v #12796 > > union range dim = 00:09:58 v #12797 > > | Start : dim 00:09:58 v #12798 > > | End : (() -> dim) -> dim 00:09:58 v #12799 > > 00:09:58 v #12800 > > inl range start end s = 00:09:58 v #12801 > > inl start, end = 00:09:58 v #12802 > > inl len () = 00:09:58 v #12803 > > s |> length |> conv 00:09:58 v #12804 > > match start, end with 00:09:58 v #12805 > > | Start start, End fn => 00:09:58 v #12806 > > start, fn len 00:09:58 v #12807 > > | End start_fn, End end_fn => 00:09:58 v #12808 > > start_fn len, end_fn len 00:09:58 v #12809 > > s |> slice (start |> unbox) (end |> unbox) 00:09:58 v #12810 > > 00:09:58 v #12811 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:58 v #12812 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:58 v #12813 > > │ ## rust │ 00:09:58 v #12814 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:58 v #12815 > > 00:09:58 v #12816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:58 v #12817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:58 v #12818 > > │ ### vec │ 00:09:58 v #12819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:58 v #12820 > > 00:09:58 v #12821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:58 v #12822 > > nominal vec t = 00:09:58 v #12823 > > `( 00:09:58 v #12824 > > backend_switch `(()) `({}) { 00:09:58 v #12825 > > Fsharp = 00:09:58 v #12826 > > (fun () => 00:09:58 v #12827 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:09:58 v #12828 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end" 00:09:58 v #12829 > > ) : () -> () 00:09:58 v #12830 > > } 00:09:58 v #12831 > > $'' : $'Vec<`t>' 00:09:58 v #12832 > > ) 00:09:59 v #12833 > > 00:09:59 v #12834 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:59 v #12835 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:59 v #12836 > > │ ### from_vec │ 00:09:59 v #12837 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:59 v #12838 > > 00:09:59 v #12839 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:59 v #12840 > > inl from_vec forall dim el. (vec : vec el) : a dim el = 00:09:59 v #12841 > > !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"') 00:09:59 v #12842 > > 00:09:59 v #12843 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:59 v #12844 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:59 v #12845 > > │ ### from_vec_base │ 00:09:59 v #12846 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:59 v #12847 > > 00:09:59 v #12848 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:59 v #12849 > > inl from_vec_base forall el. (vec : vec el) : array_base el = 00:09:59 v #12850 > > !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"') 00:10:00 v #12851 > > 00:10:00 v #12852 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:00 v #12853 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:00 v #12854 > > │ ### to_vec │ 00:10:00 v #12855 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:00 v #12856 > > 00:10:00 v #12857 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:00 v #12858 > > inl to_vec forall t. (ab : array_base t) : vec t = 00:10:00 v #12859 > > !\\(ab, $'"$0.to_vec()"') 00:10:00 v #12860 > > 00:10:00 v #12861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:00 v #12862 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:00 v #12863 > > │ ### to_vec' │ 00:10:00 v #12864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:00 v #12865 > > 00:10:00 v #12866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:00 v #12867 > > inl to_vec' forall (t : * -> * -> *) u v. (x : t u v) : vec u = 00:10:00 v #12868 > > !\($'$"!x.to_vec()"') 00:10:00 v #12869 > > 00:10:00 v #12870 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:00 v #12871 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:00 v #12872 > > │ ### to_vec'' │ 00:10:00 v #12873 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:00 v #12874 > > 00:10:00 v #12875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:00 v #12876 > > inl to_vec'' forall (t : * -> *) (u : * -> *) v. (x : t (u v)) : vec v = 00:10:00 v #12877 > > !\($'$"!x.to_vec()"') 00:10:01 v #12878 > > 00:10:01 v #12879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:01 v #12880 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:01 v #12881 > > │ ### to_vec''' │ 00:10:01 v #12882 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:01 v #12883 > > 00:10:01 v #12884 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:01 v #12885 > > inl to_vec''' forall t. (ab : array_base t) : vec t = 00:10:01 v #12886 > > !\\(ab, $'"to_vec($0)"') 00:10:01 v #12887 > > 00:10:01 v #12888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:01 v #12889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:01 v #12890 > > │ ### vec_push │ 00:10:01 v #12891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:01 v #12892 > > 00:10:01 v #12893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:01 v #12894 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el = 00:10:01 v #12895 > > inl el = join el 00:10:01 v #12896 > > inl vec = join vec 00:10:01 v #12897 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:01 v #12898 > > // inl vec = vec |> rust.to_mut 00:10:01 v #12899 > > (!\($'"true; !vec.push(!el)"') : bool) |> ignore 00:10:01 v #12900 > > !\($'"!vec"') 00:10:02 v #12901 > > 00:10:02 v #12902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:02 v #12903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:02 v #12904 > > │ ### vec_reverse │ 00:10:02 v #12905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:02 v #12906 > > 00:10:02 v #12907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:02 v #12908 > > inl vec_reverse forall el. (vec : vec el) : vec el = 00:10:02 v #12909 > > inl vec = join vec 00:10:02 v #12910 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:02 v #12911 > > (!\($'"true; !vec.reverse()"') : bool) |> ignore 00:10:02 v #12912 > > !\($'"!vec"') 00:10:02 v #12913 > > 00:10:02 v #12914 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:02 v #12915 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:02 v #12916 > > │ ### vec_retain │ 00:10:02 v #12917 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:02 v #12918 > > 00:10:02 v #12919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:02 v #12920 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el = 00:10:02 v #12921 > > inl vec = join vec 00:10:02 v #12922 > > inl fn = join fn 00:10:02 v #12923 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:02 v #12924 > > // inl vec = vec |> rust.to_mut 00:10:02 v #12925 > > (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore 00:10:02 v #12926 > > !\($'"!vec"') 00:10:03 v #12927 > > 00:10:03 v #12928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:03 v #12929 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:03 v #12930 > > │ ### vec_sort_by_key │ 00:10:03 v #12931 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:03 v #12932 > > 00:10:03 v #12933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:03 v #12934 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el = 00:10:03 v #12935 > > inl vec = join vec 00:10:03 v #12936 > > inl fn = join fn 00:10:03 v #12937 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:03 v #12938 > > // inl vec = vec |> rust.to_mut 00:10:03 v #12939 > > (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore 00:10:03 v #12940 > > !\($'"!vec"') 00:10:03 v #12941 > > 00:10:03 v #12942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:03 v #12943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:03 v #12944 > > │ ### vec_extend │ 00:10:03 v #12945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:03 v #12946 > > 00:10:03 v #12947 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:03 v #12948 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el = 00:10:03 v #12949 > > inl el = join el 00:10:03 v #12950 > > inl vec = join vec 00:10:03 v #12951 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:03 v #12952 > > // inl vec = vec |> rust.to_mut 00:10:03 v #12953 > > (!\($'"true; !vec.extend(!el)"') : bool) |> ignore 00:10:03 v #12954 > > !\($'"!vec"') 00:10:03 v #12955 > > 00:10:03 v #12956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:03 v #12957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:03 v #12958 > > │ ### vec_mapi │ 00:10:03 v #12959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:03 v #12960 > > 00:10:03 v #12961 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:03 v #12962 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u = 00:10:03 v #12963 > > inl fn = join fn 00:10:03 v #12964 > > inl ar = join ar 00:10:03 v #12965 > > !\($'"!ar.iter().enumerate().map(|(i, x)| 00:10:03 v #12966 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"') 00:10:04 v #12967 > > 00:10:04 v #12968 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:04 v #12969 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:04 v #12970 > > │ ### vec_map │ 00:10:04 v #12971 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:04 v #12972 > > 00:10:04 v #12973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:04 v #12974 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:10:04 v #12975 > > (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') : 00:10:04 v #12976 > > bool) |> ignore 00:10:04 v #12977 > > inl result = fn !\($'"x"') 00:10:04 v #12978 > > inl is_unit = 00:10:04 v #12979 > > real 00:10:04 v #12980 > > typecase u with 00:10:04 v #12981 > > | () => true 00:10:04 v #12982 > > | _ => false 00:10:04 v #12983 > > if is_unit 00:10:04 v #12984 > > then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore 00:10:04 v #12985 > > else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:10:04 v #12986 > > !\($'"_vec_map"') 00:10:04 v #12987 > > 00:10:04 v #12988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:04 v #12989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:04 v #12990 > > │ ### vec_map' │ 00:10:04 v #12991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:04 v #12992 > > 00:10:04 v #12993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:04 v #12994 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:10:04 v #12995 > > inl fn = fn |> rust.func1_from 00:10:04 v #12996 > > inl fn x = 00:10:04 v #12997 > > fn |> rust.func1_move x 00:10:04 v #12998 > > !\\((ar, fn), $'"$0.into_iter().map(|x| 00:10:04 v #12999 > > $1(x.clone())).collect::<Vec<_>>()"') 00:10:05 v #13000 > > 00:10:05 v #13001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:05 v #13002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:05 v #13003 > > │ ### vec_fold' │ 00:10:05 v #13004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:05 v #13005 > > 00:10:05 v #13006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:05 v #13007 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u = 00:10:05 v #13008 > > (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| { 00:10:05 v #13009 > > //"') : bool) |> ignore 00:10:05 v #13010 > > (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:05 v #13011 > > !\($'"_vec_fold_"') 00:10:05 v #13012 > > 00:10:05 v #13013 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:05 v #13014 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:05 v #13015 > > │ ### vec_for_each │ 00:10:05 v #13016 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:05 v #13017 > > 00:10:05 v #13018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:05 v #13019 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:05 v #13020 > > (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') : 00:10:05 v #13021 > > bool) |> ignore 00:10:06 v #13022 > > 00:10:06 v #13023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:06 v #13024 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:06 v #13025 > > │ ### vec_for_each' │ 00:10:06 v #13026 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:06 v #13027 > > 00:10:06 v #13028 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:06 v #13029 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:06 v #13030 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:06 v #13031 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:06 v #13032 > > (!\($'"true; }}); { //"') : bool) |> ignore 00:10:06 v #13033 > > 00:10:06 v #13034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:06 v #13035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:06 v #13036 > > │ ### vec_for_each'' │ 00:10:06 v #13037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:06 v #13038 > > 00:10:06 v #13039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:06 v #13040 > > inl vec_for_each'' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:06 v #13041 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:06 v #13042 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:06 v #13043 > > (!\($'"true; }}); //"') : bool) |> ignore 00:10:07 v #13044 > > 00:10:07 v #13045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:07 v #13046 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:07 v #13047 > > │ ### vec_for_each''' │ 00:10:07 v #13048 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:07 v #13049 > > 00:10:07 v #13050 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:07 v #13051 > > inl vec_for_each''' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:07 v #13052 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:07 v #13053 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:07 v #13054 > > (!\($'"true; }); //"') : bool) |> ignore 00:10:07 v #13055 > > 00:10:07 v #13056 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:07 v #13057 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:07 v #13058 > > │ ### vec_filter │ 00:10:07 v #13059 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:07 v #13060 > > 00:10:07 v #13061 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:07 v #13062 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t = 00:10:07 v #13063 > > inl fn = join fn 00:10:07 v #13064 > > inl ar = join ar 00:10:07 v #13065 > > !\($'"!ar.into_iter().filter(|x| 00:10:07 v #13066 > > !fn(x.clone().clone())).collect::<Vec<_>>()"') 00:10:08 v #13067 > > 00:10:08 v #13068 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:08 v #13069 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:08 v #13070 > > │ ### vec_len │ 00:10:08 v #13071 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:08 v #13072 > > 00:10:08 v #13073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:08 v #13074 > > inl vec_len forall t. (vec : vec t) : unativeint = 00:10:08 v #13075 > > !\\(vec, $'"$0.len()"') 00:10:08 v #13076 > > 00:10:08 v #13077 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:08 v #13078 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:08 v #13079 > > │ ### vec_chunks │ 00:10:08 v #13080 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:08 v #13081 > > 00:10:08 v #13082 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:08 v #13083 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) = 00:10:08 v #13084 > > !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x| 00:10:08 v #13085 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"') 00:10:08 v #13086 > > 00:10:08 v #13087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:08 v #13088 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:08 v #13089 > > │ ### slice │ 00:10:08 v #13090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:08 v #13091 > > 00:10:08 v #13092 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:08 v #13093 > > nominal slice t = 00:10:08 v #13094 > > `( 00:10:08 v #13095 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:08 v #13096 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end" 00:10:08 v #13097 > > $'' : $'Slice<`t>' 00:10:08 v #13098 > > ) 00:10:09 v #13099 > > 00:10:09 v #13100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:09 v #13101 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:09 v #13102 > > │ ### slice' │ 00:10:09 v #13103 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:09 v #13104 > > 00:10:09 v #13105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:09 v #13106 > > nominal slice' el dim = 00:10:09 v #13107 > > `( 00:10:09 v #13108 > > backend_switch `(()) `({}) { 00:10:09 v #13109 > > Fsharp = 00:10:09 v #13110 > > (fun () => 00:10:09 v #13111 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:09 v #13112 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end" 00:10:09 v #13113 > > ) : () -> () 00:10:09 v #13114 > > } 00:10:09 v #13115 > > $'' : $'Slice\'<`el>' 00:10:09 v #13116 > > ) 00:10:09 v #13117 > > 00:10:09 v #13118 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:09 v #13119 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:09 v #13120 > > │ ### slice'' │ 00:10:09 v #13121 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:09 v #13122 > > 00:10:09 v #13123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:09 v #13124 > > nominal slice'' el dim = 00:10:09 v #13125 > > `( 00:10:09 v #13126 > > backend_switch `(()) `({}) { 00:10:09 v #13127 > > Fsharp = 00:10:09 v #13128 > > (fun () => 00:10:09 v #13129 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:09 v #13130 > > Fable.Core.Emit(\"[[$0; 10]]\")>]]\n#endif\ntype Slice'_<'T> = class end" 00:10:09 v #13131 > > ) : () -> () 00:10:09 v #13132 > > } 00:10:09 v #13133 > > $'' : $'Slice\'_<`el>' 00:10:09 v #13134 > > ) 00:10:10 v #13135 > > 00:10:10 v #13136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:10 v #13137 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:10 v #13138 > > │ ### slice_singleton │ 00:10:10 v #13139 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 v #13140 > > 00:10:10 v #13141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:10 v #13142 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim = 00:10:10 v #13143 > > match x with 00:10:10 v #13144 > > | Some x => !\($'"[[!x]]"') 00:10:10 v #13145 > > | None => 00:10:10 v #13146 > > !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim 00:10:10 v #13147 > > // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) : 00:10:10 v #13148 > > slice' el 10 00:10:10 v #13149 > > // !\( : string) : slice' el i32 // !\($'"[[]]"') 00:10:10 v #13150 > > 00:10:10 v #13151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:10 v #13152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:10 v #13153 > > │ ### slice_length │ 00:10:10 v #13154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 v #13155 > > 00:10:10 v #13156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:10 v #13157 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint = 00:10:10 v #13158 > > !\($'"!x.len()"') 00:10:11 v #13159 > > 00:10:11 v #13160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:11 v #13161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:11 v #13162 > > │ ### slice_range │ 00:10:11 v #13163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:11 v #13164 > > 00:10:11 v #13165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:11 v #13166 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t 00:10:11 v #13167 > > dim) : rust.ref (slice' t dim) = 00:10:11 v #13168 > > inl len () = 00:10:11 v #13169 > > s |> slice_length 00:10:11 v #13170 > > inl start, (end : unativeint) = 00:10:11 v #13171 > > match start, end with 00:10:11 v #13172 > > | Start start, End fn => start, (len >> convert) |> fn |> convert 00:10:11 v #13173 > > | End start_fn, End end_fn => (len >> convert) |> start_fn, (len >> 00:10:11 v #13174 > > convert) |> end_fn |> convert 00:10:11 v #13175 > > match start, end with 00:10:11 v #13176 > > | start, end when unbox end =. len () => !\($'"&!s[[!start..]]"') 00:10:11 v #13177 > > | start, end => !\\((start, end), $'"&!s[[$0..$1]]"') 00:10:11 v #13178 > > 00:10:11 v #13179 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:11 v #13180 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:11 v #13181 > > │ ### new_slice │ 00:10:11 v #13182 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:11 v #13183 > > 00:10:11 v #13184 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:11 v #13185 > > inl new_slice forall el dim. (el : el) : slice' el dim = 00:10:11 v #13186 > > !\\(el, $'"[[$0; @dim]]"') 00:10:12 v #13187 > > 00:10:12 v #13188 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:12 v #13189 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:12 v #13190 > > │ ### as_slice │ 00:10:12 v #13191 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:12 v #13192 > > 00:10:12 v #13193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:12 v #13194 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) = 00:10:12 v #13195 > > inl x = x |> to_vec 00:10:12 v #13196 > > !\($'"!x.as_slice()"') 00:10:12 v #13197 > > 00:10:12 v #13198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:12 v #13199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:12 v #13200 > > │ ### slice_to_vec │ 00:10:12 v #13201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:12 v #13202 > > 00:10:12 v #13203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:12 v #13204 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t = 00:10:12 v #13205 > > !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"') 00:10:12 v #13206 > > 00:10:12 v #13207 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:12 v #13208 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:12 v #13209 > > │ ### to_le_bytes │ 00:10:12 v #13210 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:12 v #13211 > > 00:10:12 v #13212 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:12 v #13213 > > inl to_le_bytes forall t. (x : t) : slice' u8 8 = 00:10:12 v #13214 > > !\($'$"!x.to_le_bytes()"') 00:10:13 v #13215 > > 00:10:13 v #13216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:13 v #13217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:13 v #13218 > > │ ### as_bytes │ 00:10:13 v #13219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:13 v #13220 > > 00:10:13 v #13221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:13 v #13222 > > inl as_bytes forall t. (x : t) : rust.ref (slice u8) = 00:10:13 v #13223 > > !\($'$"!x.as_bytes()"') 00:10:13 v #13224 > > 00:10:13 v #13225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:13 v #13226 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:13 v #13227 > > │ ### any │ 00:10:13 v #13228 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:13 v #13229 > > 00:10:13 v #13230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:13 v #13231 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool = 00:10:13 v #13232 > > !\($'"!source.any(|x| !fn(x))"') 00:10:14 v #13233 > > 00:10:14 v #13234 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:14 v #13235 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:14 v #13236 > > │ ### iter_collect vec │ 00:10:14 v #13237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:14 v #13238 > > 00:10:14 v #13239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:14 v #13240 > > instance iter_collect vec = fun (iter : into_iterator u) => 00:10:14 v #13241 > > !\\(iter, $'"$0.collect::<Vec<_>>()"') 00:10:14 v #13242 > > 00:10:14 v #13243 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) => 00:10:14 v #13244 > > !\\(iter, $'"$0.collect::<Vec<_>>()"') 00:10:14 v #13245 > > 00:10:14 v #13246 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:14 v #13247 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:14 v #13248 > > │ ### new_vec │ 00:10:14 v #13249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:14 v #13250 > > 00:10:14 v #13251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:14 v #13252 > > inl new_vec forall t. (items : list t) : vec t = 00:10:14 v #13253 > > inl items = 00:10:14 v #13254 > > (items, ("", 0i32)) 00:10:14 v #13255 > > ||> listm.foldBack fun (x : t) (acc, i) => 00:10:14 v #13256 > > $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1 00:10:14 v #13257 > > |> fst 00:10:14 v #13258 > > !\($'"vec\![[" + !items + "]]"') 00:10:15 v #13259 > > 00:10:15 v #13260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:15 v #13261 > > //// test 00:10:15 v #13262 > > ///! rust 00:10:15 v #13263 > > 00:10:15 v #13264 > > [[ 0i32; 1 ]] 00:10:15 v #13265 > > |> new_vec 00:10:15 v #13266 > > |> sm'.format_debug' 00:10:15 v #13267 > > |> sm'.from_std_string 00:10:15 v #13268 > > |> _assert_eq "[[0, 1]]" 00:10:17 v #13269 > > 00:10:17 v #13270 > > ╭─[ 2.50s - return value ]─────────────────────────────────────────────────────╮ 00:10:17 v #13271 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]" │ 00:10:17 v #13272 > > │ │ 00:10:17 v #13273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:17 v #13274 > > 00:10:17 v #13275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:17 v #13276 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:17 v #13277 > > │ ## fsharp │ 00:10:17 v #13278 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:17 v #13279 > > 00:10:17 v #13280 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:17 v #13281 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:17 v #13282 > > │ ### average │ 00:10:17 v #13283 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:17 v #13284 > > 00:10:17 v #13285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:17 v #13286 > > inl average forall el {number}. (a : a _ el) : el = 00:10:17 v #13287 > > $'!a |> Array.average' 00:10:18 v #13288 > > 00:10:18 v #13289 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:18 v #13290 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:18 v #13291 > > │ ### distinct │ 00:10:18 v #13292 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:18 v #13293 > > 00:10:18 v #13294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:18 v #13295 > > inl distinct forall dim el. (a : a dim el) : a dim el = 00:10:18 v #13296 > > $'!a |> Array.distinct' 00:10:18 v #13297 > > 00:10:18 v #13298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:18 v #13299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:18 v #13300 > > │ ### skip │ 00:10:18 v #13301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:18 v #13302 > > 00:10:18 v #13303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:18 v #13304 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el = 00:10:18 v #13305 > > $'!a |> Array.skip !n ' 00:10:18 v #13306 > > 00:10:18 v #13307 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:18 v #13308 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:18 v #13309 > > │ ### skip_while │ 00:10:18 v #13310 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:18 v #13311 > > 00:10:18 v #13312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:18 v #13313 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el = 00:10:18 v #13314 > > $'!a |> Array.skipWhile !fn ' 00:10:19 v #13315 > > 00:10:19 v #13316 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:19 v #13317 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:19 v #13318 > > │ ### to_list_base' │ 00:10:19 v #13319 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:19 v #13320 > > 00:10:19 v #13321 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:19 v #13322 > > inl to_list_base' forall t. (items : array_base t) : listm'.list' t = 00:10:19 v #13323 > > backend_switch { 00:10:19 v #13324 > > Fsharp = fun () => $'!items |> Array.toList' : listm'.list' t 00:10:19 v #13325 > > Python = fun () => items |> to : listm'.list' t 00:10:19 v #13326 > > } 00:10:19 v #13327 > > 00:10:19 v #13328 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:19 v #13329 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:19 v #13330 > > │ ### to_list' │ 00:10:19 v #13331 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:19 v #13332 > > 00:10:19 v #13333 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:19 v #13334 > > inl to_list' forall dim {int} t. (items : a dim t) : listm'.list' t = 00:10:19 v #13335 > > items |> base |> to_list_base' 00:10:20 v #13336 > > 00:10:20 v #13337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:20 v #13338 > > //// test 00:10:20 v #13339 > > ///! fsharp 00:10:20 v #13340 > > ///! cuda 00:10:20 v #13341 > > ///! rust 00:10:20 v #13342 > > ///! typescript 00:10:20 v #13343 > > ///! python 00:10:20 v #13344 > > 00:10:20 v #13345 > > a' ;[[ -3i32; 6 ]] 00:10:20 v #13346 > > |> to_list' 00:10:20 v #13347 > > |> listm'.unbox 00:10:20 v #13348 > > |> _assert_eq [[ -3; 6 ]] 00:10:23 v #13349 > > 00:10:23 v #13350 > > ╭─[ 3.50s - return value ]─────────────────────────────────────────────────────╮ 00:10:23 v #13351 > > │ .py output (Cuda): │ 00:10:23 v #13352 > > │ __assert_eq / actual: UH0_1(v0=np.int32(-3), v1=UH0_1(v0=np.int32(6), │ 00:10:23 v #13353 > > │ v1=UH0_0())) / expected: UH0_1(v0=-3, v1=UH0_1(v0=6, v1=UH0_0())) │ 00:10:23 v #13354 > > │ │ 00:10:23 v #13355 > > │ .rs output: │ 00:10:23 v #13356 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected: UH0_1(-3, │ 00:10:23 v #13357 > > │ UH0_1(6, UH0_0)) │ 00:10:23 v #13358 > > │ │ 00:10:23 v #13359 > > │ .ts output: │ 00:10:23 v #13360 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:10:23 v #13361 > > │ UH0_1 (6, UH0_0)) │ 00:10:23 v #13362 > > │ │ 00:10:23 v #13363 > > │ .py output: │ 00:10:23 v #13364 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:10:23 v #13365 > > │ UH0_1 (6, UH0_0)) │ 00:10:23 v #13366 > > │ │ 00:10:23 v #13367 > > │ │ 00:10:23 v #13368 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:23 v #13369 > > 00:10:23 v #13370 > > ╭─[ 3.50s - stdout ]───────────────────────────────────────────────────────────╮ 00:10:23 v #13371 > > │ .fsx output: │ 00:10:23 v #13372 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:10:23 v #13373 > > │ UH0_1 (6, UH0_0)) │ 00:10:23 v #13374 > > │ │ 00:10:23 v #13375 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:23 v #13376 > > 00:10:23 v #13377 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:23 v #13378 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:23 v #13379 > > │ ### vec_collect │ 00:10:23 v #13380 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:23 v #13381 > > 00:10:23 v #13382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:23 v #13383 > > inl vec_collect fn vec = 00:10:23 v #13384 > > ((;[[]] |> to_vec), ((vec |> from_vec : _ int _) |> to_list' |> 00:10:23 v #13385 > > listm'.unbox)) 00:10:23 v #13386 > > ||> listm.fold fun acc x => 00:10:23 v #13387 > > acc |> vec_extend (fn x) 00:10:24 v #13388 > > 00:10:24 v #13389 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:24 v #13390 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:24 v #13391 > > │ ### vec_collect_option │ 00:10:24 v #13392 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:24 v #13393 > > 00:10:24 v #13394 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:24 v #13395 > > inl vec_collect_option vec = 00:10:24 v #13396 > > ((;[[]] |> to_vec |> Ok), ((vec |> from_vec : _ int _) |> am.toList)) 00:10:24 v #13397 > > ||> listm.fold fun acc x => 00:10:24 v #13398 > > x 00:10:24 v #13399 > > |> resultm.unbox 00:10:24 v #13400 > > |> fun x => 00:10:24 v #13401 > > match acc, x |> resultm.map optionm'.unbox with 00:10:24 v #13402 > > | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok 00:10:24 v #13403 > > | _, Error error => error |> Error 00:10:24 v #13404 > > | _ => acc 00:10:24 v #13405 > > 00:10:24 v #13406 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:24 v #13407 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:24 v #13408 > > │ ### vec_collect_into │ 00:10:24 v #13409 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:24 v #13410 > > 00:10:24 v #13411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:24 v #13412 > > inl vec_collect_into forall (c : * -> * -> *) t e. 00:10:24 v #13413 > > (x : vec (c t e)) 00:10:24 v #13414 > > : c (vec t) e 00:10:24 v #13415 > > = 00:10:24 v #13416 > > !\($'"!x.into_iter().collect()"') 00:10:25 v #13417 > > 00:10:25 v #13418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #13419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:25 v #13420 > > │ ### parallel_map │ 00:10:25 v #13421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:25 v #13422 > > 00:10:25 v #13423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #13424 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' 00:10:25 v #13425 > > = 00:10:25 v #13426 > > $'!a |> Array.Parallel.map !fn ' 00:10:25 v #13427 > > 00:10:25 v #13428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #13429 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:25 v #13430 > > │ ### map' │ 00:10:25 v #13431 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:25 v #13432 > > 00:10:25 v #13433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #13434 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' = 00:10:25 v #13435 > > $'!a |> Array.map !fn ' 00:10:25 v #13436 > > 00:10:25 v #13437 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #13438 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:25 v #13439 > > │ ### sort_by │ 00:10:25 v #13440 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:25 v #13441 > > 00:10:25 v #13442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #13443 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el = 00:10:25 v #13444 > > $'!a |> Array.sortBy !fn ' 00:10:26 v #13445 > > 00:10:26 v #13446 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #13447 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:26 v #13448 > > │ ### sort │ 00:10:26 v #13449 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:26 v #13450 > > 00:10:26 v #13451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #13452 > > inl sort forall dim el. (a : a dim el) : a dim el = 00:10:26 v #13453 > > $'!a |> Array.sort' 00:10:26 v #13454 > > 00:10:26 v #13455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #13456 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:26 v #13457 > > │ ### sort_descending │ 00:10:26 v #13458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:26 v #13459 > > 00:10:26 v #13460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #13461 > > inl sort_descending forall dim el. (a : a dim el) : a dim el = 00:10:26 v #13462 > > $'!a |> Array.sortDescending' 00:10:27 v #13463 > > 00:10:27 v #13464 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #13465 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:27 v #13466 > > │ ### transpose │ 00:10:27 v #13467 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:27 v #13468 > > 00:10:27 v #13469 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #13470 > > inl transpose forall el. (a : array_base (array_base el)) : array_base 00:10:27 v #13471 > > (array_base el) = 00:10:27 v #13472 > > $'!a |> Array.transpose' 00:10:27 v #13473 > > 00:10:27 v #13474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #13475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:27 v #13476 > > │ ### try_item │ 00:10:27 v #13477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:27 v #13478 > > 00:10:27 v #13479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #13480 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el = 00:10:27 v #13481 > > $'!a |> Array.tryItem !i ' |> optionm'.unbox 00:10:28 v #13482 > 00:01:11 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 64327 } 00:10:28 v #13483 > 00:01:11 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:29 v #13484 > 00:01:12 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/am'.dib.ipynb to html 00:10:29 v #13485 > 00:01:12 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:10:29 v #13486 > 00:01:12 v #7 ! validate(nb) 00:10:30 v #13487 > 00:01:13 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:10:30 v #13488 > 00:01:13 v #9 ! return _pygments_highlight( 00:10:31 v #13489 > 00:01:14 v #10 ! [NbConvertApp] Writing 455098 bytes to c:\home\git\polyglot\lib\spiral\am'.dib.html 00:10:31 v #13490 > 00:01:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 } 00:10:31 v #13491 > 00:01:14 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 } 00:10:31 v #13492 > 00:01:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:31 v #13493 > 00:01:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:10:31 v #13494 > 00:01:14 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:10:31 v #13495 > 00:01:14 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 65234 } 00:10:31 d #13496 runtime.execute_with_options_async / { exit_code = 0; output_length = 70240 } 00:10:31 d #12 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path am'.dib --retries 3 00:10:31 d #13497 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path crypto.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:31 v #13498 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) } 00:10:31 v #13499 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/crypto.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/crypto.dib" --output-path "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:10:33 v #13500 > > 00:10:33 v #13501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:33 v #13502 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:33 v #13503 > > │ # crypto │ 00:10:33 v #13504 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:36 v #13505 > > 00:10:36 v #13506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:36 v #13507 > > open rust 00:10:36 v #13508 > > open rust_operators 00:10:37 v #13509 > > 00:10:37 v #13510 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #13511 > > //// test 00:10:37 v #13512 > > 00:10:37 v #13513 > > open testing 00:10:37 v #13514 > > open file_system_operators 00:10:38 v #13515 > > 00:10:38 v #13516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:38 v #13517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:38 v #13518 > > │ ## fsharp │ 00:10:38 v #13519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:38 v #13520 > > 00:10:38 v #13521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:38 v #13522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:38 v #13523 > > │ ### sha256 │ 00:10:38 v #13524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:38 v #13525 > > 00:10:38 v #13526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:38 v #13527 > > nominal sha256 = $'System.Security.Cryptography.SHA256' 00:10:38 v #13528 > > 00:10:38 v #13529 > > inl sha256 () : sha256 = 00:10:38 v #13530 > > $'`sha256.Create' () 00:10:38 v #13531 > > 00:10:38 v #13532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:38 v #13533 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:38 v #13534 > > │ ### sha256_compute_hash │ 00:10:38 v #13535 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:38 v #13536 > > 00:10:38 v #13537 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:38 v #13538 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 = 00:10:38 v #13539 > > data |> $'!x.ComputeHash' 00:10:38 v #13540 > > 00:10:38 v #13541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:38 v #13542 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:38 v #13543 > > │ ## rust │ 00:10:38 v #13544 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:38 v #13545 > > 00:10:38 v #13546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:38 v #13547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:38 v #13548 > > │ ### get_file_hash' │ 00:10:38 v #13549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:38 v #13550 > > 00:10:38 v #13551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:38 v #13552 > > inl get_file_hash' (path : string) : result string string = 00:10:38 v #13553 > > inl path = path |> file_system.normalize_path 00:10:38 v #13554 > > inl exit_code, result = 00:10:38 v #13555 > > runtime.execution_options fun x => { x with 00:10:38 v #13556 > > command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm 00:10:38 v #13557 > > SHA256).Hash\\\""' 00:10:38 v #13558 > > } 00:10:38 v #13559 > > |> runtime.execute_with_options 00:10:38 v #13560 > > if exit_code = 0 00:10:38 v #13561 > > then result |> sm'.to_lower |> Ok 00:10:38 v #13562 > > else result |> Error 00:10:39 v #13563 > > 00:10:39 v #13564 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:39 v #13565 > > //// test 00:10:39 v #13566 > > 00:10:39 v #13567 > > inl file_name = "test.txt" 00:10:39 v #13568 > > inl text = "\n" 00:10:39 v #13569 > > 00:10:39 v #13570 > > inl temp_dir, disposable = 00:10:39 v #13571 > > (file_name, text) 00:10:39 v #13572 > > |> sm'.format_debug 00:10:39 v #13573 > > |> crypto.hash_text 00:10:39 v #13574 > > |> file_system.create_temp_dir' 00:10:39 v #13575 > > disposable |> use |> ignore 00:10:39 v #13576 > > inl path = temp_dir </> file_name 00:10:39 v #13577 > > text |> file_system.write_all_text_async path |> async.run_synchronously 00:10:39 v #13578 > > path 00:10:39 v #13579 > > |> get_file_hash' 00:10:39 v #13580 > > |> resultm.get 00:10:39 v #13581 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:10:54 v #13582 > > 00:10:54 v #13583 > > ╭─[ 15.02s - stdout ]──────────────────────────────────────────────────────────╮ 00:10:54 v #13584 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { file_name = pwsh; │ 00:10:54 v #13585 > > │ arguments = US2_0 │ 00:10:54 v #13586 > > │ "-c "(Get-FileHash │ 00:10:54 v #13587 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/dotnet-repl/9ca8b18d-e │ 00:10:54 v #13588 > > │ e77-4684-ad12-21e1354945fc/test.txt' -Algorithm SHA256).Hash""; options = { │ 00:10:54 v #13589 > > │ command = pwsh -c "(Get-FileHash │ 00:10:54 v #13590 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/dotnet-repl/9ca8b18d-e │ 00:10:54 v #13591 > > │ e77-4684-ad12-21e1354945fc/test.txt' -Algorithm SHA256).Hash"; │ 00:10:54 v #13592 > > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ 00:10:54 v #13593 > > │ stdin = None; trace = true; working_directory = None } } │ 00:10:54 v #13594 > > │ 00:00:00 v #2 > │ 00:10:54 v #13595 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B │ 00:10:54 v #13596 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { exit_code = 0; │ 00:10:54 v #13597 > > │ output_length = 64 } │ 00:10:54 v #13598 > > │ __assert_eq / actual: │ 00:10:54 v #13599 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:10:54 v #13600 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:10:54 v #13601 > > │ │ 00:10:54 v #13602 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:54 v #13603 > > 00:10:54 v #13604 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:54 v #13605 > > //// test 00:10:54 v #13606 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:10:54 v #13607 > > 00:10:54 v #13608 > > inl file_name = "test.txt" 00:10:54 v #13609 > > inl text = "\n" 00:10:54 v #13610 > > 00:10:54 v #13611 > > inl temp_dir, disposable = 00:10:54 v #13612 > > (file_name, text) 00:10:54 v #13613 > > |> sm'.format_debug 00:10:54 v #13614 > > |> crypto.hash_text 00:10:54 v #13615 > > |> file_system.create_temp_dir' 00:10:54 v #13616 > > inl path = temp_dir </> file_name 00:10:54 v #13617 > > text |> file_system.write_all_text path 00:10:54 v #13618 > > path 00:10:54 v #13619 > > |> get_file_hash' 00:10:54 v #13620 > > |> resultm.get 00:10:54 v #13621 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:10:54 v #13622 > > disposable |> use |> ignore 00:11:08 v #13623 > > 00:11:08 v #13624 > > ╭─[ 14.51s - return value ]────────────────────────────────────────────────────╮ 00:11:08 v #13625 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:11:08 v #13626 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_02a65172 │ 00:11:08 v #13627 > > │ f83d49b6b854a8ba7f3d0a3b71f6e3d7927872501959a5e5b439c268\ba0aa16a-6c5a-be3f- │ 00:11:08 v #13628 > > │ b526-70110c680e36 } │ 00:11:08 v #13629 > > │ 00:00:00 d #2 runtime.execute_with_options / { file_name = pwsh; │ 00:11:08 v #13630 > > │ arguments = ["-c", "(Get-FileHash │ 00:11:08 v #13631 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_02a6517 │ 00:11:08 v #13632 > > │ 2f83d49b6b854a8ba7f3d0a3b71f6e3d7927872501959a5e5b439c268/ba0aa16a-6c5a-be3f │ 00:11:08 v #13633 > > │ -b526-70110c680e36/test.txt' -Algorithm SHA256).Hash"]; options = { command │ 00:11:08 v #13634 > > │ = pwsh -c "(Get-FileHash │ 00:11:08 v #13635 > > │ 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_builder_02a6517 │ 00:11:08 v #13636 > > │ 2f83d49b6b854a8ba7f3d0a3b71f6e3d7927872501959a5e5b439c268/ba0aa16a-6c5a-be3f │ 00:11:08 v #13637 > > │ -b526-70110c680e36/test.txt' -Algorithm SHA256).Hash"; cancellation_token = │ 00:11:08 v #13638 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin = │ 00:11:08 v #13639 > > │ None; trace = true; working_directory = None } } │ 00:11:08 v #13640 > > │ 00:00:00 v #3 > │ 00:11:08 v #13641 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B │ 00:11:08 v #13642 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { exit_code = 0; │ 00:11:08 v #13643 > > │ std_trace_length = 64 } │ 00:11:08 v #13644 > > │ __assert_eq / actual: │ 00:11:08 v #13645 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:11:08 v #13646 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:11:08 v #13647 > > │ │ 00:11:08 v #13648 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:08 v #13649 > > 00:11:08 v #13650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:08 v #13651 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:08 v #13652 > > │ ### sha256' │ 00:11:08 v #13653 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:08 v #13654 > > 00:11:08 v #13655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:08 v #13656 > > nominal sha256' = 00:11:08 v #13657 > > `( 00:11:08 v #13658 > > backend_switch `(()) `({}) { 00:11:08 v #13659 > > Fsharp = 00:11:08 v #13660 > > (fun () => 00:11:08 v #13661 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:11:08 v #13662 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end" 00:11:08 v #13663 > > ) : () -> () 00:11:08 v #13664 > > } 00:11:08 v #13665 > > $'' : $'sha2_Sha256' 00:11:08 v #13666 > > ) 00:11:09 v #13667 > > 00:11:09 v #13668 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:09 v #13669 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:09 v #13670 > > │ ### new_sha256 │ 00:11:09 v #13671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:09 v #13672 > > 00:11:09 v #13673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:09 v #13674 > > inl new_sha256 () : sha256' = 00:11:09 v #13675 > > !\($'"let result : sha2::Sha256 = sha2::Digest::new()"') 00:11:09 v #13676 > > !\($'"result"') 00:11:09 v #13677 > > 00:11:09 v #13678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:09 v #13679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:09 v #13680 > > │ ### hasher_update │ 00:11:09 v #13681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:09 v #13682 > > 00:11:09 v #13683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:09 v #13684 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher 00:11:09 v #13685 > > : sha256') : () = 00:11:09 v #13686 > > !\($'"sha2::Digest::update(&mut !hasher, !slice)"') 00:11:10 v #13687 > > 00:11:10 v #13688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:10 v #13689 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:10 v #13690 > > │ ### hasher_finalize │ 00:11:10 v #13691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:10 v #13692 > > 00:11:10 v #13693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:10 v #13694 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) = 00:11:10 v #13695 > > !\($'"&sha2::Digest::finalize(!hasher)"') 00:11:10 v #13696 > > 00:11:10 v #13697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:10 v #13698 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:10 v #13699 > > │ ### hash_read │ 00:11:10 v #13700 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:10 v #13701 > > 00:11:10 v #13702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:10 v #13703 > > inl hash_read data : resultm.result' string stream.io_error = 00:11:10 v #13704 > > inl reader = data |> stream.new_buf_reader 00:11:10 v #13705 > > (!\($'"true; let mut !reader = !reader"') : bool) |> ignore 00:11:10 v #13706 > > inl hasher = new_sha256 () 00:11:10 v #13707 > > (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore 00:11:10 v #13708 > > 00:11:10 v #13709 > > real 00:11:10 v #13710 > > inl size = 1024 00:11:10 v #13711 > > inl zero = convert `i32 `unativeint 0 00:11:10 v #13712 > > inl buffer = am'.new_slice `u8 `@size 0u8 00:11:10 v #13713 > > 00:11:10 v #13714 > > rust.loop 2 fun () => 00:11:10 v #13715 > > inl count = stream.buf_reader_read `u8 `@size buffer reader 00:11:10 v #13716 > > inl count = resultm.unwrap' `unativeint `(stream.io_error) count 00:11:10 v #13717 > > 00:11:10 v #13718 > > if (=.) `unativeint count zero then rust.break () 00:11:10 v #13719 > > 00:11:10 v #13720 > > hasher_update `u8 `@size 00:11:10 v #13721 > > ( 00:11:10 v #13722 > > am'.slice_range `u8 `@size 00:11:10 v #13723 > > (am'.Start `unativeint zero) 00:11:10 v #13724 > > (am'.End `unativeint ((fun _ => count) : (() -> 00:11:10 v #13725 > > unativeint) -> unativeint)) 00:11:10 v #13726 > > buffer 00:11:10 v #13727 > > ) 00:11:10 v #13728 > > hasher 00:11:10 v #13729 > > 00:11:10 v #13730 > > hasher 00:11:10 v #13731 > > |> hasher_finalize 00:11:10 v #13732 > > |> am'.slice_to_vec 00:11:10 v #13733 > > |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string) 00:11:10 v #13734 > > |> am'.from_vec 00:11:10 v #13735 > > |> fun x => x : _ i32 _ 00:11:10 v #13736 > > |> seq.of_array' 00:11:10 v #13737 > > |> sm'.concat (join "") 00:11:10 v #13738 > > |> Ok 00:11:10 v #13739 > > |> resultm.box 00:11:11 v #13740 > > 00:11:11 v #13741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:11 v #13742 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:11 v #13743 > > │ ### get_file_hash │ 00:11:11 v #13744 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:11 v #13745 > > 00:11:11 v #13746 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:11 v #13747 > > inl get_file_hash (path : string) = 00:11:11 v #13748 > > inl path = path |> file_system.normalize_path 00:11:11 v #13749 > > inl file = path |> file_system.file_open |> resultm.unwrap' 00:11:11 v #13750 > > inl reader = file |> stream.new_buf_reader 00:11:11 v #13751 > > reader 00:11:11 v #13752 > > |> hash_read 00:11:11 v #13753 > > 00:11:11 v #13754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:11 v #13755 > > //// test 00:11:11 v #13756 > > ///! rust -d chrono regex sha2 00:11:11 v #13757 > > 00:11:11 v #13758 > > inl file_name = join "test.txt" 00:11:11 v #13759 > > inl text = "\n" 00:11:11 v #13760 > > 00:11:11 v #13761 > > inl temp_dir, disposable = 00:11:11 v #13762 > > (file_name, text) 00:11:11 v #13763 > > |> sm'.format_debug 00:11:11 v #13764 > > |> crypto.hash_text 00:11:11 v #13765 > > |> file_system.create_temp_dir' 00:11:11 v #13766 > > 00:11:11 v #13767 > > inl path = temp_dir </> file_name 00:11:11 v #13768 > > text |> file_system.write_all_text path 00:11:11 v #13769 > > 00:11:11 v #13770 > > path 00:11:11 v #13771 > > |> get_file_hash 00:11:11 v #13772 > > |> resultm.unwrap' 00:11:11 v #13773 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:11 v #13774 > > disposable |> use |> ignore 00:11:17 v #13775 > > 00:11:17 v #13776 > > ╭─[ 5.50s - return value ]─────────────────────────────────────────────────────╮ 00:11:17 v #13777 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:11:17 v #13778 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_65ffb703 │ 00:11:17 v #13779 > > │ 3a26abeb76e5f982c4256e8d2325510116e1734e085d3028a4ececd6\ba0aa16a-6c5a-be3f- │ 00:11:17 v #13780 > > │ b526-70110c680e36 } │ 00:11:17 v #13781 > > │ __assert_eq / actual: │ 00:11:17 v #13782 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:11:17 v #13783 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:11:17 v #13784 > > │ │ 00:11:17 v #13785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:17 v #13786 > > 00:11:17 v #13787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:17 v #13788 > > //// test 00:11:17 v #13789 > > ///! rust -d chrono regex sha2 00:11:17 v #13790 > > 00:11:17 v #13791 > > inl file_name = join "test.txt" 00:11:17 v #13792 > > inl text = "" 00:11:17 v #13793 > > 00:11:17 v #13794 > > inl temp_dir, disposable = 00:11:17 v #13795 > > (file_name, text) 00:11:17 v #13796 > > |> sm'.format_debug 00:11:17 v #13797 > > |> crypto.hash_text 00:11:17 v #13798 > > |> file_system.create_temp_dir' 00:11:17 v #13799 > > 00:11:17 v #13800 > > inl path = temp_dir </> file_name 00:11:17 v #13801 > > text |> file_system.write_all_text path 00:11:17 v #13802 > > path 00:11:17 v #13803 > > |> get_file_hash 00:11:17 v #13804 > > |> resultm.unwrap' 00:11:17 v #13805 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:11:17 v #13806 > > disposable |> use |> ignore 00:11:22 v #13807 > > 00:11:22 v #13808 > > ╭─[ 5.26s - return value ]─────────────────────────────────────────────────────╮ 00:11:22 v #13809 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:11:22 v #13810 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_64be1339 │ 00:11:22 v #13811 > > │ 8958303107e75ba01cbb427b3635fedb094f01d0b758f183a4b30287\c0e26dac-4cb1-4b09- │ 00:11:22 v #13812 > > │ be07-ff616700f056 } │ 00:11:22 v #13813 > > │ __assert_eq / actual: │ 00:11:22 v #13814 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:11:22 v #13815 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:11:22 v #13816 > > │ │ 00:11:22 v #13817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:22 v #13818 > > 00:11:22 v #13819 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:22 v #13820 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:22 v #13821 > > │ ## typescript │ 00:11:22 v #13822 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:22 v #13823 > > 00:11:22 v #13824 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:22 v #13825 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:22 v #13826 > > │ ### create_hash │ 00:11:22 v #13827 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:22 v #13828 > > 00:11:22 v #13829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:22 v #13830 > > inl create_hash (x : string) : any = 00:11:22 v #13831 > > open typescript_operators 00:11:22 v #13832 > > global "type ICryptoCreateHash = abstract createHash: x: string -> obj" 00:11:22 v #13833 > > inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto" 00:11:22 v #13834 > > !\\(x, $'"!crypto.createHash($0)"') 00:11:22 v #13835 > > 00:11:22 v #13836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:22 v #13837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:22 v #13838 > > │ ### hash_update │ 00:11:22 v #13839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:22 v #13840 > > 00:11:22 v #13841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:22 v #13842 > > inl hash_update (s : string) (x : any) : any = 00:11:22 v #13843 > > open typescript_operators 00:11:22 v #13844 > > !\\((x, s), $'"$0.update($1, \'utf8\')"') 00:11:23 v #13845 > > 00:11:23 v #13846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:23 v #13847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:23 v #13848 > > │ ### hash_digest │ 00:11:23 v #13849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:23 v #13850 > > 00:11:23 v #13851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:23 v #13852 > > inl hash_digest (s : string) (x : any) : string = 00:11:23 v #13853 > > open typescript_operators 00:11:23 v #13854 > > !\\((x, s), $'"$0.digest($1)"') 00:11:23 v #13855 > > 00:11:23 v #13856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:23 v #13857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:23 v #13858 > > │ ## python │ 00:11:23 v #13859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:23 v #13860 > > 00:11:23 v #13861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:23 v #13862 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:23 v #13863 > > │ ### py_sha256 │ 00:11:23 v #13864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:23 v #13865 > > 00:11:23 v #13866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:23 v #13867 > > nominal py_sha256 = any 00:11:24 v #13868 > > 00:11:24 v #13869 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:24 v #13870 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:24 v #13871 > > │ ### hashlib_sha256 │ 00:11:24 v #13872 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:24 v #13873 > > 00:11:24 v #13874 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:24 v #13875 > > inl hashlib_sha256 () : py_sha256 = 00:11:24 v #13876 > > backend_switch { 00:11:24 v #13877 > > Fsharp = fun () => 00:11:24 v #13878 > > open python_operators 00:11:24 v #13879 > > global "type IHashlibSha256 = abstract sha256: x: unit -> obj" 00:11:24 v #13880 > > inl hashlib : $'IHashlibSha256' = python.import_all "hashlib" 00:11:24 v #13881 > > !\($'"!hashlib.sha256()"') : py_sha256 00:11:24 v #13882 > > Python = fun () => 00:11:24 v #13883 > > global "import hashlib" 00:11:24 v #13884 > > $'hashlib.sha256()' : py_sha256 00:11:24 v #13885 > > } 00:11:24 v #13886 > > 00:11:24 v #13887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:24 v #13888 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:24 v #13889 > > │ ### sha256_update │ 00:11:24 v #13890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:24 v #13891 > > 00:11:24 v #13892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:24 v #13893 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 = 00:11:24 v #13894 > > backend_switch { 00:11:24 v #13895 > > Fsharp = fun () => 00:11:24 v #13896 > > open python_operators 00:11:24 v #13897 > > !\\(x, $'"!sha256.update($0)"') : () 00:11:24 v #13898 > > Python = fun () => 00:11:24 v #13899 > > $'!sha256.update(!x)' : () 00:11:24 v #13900 > > } 00:11:24 v #13901 > > sha256 00:11:25 v #13902 > > 00:11:25 v #13903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:25 v #13904 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:25 v #13905 > > │ ### sha256_hexdigest │ 00:11:25 v #13906 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:25 v #13907 > > 00:11:25 v #13908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:25 v #13909 > > inl sha256_hexdigest (sha256 : py_sha256) : string = 00:11:25 v #13910 > > backend_switch { 00:11:25 v #13911 > > Fsharp = fun () => 00:11:25 v #13912 > > open python_operators 00:11:25 v #13913 > > !\($'"!sha256.hexdigest()"') : string 00:11:25 v #13914 > > Python = fun () => 00:11:25 v #13915 > > $'!sha256.hexdigest()' : string 00:11:25 v #13916 > > } 00:11:25 v #13917 > > 00:11:25 v #13918 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:25 v #13919 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:25 v #13920 > > │ ## crypto │ 00:11:25 v #13921 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:25 v #13922 > > 00:11:25 v #13923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:25 v #13924 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:25 v #13925 > > │ ### hash_text │ 00:11:25 v #13926 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:25 v #13927 > > 00:11:25 v #13928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:25 v #13929 > > let hash_text (~input : string) = 00:11:25 v #13930 > > run_target function 00:11:25 v #13931 > > | Fsharp (Native) => fun () => 00:11:25 v #13932 > > inl sha256 = sha256 () |> use 00:11:25 v #13933 > > input 00:11:25 v #13934 > > |> sm'.utf8_get_bytes 00:11:25 v #13935 > > |> sha256_compute_hash sha256 00:11:25 v #13936 > > |> am.map (sm'.byte_to_string "x2") 00:11:25 v #13937 > > |> seq.of_array' 00:11:25 v #13938 > > |> sm'.concat (join "") 00:11:25 v #13939 > > | TypeScript (Native) => fun () => 00:11:25 v #13940 > > create_hash "sha256" 00:11:25 v #13941 > > |> hash_update input 00:11:25 v #13942 > > |> hash_digest "hex" 00:11:25 v #13943 > > | Rust (Native) => fun () => 00:11:25 v #13944 > > input 00:11:25 v #13945 > > |> sm'.utf8_get_bytes 00:11:25 v #13946 > > |> fun (a x) => x 00:11:25 v #13947 > > |> am'.to_vec 00:11:25 v #13948 > > |> stream.new_cursor 00:11:25 v #13949 > > |> hash_read 00:11:25 v #13950 > > |> resultm.unwrap' 00:11:25 v #13951 > > | Python (Native) | Cuda (Native) => fun () => 00:11:25 v #13952 > > hashlib_sha256 () 00:11:25 v #13953 > > |> sha256_update (input |> sm'.encode_utf8) 00:11:25 v #13954 > > |> sha256_hexdigest 00:11:25 v #13955 > > | _ => fun () => null () 00:11:26 v #13956 > > 00:11:26 v #13957 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:26 v #13958 > > //// test 00:11:26 v #13959 > > ///! fsharp 00:11:26 v #13960 > > ///! cuda 00:11:26 v #13961 > > ///! rust -d sha2 00:11:26 v #13962 > > ///! typescript 00:11:26 v #13963 > > ///! python 00:11:26 v #13964 > > 00:11:26 v #13965 > > "\n" 00:11:26 v #13966 > > |> hash_text 00:11:26 v #13967 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:26 v #13968 > > 00:11:26 v #13969 > > "" 00:11:26 v #13970 > > |> hash_text 00:11:26 v #13971 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:11:29 v #13972 > > 00:11:29 v #13973 > > ╭─[ 3.93s - return value ]─────────────────────────────────────────────────────╮ 00:11:29 v #13974 > > │ │ 00:11:29 v #13975 > > │ .py output (Cuda): │ 00:11:29 v #13976 > > │ __assert_eq / actual: │ 00:11:29 v #13977 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:11:29 v #13978 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:11:29 v #13979 > > │ __assert_eq / actual: │ 00:11:29 v #13980 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:11:29 v #13981 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:11:29 v #13982 > > │ │ 00:11:29 v #13983 > > │ │ 00:11:29 v #13984 > > │ .rs output (rust -d sha2): │ 00:11:29 v #13985 > > │ __assert_eq / actual: │ 00:11:29 v #13986 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:11:29 v #13987 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:11:29 v #13988 > > │ __assert_eq / actual: │ 00:11:29 v #13989 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:11:29 v #13990 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:11:29 v #13991 > > │ │ 00:11:29 v #13992 > > │ │ 00:11:29 v #13993 > > │ .ts output: │ 00:11:29 v #13994 > > │ __assert_eq / actual: │ 00:11:29 v #13995 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:11:29 v #13996 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:11:29 v #13997 > > │ __assert_eq / actual: │ 00:11:29 v #13998 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:11:29 v #13999 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:11:29 v #14000 > > │ │ 00:11:29 v #14001 > > │ │ 00:11:29 v #14002 > > │ .py output: │ 00:11:29 v #14003 > > │ __assert_eq / actual: │ 00:11:29 v #14004 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:11:29 v #14005 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:11:29 v #14006 > > │ __assert_eq / actual: │ 00:11:29 v #14007 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:11:29 v #14008 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:11:29 v #14009 > > │ │ 00:11:29 v #14010 > > │ │ 00:11:29 v #14011 > > │ │ 00:11:29 v #14012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:29 v #14013 > > 00:11:29 v #14014 > > ╭─[ 3.93s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:29 v #14015 > > │ .fsx output: │ 00:11:29 v #14016 > > │ __assert_eq / actual: │ 00:11:29 v #14017 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:11:29 v #14018 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:11:29 v #14019 > > │ __assert_eq / actual: │ 00:11:29 v #14020 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:11:29 v #14021 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:11:29 v #14022 > > │ │ 00:11:29 v #14023 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:29 v #14024 > > 00:11:29 v #14025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:29 v #14026 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:29 v #14027 > > │ ### hash_to_port │ 00:11:29 v #14028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:29 v #14029 > > 00:11:29 v #14030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:29 v #14031 > > inl hash_to_port (text : string) : u16 = 00:11:29 v #14032 > > inl first_letter_code = text |> sm'.index 0i32 |> sm'.convert_to_utf32 00:11:29 v #14033 > > inl hash_part = text |> sm'.slice 0i32 7 00:11:29 v #14034 > > inl combined_value = convert_i32_base 16 hash_part + first_letter_code |> 00:11:29 v #14035 > > u16 00:11:29 v #14036 > > trace Verbose 00:11:29 v #14037 > > fun () => "crypto.hash_to_port" 00:11:29 v #14038 > > fun () => { first_letter_code hash_part combined_value } 00:11:29 v #14039 > > combined_value % 48128 + 1024 00:11:30 v #14040 > > 00:11:30 v #14041 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #14042 > > //// test 00:11:30 v #14043 > > ///! fsharp 00:11:30 v #14044 > > ///! cuda 00:11:30 v #14045 > > ///! rust -d sha2 00:11:30 v #14046 > > ///! typescript 00:11:30 v #14047 > > ///! python 00:11:30 v #14048 > > 00:11:30 v #14049 > > "\n" 00:11:30 v #14050 > > |> hash_text 00:11:30 v #14051 > > |> hash_to_port 00:11:30 v #14052 > > |> _assert_eq 19273 00:11:35 v #14053 > > 00:11:35 v #14054 > > ╭─[ 4.79s - return value ]─────────────────────────────────────────────────────╮ 00:11:35 v #14055 > > │ │ 00:11:35 v #14056 > > │ .py output (Cuda): │ 00:11:35 v #14057 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │ 00:11:35 v #14058 > > │ = 01ba4719; combined_value = 18249 } │ 00:11:35 v #14059 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:11:35 v #14060 > > │ │ 00:11:35 v #14061 > > │ │ 00:11:35 v #14062 > > │ .rs output (rust -d sha2): │ 00:11:35 v #14063 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; │ 00:11:35 v #14064 > > │ hash_part = 01ba4719; combined_value = 18249 } │ 00:11:35 v #14065 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:11:35 v #14066 > > │ │ 00:11:35 v #14067 > > │ │ 00:11:35 v #14068 > > │ .ts output: │ 00:11:35 v #14069 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │ 00:11:35 v #14070 > > │ = 01ba4719; combined_value = 18249 } │ 00:11:35 v #14071 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:11:35 v #14072 > > │ │ 00:11:35 v #14073 > > │ │ 00:11:35 v #14074 > > │ .py output: │ 00:11:35 v #14075 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │ 00:11:35 v #14076 > > │ = 01ba4719; combined_value = 18249 } │ 00:11:35 v #14077 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:11:35 v #14078 > > │ │ 00:11:35 v #14079 > > │ │ 00:11:35 v #14080 > > │ │ 00:11:35 v #14081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:35 v #14082 > > 00:11:35 v #14083 > > ╭─[ 4.79s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:35 v #14084 > > │ .fsx output: │ 00:11:35 v #14085 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code = 48; hash_part │ 00:11:35 v #14086 > > │ = 01ba4719; combined_value = 18249 } │ 00:11:35 v #14087 > > │ __assert_eq / actual: 19273us / expected: 19273us │ 00:11:35 v #14088 > > │ │ 00:11:35 v #14089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:35 v #14090 > > 00:11:35 v #14091 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:35 v #14092 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:35 v #14093 > > │ ## main │ 00:11:35 v #14094 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:35 v #14095 > > 00:11:35 v #14096 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:35 v #14097 > > inl main () = 00:11:35 v #14098 > > $'let hash_text x = !hash_text x' : () 00:11:35 v #14099 > > $'let hash_to_port x = !hash_to_port x' : () 00:11:36 v #14100 > 00:01:04 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30546 } 00:11:36 v #14101 > 00:01:04 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:37 v #14102 > 00:01:05 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/crypto.dib.ipynb to html 00:11:37 v #14103 > 00:01:05 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:11:37 v #14104 > 00:01:05 v #7 ! validate(nb) 00:11:38 v #14105 > 00:01:06 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:11:38 v #14106 > 00:01:06 v #9 ! return _pygments_highlight( 00:11:38 v #14107 > 00:01:06 v #10 ! [NbConvertApp] Writing 341595 bytes to c:\home\git\polyglot\lib\spiral\crypto.dib.html 00:11:38 v #14108 > 00:01:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:11:38 v #14109 > 00:01:06 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:11:38 v #14110 > 00:01:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:39 v #14111 > 00:01:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:11:39 v #14112 > 00:01:07 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:11:39 v #14113 > 00:01:07 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31459 } 00:11:39 d #14114 runtime.execute_with_options_async / { exit_code = 0; output_length = 35226 } 00:11:39 d #13 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path crypto.dib --retries 3 00:11:39 d #14115 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path common.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:39 v #14116 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) } 00:11:39 v #14117 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/common.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/common.dib" --output-path "c:/home/git/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:11:40 v #14118 > > 00:11:40 v #14119 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:40 v #14120 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:40 v #14121 > > │ # common │ 00:11:40 v #14122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:43 v #14123 > > 00:11:43 v #14124 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:43 v #14125 > > //// test 00:11:43 v #14126 > > 00:11:43 v #14127 > > open testing 00:11:45 v #14128 > > 00:11:45 v #14129 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:45 v #14130 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:45 v #14131 > > │ ## common │ 00:11:45 v #14132 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:45 v #14133 > > 00:11:45 v #14134 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:45 v #14135 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:45 v #14136 > > │ ### join_body │ 00:11:45 v #14137 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:45 v #14138 > > 00:11:45 v #14139 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:45 v #14140 > > inl join_body body acc x = 00:11:45 v #14141 > > if var_is x |> not 00:11:45 v #14142 > > then body acc x 00:11:45 v #14143 > > else 00:11:45 v #14144 > > inl acc = dyn acc 00:11:45 v #14145 > > join body acc x 00:11:45 v #14146 > > 00:11:45 v #14147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:45 v #14148 > > //// test 00:11:45 v #14149 > > 00:11:45 v #14150 > > inl rec fold_list f s = function 00:11:45 v #14151 > > | Cons (x, x') => fold_list f (f s x) x' 00:11:45 v #14152 > > | Nil => s 00:11:45 v #14153 > > 00:11:45 v #14154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:45 v #14155 > > //// test 00:11:45 v #14156 > > ///! fsharp 00:11:45 v #14157 > > ///! cuda 00:11:45 v #14158 > > ///! rust 00:11:45 v #14159 > > ///! typescript 00:11:45 v #14160 > > ///! python 00:11:45 v #14161 > > //// print_code 00:11:45 v #14162 > > 00:11:45 v #14163 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:11:45 v #14164 > > |> fold_list (+) 0 00:11:45 v #14165 > > |> _assert_eq 15 00:11:50 v #14166 > > 00:11:50 v #14167 > > ╭─[ 4.25s - return value ]─────────────────────────────────────────────────────╮ 00:11:50 v #14168 > > │ .py output (Cuda): │ 00:11:50 v #14169 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:50 v #14170 > > │ │ 00:11:50 v #14171 > > │ .rs output: │ 00:11:50 v #14172 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:50 v #14173 > > │ │ 00:11:50 v #14174 > > │ .ts output: │ 00:11:50 v #14175 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:50 v #14176 > > │ │ 00:11:50 v #14177 > > │ .py output: │ 00:11:50 v #14178 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:50 v #14179 > > │ │ 00:11:50 v #14180 > > │ │ 00:11:50 v #14181 > > │ │ 00:11:50 v #14182 > > │ │ 00:11:50 v #14183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:50 v #14184 > > 00:11:50 v #14185 > > ╭─[ 4.27s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:50 v #14186 > > │ .fsx: │ 00:11:50 v #14187 > > │ let rec method1 () : int32 = │ 00:11:50 v #14188 > > │ 3 │ 00:11:50 v #14189 > > │ and method2 (v0 : bool) : bool = │ 00:11:50 v #14190 > > │ v0 │ 00:11:50 v #14191 > > │ and closure0 (v0 : string) () : unit = │ 00:11:50 v #14192 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:11:50 v #14193 > > │ v1 v0 │ 00:11:50 v #14194 > > │ and method0 () : unit = │ 00:11:50 v #14195 > > │ let v0 : int32 = method1() │ 00:11:50 v #14196 > > │ let v1 : int32 = 9 + v0 │ 00:11:50 v #14197 > > │ let v2 : int32 = v1 + 2 │ 00:11:50 v #14198 > > │ let v3 : int32 = v2 + 1 │ 00:11:50 v #14199 > > │ let v4 : bool = v3 = 15 │ 00:11:50 v #14200 > > │ let v6 : bool = │ 00:11:50 v #14201 > > │ if v4 then │ 00:11:50 v #14202 > > │ true │ 00:11:50 v #14203 > > │ else │ 00:11:50 v #14204 > > │ method2(v4) │ 00:11:50 v #14205 > > │ let v7 : string = "__assert_eq" │ 00:11:50 v #14206 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}" │ 00:11:50 v #14207 > > │ let v11 : unit = () │ 00:11:50 v #14208 > > │ let v12 : (unit -> unit) = closure0(v8) │ 00:11:50 v #14209 > > │ let v13 : unit = (fun () -> v12 (); v11) () │ 00:11:50 v #14210 > > │ let v15 : bool = v6 = false │ 00:11:50 v #14211 > > │ if v15 then │ 00:11:50 v #14212 > > │ failwith<unit> v8 │ 00:11:50 v #14213 > > │ method0() │ 00:11:50 v #14214 > > │ │ 00:11:50 v #14215 > > │ │ 00:11:50 v #14216 > > │ .rs: │ 00:11:50 v #14217 > > │ #![allow(dead_code)] │ 00:11:50 v #14218 > > │ #![allow(non_camel_case_types)] │ 00:11:50 v #14219 > > │ #![allow(non_snake_case)] │ 00:11:50 v #14220 > > │ #![allow(non_upper_case_globals)] │ 00:11:50 v #14221 > > │ #![allow(unreachable_code)] │ 00:11:50 v #14222 > > │ #![allow(unused_attributes)] │ 00:11:50 v #14223 > > │ #![allow(unused_imports)] │ 00:11:50 v #14224 > > │ #![allow(unused_macros)] │ 00:11:50 v #14225 > > │ #![allow(unused_parens)] │ 00:11:50 v #14226 > > │ #![allow(unused_variables)] │ 00:11:50 v #14227 > > │ #![allow(unused_assignments)] │ 00:11:50 v #14228 > > │ mod module_5170bee5 { │ 00:11:50 v #14229 > > │ pub mod Spiral_builder { │ 00:11:50 v #14230 > > │ use super::*; │ 00:11:50 v #14231 > > │ use fable_library_rust::Native_::on_startup; │ 00:11:50 v #14232 > > │ use fable_library_rust::String_::printfn; │ 00:11:50 v #14233 > > │ use fable_library_rust::String_::sprintf; │ 00:11:50 v #14234 > > │ use fable_library_rust::String_::string; │ 00:11:50 v #14235 > > │ pub fn method1() -> i32 { │ 00:11:50 v #14236 > > │ 3_i32 │ 00:11:50 v #14237 > > │ } │ 00:11:50 v #14238 > > │ pub fn method2(v0: bool) -> bool { │ 00:11:50 v #14239 > > │ v0 │ 00:11:50 v #14240 > > │ } │ 00:11:50 v #14241 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:11:50 v #14242 > > │ printfn!("{0}", v0); │ 00:11:50 v #14243 > > │ } │ 00:11:50 v #14244 > > │ pub fn method0() { │ 00:11:50 v #14245 > > │ let v3: i32 = ((9_i32 + (Spiral_builder::method1())) + 2_i32) + │ 00:11:50 v #14246 > > │ 1_i32; │ 00:11:50 v #14247 > > │ let v4: bool = (v3) == 15_i32; │ 00:11:50 v #14248 > > │ let v6: bool = if v4 { │ 00:11:50 v #14249 > > │ true │ 00:11:50 v #14250 > > │ } else { │ 00:11:50 v #14251 > > │ Spiral_builder::method2(v4) │ 00:11:50 v #14252 > > │ }; │ 00:11:50 v #14253 > > │ let v8: string = sprintf!( │ 00:11:50 v #14254 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:11:50 v #14255 > > │ string("__assert_eq"), │ 00:11:50 v #14256 > > │ v3, │ 00:11:50 v #14257 > > │ 15_i32 │ 00:11:50 v #14258 > > │ ); │ 00:11:50 v #14259 > > │ let v13: () = { │ 00:11:50 v #14260 > > │ Spiral_builder::closure0(v8.clone(), ()); │ 00:11:50 v #14261 > > │ () │ 00:11:50 v #14262 > > │ }; │ 00:11:50 v #14263 > > │ if (v6) == false { │ 00:11:50 v #14264 > > │ panic!("{}", v8,); │ 00:11:50 v #14265 > > │ } │ 00:11:50 v #14266 > > │ } │ 00:11:50 v #14267 > > │ // on_startup!(Spiral_builder::method0()); │ 00:11:50 v #14268 > > │ } │ 00:11:50 v #14269 > > │ } │ 00:11:50 v #14270 > > │ pub use module_5170bee5::*; │ 00:11:50 v #14271 > > │ │ 00:11:50 v #14272 > > │ pub fn main() -> Result<(), String> { │ 00:11:50 v #14273 > > │ Ok(Spiral_builder::method0()) │ 00:11:50 v #14274 > > │ } │ 00:11:50 v #14275 > > │ │ 00:11:50 v #14276 > > │ .ts: │ 00:11:50 v #14277 > > │ import { int32 } from │ 00:11:50 v #14278 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; │ 00:11:50 v #14279 > > │ import { interpolate, toText } from │ 00:11:50 v #14280 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:11:50 v #14281 > > │ │ 00:11:50 v #14282 > > │ export function method1(): int32 { │ 00:11:50 v #14283 > > │ return 3; │ 00:11:50 v #14284 > > │ } │ 00:11:50 v #14285 > > │ │ 00:11:50 v #14286 > > │ export function method2(v0: boolean): boolean { │ 00:11:50 v #14287 > > │ return v0; │ 00:11:50 v #14288 > > │ } │ 00:11:50 v #14289 > > │ │ 00:11:50 v #14290 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:11:50 v #14291 > > │ console.log(v0); │ 00:11:50 v #14292 > > │ } │ 00:11:50 v #14293 > > │ │ 00:11:50 v #14294 > > │ export function method0(): void { │ 00:11:50 v #14295 > > │ const v3: int32 = (((9 + method1()) + 2) + 1) | 0; │ 00:11:50 v #14296 > > │ const v4: boolean = v3 === 15; │ 00:11:50 v #14297 > > │ const v6: boolean = v4 ? true : method2(v4); │ 00:11:50 v #14298 > > │ const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:11:50 v #14299 > > │ %A%P()", ["__assert_eq", v3, 15])); │ 00:11:50 v #14300 > > │ let v13: any; │ 00:11:50 v #14301 > > │ closure0(v8, undefined); │ 00:11:50 v #14302 > > │ v13 = undefined; │ 00:11:50 v #14303 > > │ if (v6 === false) { │ 00:11:50 v #14304 > > │ throw new Error(v8); │ 00:11:50 v #14305 > > │ } │ 00:11:50 v #14306 > > │ } │ 00:11:50 v #14307 > > │ │ 00:11:50 v #14308 > > │ method0(); │ 00:11:50 v #14309 > > │ │ 00:11:50 v #14310 > > │ │ 00:11:50 v #14311 > > │ │ 00:11:50 v #14312 > > │ // spiral_builder.process_typescript │ 00:11:50 v #14313 > > │ │ 00:11:50 v #14314 > > │ .py: │ 00:11:50 v #14315 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:11:50 v #14316 > > │ │ 00:11:50 v #14317 > > │ def method1(__unit: None=None) -> int: │ 00:11:50 v #14318 > > │ return 3 │ 00:11:50 v #14319 > > │ │ 00:11:50 v #14320 > > │ │ 00:11:50 v #14321 > > │ def method2(v0: bool) -> bool: │ 00:11:50 v #14322 > > │ return v0 │ 00:11:50 v #14323 > > │ │ 00:11:50 v #14324 > > │ │ 00:11:50 v #14325 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:11:50 v #14326 > > │ print(v0) │ 00:11:50 v #14327 > > │ │ 00:11:50 v #14328 > > │ │ 00:11:50 v #14329 > > │ def method0(__unit: None=None) -> None: │ 00:11:50 v #14330 > > │ v3: int = (((9 + method1()) + 2) + 1) or 0 │ 00:11:50 v #14331 > > │ v4: bool = v3 == 15 │ 00:11:50 v #14332 > > │ v6: bool = True if v4 else method2(v4) │ 00:11:50 v #14333 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:11:50 v #14334 > > │ %A%P()", ["__assert_eq", v3, 15])) │ 00:11:50 v #14335 > > │ v13: None │ 00:11:50 v #14336 > > │ closure0(v8, None) │ 00:11:50 v #14337 > > │ v13 = None │ 00:11:50 v #14338 > > │ if v6 == False: │ 00:11:50 v #14339 > > │ raise Exception(v8) │ 00:11:50 v #14340 > > │ │ 00:11:50 v #14341 > > │ │ 00:11:50 v #14342 > > │ │ 00:11:50 v #14343 > > │ method0() │ 00:11:50 v #14344 > > │ │ 00:11:50 v #14345 > > │ │ 00:11:50 v #14346 > > │ │ 00:11:50 v #14347 > > │ # spiral_builder.process_python │ 00:11:50 v #14348 > > │ │ 00:11:50 v #14349 > > │ .py (Cuda): │ 00:11:50 v #14350 > > │ kernel = r""" │ 00:11:50 v #14351 > > │ """ │ 00:11:50 v #14352 > > │ class static_array(): │ 00:11:50 v #14353 > > │ def __init__(self, length): │ 00:11:50 v #14354 > > │ self.ptr = [] │ 00:11:50 v #14355 > > │ for _ in range(length): │ 00:11:50 v #14356 > > │ self.ptr.append(None) │ 00:11:50 v #14357 > > │ │ 00:11:50 v #14358 > > │ def __getitem__(self, index): │ 00:11:50 v #14359 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:11:50 v #14360 > > │ range." │ 00:11:50 v #14361 > > │ return self.ptr[index] │ 00:11:50 v #14362 > > │ │ 00:11:50 v #14363 > > │ def __setitem__(self, index, value): │ 00:11:50 v #14364 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:11:50 v #14365 > > │ range." │ 00:11:50 v #14366 > > │ self.ptr[index] = value │ 00:11:50 v #14367 > > │ │ 00:11:50 v #14368 > > │ class static_array_list(static_array): │ 00:11:50 v #14369 > > │ def __init__(self, length): │ 00:11:50 v #14370 > > │ super().__init__(length) │ 00:11:50 v #14371 > > │ self.length = 0 │ 00:11:50 v #14372 > > │ │ 00:11:50 v #14373 > > │ def __getitem__(self, index): │ 00:11:50 v #14374 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:11:50 v #14375 > > │ range." │ 00:11:50 v #14376 > > │ return self.ptr[index] │ 00:11:50 v #14377 > > │ │ 00:11:50 v #14378 > > │ def __setitem__(self, index, value): │ 00:11:50 v #14379 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:11:50 v #14380 > > │ range." │ 00:11:50 v #14381 > > │ self.ptr[index] = value │ 00:11:50 v #14382 > > │ │ 00:11:50 v #14383 > > │ def push(self,value): │ 00:11:50 v #14384 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:11:50 v #14385 > > │ to be less than the maximum length of the array." │ 00:11:50 v #14386 > > │ self.ptr[self.length] = value │ 00:11:50 v #14387 > > │ self.length += 1 │ 00:11:50 v #14388 > > │ │ 00:11:50 v #14389 > > │ def pop(self): │ 00:11:50 v #14390 > > │ assert (0 < self.length), "The length before popping has to be │ 00:11:50 v #14391 > > │ greater than 0." │ 00:11:50 v #14392 > > │ self.length -= 1 │ 00:11:50 v #14393 > > │ return self.ptr[self.length] │ 00:11:50 v #14394 > > │ │ 00:11:50 v #14395 > > │ def unsafe_set_length(self,i): │ 00:11:50 v #14396 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:11:50 v #14397 > > │ self.length = i │ 00:11:50 v #14398 > > │ │ 00:11:50 v #14399 > > │ class dynamic_array(static_array): │ 00:11:50 v #14400 > > │ pass │ 00:11:50 v #14401 > > │ │ 00:11:50 v #14402 > > │ class dynamic_array_list(static_array_list): │ 00:11:50 v #14403 > > │ def length_(self): return self.length │ 00:11:50 v #14404 > > │ │ 00:11:50 v #14405 > > │ import cupy as cp │ 00:11:50 v #14406 > > │ import numpy as np │ 00:11:50 v #14407 > > │ from dataclasses import dataclass │ 00:11:50 v #14408 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:11:50 v #14409 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ 00:11:50 v #14410 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ 00:11:50 v #14411 > > │ cuda = False │ 00:11:50 v #14412 > > │ │ 00:11:50 v #14413 > > │ def method1() -> i32: │ 00:11:50 v #14414 > > │ return 3 │ 00:11:50 v #14415 > > │ def method2(v0 : bool) -> bool: │ 00:11:50 v #14416 > > │ return v0 │ 00:11:50 v #14417 > > │ def method0() -> None: │ 00:11:50 v #14418 > > │ v0 = method1() │ 00:11:50 v #14419 > > │ v1 = 9 + v0 │ 00:11:50 v #14420 > > │ del v0 │ 00:11:50 v #14421 > > │ v2 = v1 + 2 │ 00:11:50 v #14422 > > │ del v1 │ 00:11:50 v #14423 > > │ v3 = v2 + 1 │ 00:11:50 v #14424 > > │ del v2 │ 00:11:50 v #14425 > > │ v4 = v3 == 15 │ 00:11:50 v #14426 > > │ if v4: │ 00:11:50 v #14427 > > │ v6 = True │ 00:11:50 v #14428 > > │ else: │ 00:11:50 v #14429 > > │ v6 = method2(v4) │ 00:11:50 v #14430 > > │ del v4 │ 00:11:50 v #14431 > > │ v9 = "__assert_eq" │ 00:11:50 v #14432 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:11:50 v #14433 > > │ del v3, v9 │ 00:11:50 v #14434 > > │ print(v10) │ 00:11:50 v #14435 > > │ v16 = v6 == False │ 00:11:50 v #14436 > > │ del v6 │ 00:11:50 v #14437 > > │ if v16: │ 00:11:50 v #14438 > > │ del v16 │ 00:11:50 v #14439 > > │ raise Exception(v10) │ 00:11:50 v #14440 > > │ else: │ 00:11:50 v #14441 > > │ del v10, v16 │ 00:11:50 v #14442 > > │ return │ 00:11:50 v #14443 > > │ def main_body(): │ 00:11:50 v #14444 > > │ return method0() │ 00:11:50 v #14445 > > │ │ 00:11:50 v #14446 > > │ def main(): │ 00:11:50 v #14447 > > │ r = main_body() │ 00:11:50 v #14448 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ 00:11:50 v #14449 > > │ so the `__trap()` calls on the kernel aren't missed. │ 00:11:50 v #14450 > > │ return r │ 00:11:50 v #14451 > > │ │ 00:11:50 v #14452 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:11:50 v #14453 > > │ print(result) │ 00:11:50 v #14454 > > │ │ 00:11:50 v #14455 > > │ .fsx output: │ 00:11:50 v #14456 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:50 v #14457 > > │ │ 00:11:50 v #14458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:50 v #14459 > > 00:11:50 v #14460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 v #14461 > > //// test 00:11:50 v #14462 > > ///! fsharp 00:11:50 v #14463 > > ///! cuda 00:11:50 v #14464 > > ///! rust 00:11:50 v #14465 > > ///! typescript 00:11:50 v #14466 > > ///! python 00:11:50 v #14467 > > //// print_code 00:11:50 v #14468 > > 00:11:50 v #14469 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:11:50 v #14470 > > |> fold_list (join_body (+)) 0 00:11:50 v #14471 > > |> _assert_eq 15 00:11:53 v #14472 > > 00:11:53 v #14473 > > ╭─[ 3.64s - return value ]─────────────────────────────────────────────────────╮ 00:11:53 v #14474 > > │ .py output (Cuda): │ 00:11:53 v #14475 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:53 v #14476 > > │ │ 00:11:53 v #14477 > > │ .rs output: │ 00:11:53 v #14478 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:53 v #14479 > > │ │ 00:11:53 v #14480 > > │ .ts output: │ 00:11:53 v #14481 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:53 v #14482 > > │ │ 00:11:53 v #14483 > > │ .py output: │ 00:11:53 v #14484 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:53 v #14485 > > │ │ 00:11:53 v #14486 > > │ │ 00:11:53 v #14487 > > │ │ 00:11:53 v #14488 > > │ │ 00:11:53 v #14489 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:53 v #14490 > > 00:11:53 v #14491 > > ╭─[ 3.64s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:53 v #14492 > > │ .fsx: │ 00:11:53 v #14493 > > │ let rec method1 () : int32 = │ 00:11:53 v #14494 > > │ 3 │ 00:11:53 v #14495 > > │ and method2 (v0 : int32, v1 : int32) : int32 = │ 00:11:53 v #14496 > > │ let v2 : int32 = v1 + v0 │ 00:11:53 v #14497 > > │ v2 │ 00:11:53 v #14498 > > │ and method3 (v0 : bool) : bool = │ 00:11:53 v #14499 > > │ v0 │ 00:11:53 v #14500 > > │ and closure0 (v0 : string) () : unit = │ 00:11:53 v #14501 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:11:53 v #14502 > > │ v1 v0 │ 00:11:53 v #14503 > > │ and method0 () : unit = │ 00:11:53 v #14504 > > │ let v0 : int32 = method1() │ 00:11:53 v #14505 > > │ let v1 : int32 = 9 │ 00:11:53 v #14506 > > │ let v2 : int32 = method2(v0, v1) │ 00:11:53 v #14507 > > │ let v3 : int32 = v2 + 2 │ 00:11:53 v #14508 > > │ let v4 : int32 = v3 + 1 │ 00:11:53 v #14509 > > │ let v5 : bool = v4 = 15 │ 00:11:53 v #14510 > > │ let v7 : bool = │ 00:11:53 v #14511 > > │ if v5 then │ 00:11:53 v #14512 > > │ true │ 00:11:53 v #14513 > > │ else │ 00:11:53 v #14514 > > │ method3(v5) │ 00:11:53 v #14515 > > │ let v8 : string = "__assert_eq" │ 00:11:53 v #14516 > > │ let v9 : string = $"{v8} / actual: %A{v4} / expected: %A{15}" │ 00:11:53 v #14517 > > │ let v12 : unit = () │ 00:11:53 v #14518 > > │ let v13 : (unit -> unit) = closure0(v9) │ 00:11:53 v #14519 > > │ let v14 : unit = (fun () -> v13 (); v12) () │ 00:11:53 v #14520 > > │ let v16 : bool = v7 = false │ 00:11:53 v #14521 > > │ if v16 then │ 00:11:53 v #14522 > > │ failwith<unit> v9 │ 00:11:53 v #14523 > > │ method0() │ 00:11:53 v #14524 > > │ │ 00:11:53 v #14525 > > │ │ 00:11:53 v #14526 > > │ .rs: │ 00:11:53 v #14527 > > │ #![allow(dead_code)] │ 00:11:53 v #14528 > > │ #![allow(non_camel_case_types)] │ 00:11:53 v #14529 > > │ #![allow(non_snake_case)] │ 00:11:53 v #14530 > > │ #![allow(non_upper_case_globals)] │ 00:11:53 v #14531 > > │ #![allow(unreachable_code)] │ 00:11:53 v #14532 > > │ #![allow(unused_attributes)] │ 00:11:53 v #14533 > > │ #![allow(unused_imports)] │ 00:11:53 v #14534 > > │ #![allow(unused_macros)] │ 00:11:53 v #14535 > > │ #![allow(unused_parens)] │ 00:11:53 v #14536 > > │ #![allow(unused_variables)] │ 00:11:53 v #14537 > > │ #![allow(unused_assignments)] │ 00:11:53 v #14538 > > │ mod module_84d7d073 { │ 00:11:53 v #14539 > > │ pub mod Spiral_builder { │ 00:11:53 v #14540 > > │ use super::*; │ 00:11:53 v #14541 > > │ use fable_library_rust::Native_::on_startup; │ 00:11:53 v #14542 > > │ use fable_library_rust::String_::printfn; │ 00:11:53 v #14543 > > │ use fable_library_rust::String_::sprintf; │ 00:11:53 v #14544 > > │ use fable_library_rust::String_::string; │ 00:11:53 v #14545 > > │ pub fn method1() -> i32 { │ 00:11:53 v #14546 > > │ 3_i32 │ 00:11:53 v #14547 > > │ } │ 00:11:53 v #14548 > > │ pub fn method2(v0: i32, v1: i32) -> i32 { │ 00:11:53 v #14549 > > │ (v1) + (v0) │ 00:11:53 v #14550 > > │ } │ 00:11:53 v #14551 > > │ pub fn method3(v0: bool) -> bool { │ 00:11:53 v #14552 > > │ v0 │ 00:11:53 v #14553 > > │ } │ 00:11:53 v #14554 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:11:53 v #14555 > > │ printfn!("{0}", v0); │ 00:11:53 v #14556 > > │ } │ 00:11:53 v #14557 > > │ pub fn method0() { │ 00:11:53 v #14558 > > │ let v4: i32 = │ 00:11:53 v #14559 > > │ ((Spiral_builder::method2(Spiral_builder::method1(), 9_i32)) │ 00:11:53 v #14560 > > │ + 2_i32) + 1_i32; │ 00:11:53 v #14561 > > │ let v5: bool = (v4) == 15_i32; │ 00:11:53 v #14562 > > │ let v7: bool = if v5 { │ 00:11:53 v #14563 > > │ true │ 00:11:53 v #14564 > > │ } else { │ 00:11:53 v #14565 > > │ Spiral_builder::method3(v5) │ 00:11:53 v #14566 > > │ }; │ 00:11:53 v #14567 > > │ let v9: string = sprintf!( │ 00:11:53 v #14568 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:11:53 v #14569 > > │ string("__assert_eq"), │ 00:11:53 v #14570 > > │ v4, │ 00:11:53 v #14571 > > │ 15_i32 │ 00:11:53 v #14572 > > │ ); │ 00:11:53 v #14573 > > │ let v14: () = { │ 00:11:53 v #14574 > > │ Spiral_builder::closure0(v9.clone(), ()); │ 00:11:53 v #14575 > > │ () │ 00:11:53 v #14576 > > │ }; │ 00:11:53 v #14577 > > │ if (v7) == false { │ 00:11:53 v #14578 > > │ panic!("{}", v9,); │ 00:11:53 v #14579 > > │ } │ 00:11:53 v #14580 > > │ } │ 00:11:53 v #14581 > > │ // on_startup!(Spiral_builder::method0()); │ 00:11:53 v #14582 > > │ } │ 00:11:53 v #14583 > > │ } │ 00:11:53 v #14584 > > │ pub use module_84d7d073::*; │ 00:11:53 v #14585 > > │ │ 00:11:53 v #14586 > > │ pub fn main() -> Result<(), String> { │ 00:11:53 v #14587 > > │ Ok(Spiral_builder::method0()) │ 00:11:53 v #14588 > > │ } │ 00:11:53 v #14589 > > │ │ 00:11:53 v #14590 > > │ .ts: │ 00:11:53 v #14591 > > │ import { int32 } from │ 00:11:53 v #14592 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; │ 00:11:53 v #14593 > > │ import { interpolate, toText } from │ 00:11:53 v #14594 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:11:53 v #14595 > > │ │ 00:11:53 v #14596 > > │ export function method1(): int32 { │ 00:11:53 v #14597 > > │ return 3; │ 00:11:53 v #14598 > > │ } │ 00:11:53 v #14599 > > │ │ 00:11:53 v #14600 > > │ export function method2(v0: int32, v1: int32): int32 { │ 00:11:53 v #14601 > > │ return v1 + v0; │ 00:11:53 v #14602 > > │ } │ 00:11:53 v #14603 > > │ │ 00:11:53 v #14604 > > │ export function method3(v0: boolean): boolean { │ 00:11:53 v #14605 > > │ return v0; │ 00:11:53 v #14606 > > │ } │ 00:11:53 v #14607 > > │ │ 00:11:53 v #14608 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:11:53 v #14609 > > │ console.log(v0); │ 00:11:53 v #14610 > > │ } │ 00:11:53 v #14611 > > │ │ 00:11:53 v #14612 > > │ export function method0(): void { │ 00:11:53 v #14613 > > │ const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0; │ 00:11:53 v #14614 > > │ const v5: boolean = v4 === 15; │ 00:11:53 v #14615 > > │ const v7: boolean = v5 ? true : method3(v5); │ 00:11:53 v #14616 > > │ const v9: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:11:53 v #14617 > > │ %A%P()", ["__assert_eq", v4, 15])); │ 00:11:53 v #14618 > > │ let v14: any; │ 00:11:53 v #14619 > > │ closure0(v9, undefined); │ 00:11:53 v #14620 > > │ v14 = undefined; │ 00:11:53 v #14621 > > │ if (v7 === false) { │ 00:11:53 v #14622 > > │ throw new Error(v9); │ 00:11:53 v #14623 > > │ } │ 00:11:53 v #14624 > > │ } │ 00:11:53 v #14625 > > │ │ 00:11:53 v #14626 > > │ method0(); │ 00:11:53 v #14627 > > │ │ 00:11:53 v #14628 > > │ │ 00:11:53 v #14629 > > │ │ 00:11:53 v #14630 > > │ // spiral_builder.process_typescript │ 00:11:53 v #14631 > > │ │ 00:11:53 v #14632 > > │ .py: │ 00:11:53 v #14633 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:11:53 v #14634 > > │ │ 00:11:53 v #14635 > > │ def method1(__unit: None=None) -> int: │ 00:11:53 v #14636 > > │ return 3 │ 00:11:53 v #14637 > > │ │ 00:11:53 v #14638 > > │ │ 00:11:53 v #14639 > > │ def method2(v0: int, v1: int) -> int: │ 00:11:53 v #14640 > > │ return v1 + v0 │ 00:11:53 v #14641 > > │ │ 00:11:53 v #14642 > > │ │ 00:11:53 v #14643 > > │ def method3(v0: bool) -> bool: │ 00:11:53 v #14644 > > │ return v0 │ 00:11:53 v #14645 > > │ │ 00:11:53 v #14646 > > │ │ 00:11:53 v #14647 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:11:53 v #14648 > > │ print(v0) │ 00:11:53 v #14649 > > │ │ 00:11:53 v #14650 > > │ │ 00:11:53 v #14651 > > │ def method0(__unit: None=None) -> None: │ 00:11:53 v #14652 > > │ v4: int = ((method2(method1(), 9) + 2) + 1) or 0 │ 00:11:53 v #14653 > > │ v5: bool = v4 == 15 │ 00:11:53 v #14654 > > │ v7: bool = True if v5 else method3(v5) │ 00:11:53 v #14655 > > │ v9: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:11:53 v #14656 > > │ %A%P()", ["__assert_eq", v4, 15])) │ 00:11:53 v #14657 > > │ v14: None │ 00:11:53 v #14658 > > │ closure0(v9, None) │ 00:11:53 v #14659 > > │ v14 = None │ 00:11:53 v #14660 > > │ if v7 == False: │ 00:11:53 v #14661 > > │ raise Exception(v9) │ 00:11:53 v #14662 > > │ │ 00:11:53 v #14663 > > │ │ 00:11:53 v #14664 > > │ │ 00:11:53 v #14665 > > │ method0() │ 00:11:53 v #14666 > > │ │ 00:11:53 v #14667 > > │ │ 00:11:53 v #14668 > > │ │ 00:11:53 v #14669 > > │ # spiral_builder.process_python │ 00:11:53 v #14670 > > │ │ 00:11:53 v #14671 > > │ .py (Cuda): │ 00:11:53 v #14672 > > │ kernel = r""" │ 00:11:53 v #14673 > > │ """ │ 00:11:53 v #14674 > > │ class static_array(): │ 00:11:53 v #14675 > > │ def __init__(self, length): │ 00:11:53 v #14676 > > │ self.ptr = [] │ 00:11:53 v #14677 > > │ for _ in range(length): │ 00:11:53 v #14678 > > │ self.ptr.append(None) │ 00:11:53 v #14679 > > │ │ 00:11:53 v #14680 > > │ def __getitem__(self, index): │ 00:11:53 v #14681 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:11:53 v #14682 > > │ range." │ 00:11:53 v #14683 > > │ return self.ptr[index] │ 00:11:53 v #14684 > > │ │ 00:11:53 v #14685 > > │ def __setitem__(self, index, value): │ 00:11:53 v #14686 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:11:53 v #14687 > > │ range." │ 00:11:53 v #14688 > > │ self.ptr[index] = value │ 00:11:53 v #14689 > > │ │ 00:11:53 v #14690 > > │ class static_array_list(static_array): │ 00:11:53 v #14691 > > │ def __init__(self, length): │ 00:11:53 v #14692 > > │ super().__init__(length) │ 00:11:53 v #14693 > > │ self.length = 0 │ 00:11:53 v #14694 > > │ │ 00:11:53 v #14695 > > │ def __getitem__(self, index): │ 00:11:53 v #14696 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:11:53 v #14697 > > │ range." │ 00:11:53 v #14698 > > │ return self.ptr[index] │ 00:11:53 v #14699 > > │ │ 00:11:53 v #14700 > > │ def __setitem__(self, index, value): │ 00:11:53 v #14701 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:11:53 v #14702 > > │ range." │ 00:11:53 v #14703 > > │ self.ptr[index] = value │ 00:11:53 v #14704 > > │ │ 00:11:53 v #14705 > > │ def push(self,value): │ 00:11:53 v #14706 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:11:53 v #14707 > > │ to be less than the maximum length of the array." │ 00:11:53 v #14708 > > │ self.ptr[self.length] = value │ 00:11:53 v #14709 > > │ self.length += 1 │ 00:11:53 v #14710 > > │ │ 00:11:53 v #14711 > > │ def pop(self): │ 00:11:53 v #14712 > > │ assert (0 < self.length), "The length before popping has to be │ 00:11:53 v #14713 > > │ greater than 0." │ 00:11:53 v #14714 > > │ self.length -= 1 │ 00:11:53 v #14715 > > │ return self.ptr[self.length] │ 00:11:53 v #14716 > > │ │ 00:11:53 v #14717 > > │ def unsafe_set_length(self,i): │ 00:11:53 v #14718 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:11:53 v #14719 > > │ self.length = i │ 00:11:53 v #14720 > > │ │ 00:11:53 v #14721 > > │ class dynamic_array(static_array): │ 00:11:53 v #14722 > > │ pass │ 00:11:53 v #14723 > > │ │ 00:11:53 v #14724 > > │ class dynamic_array_list(static_array_list): │ 00:11:53 v #14725 > > │ def length_(self): return self.length │ 00:11:53 v #14726 > > │ │ 00:11:53 v #14727 > > │ import cupy as cp │ 00:11:53 v #14728 > > │ import numpy as np │ 00:11:53 v #14729 > > │ from dataclasses import dataclass │ 00:11:53 v #14730 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:11:53 v #14731 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ 00:11:53 v #14732 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ 00:11:53 v #14733 > > │ cuda = False │ 00:11:53 v #14734 > > │ │ 00:11:53 v #14735 > > │ def method1() -> i32: │ 00:11:53 v #14736 > > │ return 3 │ 00:11:53 v #14737 > > │ def method2(v0 : i32, v1 : i32) -> i32: │ 00:11:53 v #14738 > > │ v2 = v1 + v0 │ 00:11:53 v #14739 > > │ del v0, v1 │ 00:11:53 v #14740 > > │ return v2 │ 00:11:53 v #14741 > > │ def method3(v0 : bool) -> bool: │ 00:11:53 v #14742 > > │ return v0 │ 00:11:53 v #14743 > > │ def method0() -> None: │ 00:11:53 v #14744 > > │ v0 = method1() │ 00:11:53 v #14745 > > │ v1 = 9 │ 00:11:53 v #14746 > > │ v2 = method2(v0, v1) │ 00:11:53 v #14747 > > │ del v0, v1 │ 00:11:53 v #14748 > > │ v3 = v2 + 2 │ 00:11:53 v #14749 > > │ del v2 │ 00:11:53 v #14750 > > │ v4 = v3 + 1 │ 00:11:53 v #14751 > > │ del v3 │ 00:11:53 v #14752 > > │ v5 = v4 == 15 │ 00:11:53 v #14753 > > │ if v5: │ 00:11:53 v #14754 > > │ v7 = True │ 00:11:53 v #14755 > > │ else: │ 00:11:53 v #14756 > > │ v7 = method3(v5) │ 00:11:53 v #14757 > > │ del v5 │ 00:11:53 v #14758 > > │ v10 = "__assert_eq" │ 00:11:53 v #14759 > > │ v11 = f"{v10} / actual: {v4} / expected: {15}" │ 00:11:53 v #14760 > > │ del v4, v10 │ 00:11:53 v #14761 > > │ print(v11) │ 00:11:53 v #14762 > > │ v17 = v7 == False │ 00:11:53 v #14763 > > │ del v7 │ 00:11:53 v #14764 > > │ if v17: │ 00:11:53 v #14765 > > │ del v17 │ 00:11:53 v #14766 > > │ raise Exception(v11) │ 00:11:53 v #14767 > > │ else: │ 00:11:53 v #14768 > > │ del v11, v17 │ 00:11:53 v #14769 > > │ return │ 00:11:53 v #14770 > > │ def main_body(): │ 00:11:53 v #14771 > > │ return method0() │ 00:11:53 v #14772 > > │ │ 00:11:53 v #14773 > > │ def main(): │ 00:11:53 v #14774 > > │ r = main_body() │ 00:11:53 v #14775 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ 00:11:53 v #14776 > > │ so the `__trap()` calls on the kernel aren't missed. │ 00:11:53 v #14777 > > │ return r │ 00:11:53 v #14778 > > │ │ 00:11:53 v #14779 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:11:53 v #14780 > > │ print(result) │ 00:11:53 v #14781 > > │ │ 00:11:53 v #14782 > > │ .fsx output: │ 00:11:53 v #14783 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:53 v #14784 > > │ │ 00:11:53 v #14785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:53 v #14786 > > 00:11:53 v #14787 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:53 v #14788 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:53 v #14789 > > │ ### join_body_unit │ 00:11:53 v #14790 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:53 v #14791 > > 00:11:53 v #14792 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:53 v #14793 > > inl join_body_unit body d x = 00:11:53 v #14794 > > if var_is d |> not 00:11:53 v #14795 > > then body x 00:11:53 v #14796 > > else 00:11:53 v #14797 > > inl x = dyn x 00:11:53 v #14798 > > join body x 00:11:54 v #14799 > > 00:11:54 v #14800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:54 v #14801 > > //// test 00:11:54 v #14802 > > ///! fsharp 00:11:54 v #14803 > > ///! cuda 00:11:54 v #14804 > > ///! rust 00:11:54 v #14805 > > ///! typescript 00:11:54 v #14806 > > ///! python 00:11:54 v #14807 > > //// print_code=true 00:11:54 v #14808 > > 00:11:54 v #14809 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:11:54 v #14810 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0 00:11:54 v #14811 > > |> _assert_eq 15 00:11:57 v #14812 > > 00:11:57 v #14813 > > ╭─[ 3.52s - return value ]─────────────────────────────────────────────────────╮ 00:11:57 v #14814 > > │ .py output (Cuda): │ 00:11:57 v #14815 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:57 v #14816 > > │ │ 00:11:57 v #14817 > > │ .rs output: │ 00:11:57 v #14818 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:57 v #14819 > > │ │ 00:11:57 v #14820 > > │ .ts output: │ 00:11:57 v #14821 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:57 v #14822 > > │ │ 00:11:57 v #14823 > > │ .py output: │ 00:11:57 v #14824 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:57 v #14825 > > │ │ 00:11:57 v #14826 > > │ │ 00:11:57 v #14827 > > │ │ 00:11:57 v #14828 > > │ │ 00:11:57 v #14829 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:57 v #14830 > > 00:11:57 v #14831 > > ╭─[ 3.52s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:57 v #14832 > > │ .fsx: │ 00:11:57 v #14833 > > │ let rec method1 () : int32 = │ 00:11:57 v #14834 > > │ 3 │ 00:11:57 v #14835 > > │ and method2 (v0 : int32) : int32 = │ 00:11:57 v #14836 > > │ let v1 : int32 = 9 + v0 │ 00:11:57 v #14837 > > │ v1 │ 00:11:57 v #14838 > > │ and method3 (v0 : bool) : bool = │ 00:11:57 v #14839 > > │ v0 │ 00:11:57 v #14840 > > │ and closure0 (v0 : string) () : unit = │ 00:11:57 v #14841 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:11:57 v #14842 > > │ v1 v0 │ 00:11:57 v #14843 > > │ and method0 () : unit = │ 00:11:57 v #14844 > > │ let v0 : int32 = method1() │ 00:11:57 v #14845 > > │ let v1 : int32 = method2(v0) │ 00:11:57 v #14846 > > │ let v2 : int32 = v1 + 2 │ 00:11:57 v #14847 > > │ let v3 : int32 = v2 + 1 │ 00:11:57 v #14848 > > │ let v4 : bool = v3 = 15 │ 00:11:57 v #14849 > > │ let v6 : bool = │ 00:11:57 v #14850 > > │ if v4 then │ 00:11:57 v #14851 > > │ true │ 00:11:57 v #14852 > > │ else │ 00:11:57 v #14853 > > │ method3(v4) │ 00:11:57 v #14854 > > │ let v7 : string = "__assert_eq" │ 00:11:57 v #14855 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}" │ 00:11:57 v #14856 > > │ let v11 : unit = () │ 00:11:57 v #14857 > > │ let v12 : (unit -> unit) = closure0(v8) │ 00:11:57 v #14858 > > │ let v13 : unit = (fun () -> v12 (); v11) () │ 00:11:57 v #14859 > > │ let v15 : bool = v6 = false │ 00:11:57 v #14860 > > │ if v15 then │ 00:11:57 v #14861 > > │ failwith<unit> v8 │ 00:11:57 v #14862 > > │ method0() │ 00:11:57 v #14863 > > │ │ 00:11:57 v #14864 > > │ │ 00:11:57 v #14865 > > │ .rs: │ 00:11:57 v #14866 > > │ #![allow(dead_code)] │ 00:11:57 v #14867 > > │ #![allow(non_camel_case_types)] │ 00:11:57 v #14868 > > │ #![allow(non_snake_case)] │ 00:11:57 v #14869 > > │ #![allow(non_upper_case_globals)] │ 00:11:57 v #14870 > > │ #![allow(unreachable_code)] │ 00:11:57 v #14871 > > │ #![allow(unused_attributes)] │ 00:11:57 v #14872 > > │ #![allow(unused_imports)] │ 00:11:57 v #14873 > > │ #![allow(unused_macros)] │ 00:11:57 v #14874 > > │ #![allow(unused_parens)] │ 00:11:57 v #14875 > > │ #![allow(unused_variables)] │ 00:11:57 v #14876 > > │ #![allow(unused_assignments)] │ 00:11:57 v #14877 > > │ mod module_e782e7b7 { │ 00:11:57 v #14878 > > │ pub mod Spiral_builder { │ 00:11:57 v #14879 > > │ use super::*; │ 00:11:57 v #14880 > > │ use fable_library_rust::Native_::on_startup; │ 00:11:57 v #14881 > > │ use fable_library_rust::String_::printfn; │ 00:11:57 v #14882 > > │ use fable_library_rust::String_::sprintf; │ 00:11:57 v #14883 > > │ use fable_library_rust::String_::string; │ 00:11:57 v #14884 > > │ pub fn method1() -> i32 { │ 00:11:57 v #14885 > > │ 3_i32 │ 00:11:57 v #14886 > > │ } │ 00:11:57 v #14887 > > │ pub fn method2(v0: i32) -> i32 { │ 00:11:57 v #14888 > > │ 9_i32 + (v0) │ 00:11:57 v #14889 > > │ } │ 00:11:57 v #14890 > > │ pub fn method3(v0: bool) -> bool { │ 00:11:57 v #14891 > > │ v0 │ 00:11:57 v #14892 > > │ } │ 00:11:57 v #14893 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:11:57 v #14894 > > │ printfn!("{0}", v0); │ 00:11:57 v #14895 > > │ } │ 00:11:57 v #14896 > > │ pub fn method0() { │ 00:11:57 v #14897 > > │ let v3: i32 = │ 00:11:57 v #14898 > > │ ((Spiral_builder::method2(Spiral_builder::method1())) + 2_i32) + 1_i32; │ 00:11:57 v #14899 > > │ let v4: bool = (v3) == 15_i32; │ 00:11:57 v #14900 > > │ let v6: bool = if v4 { │ 00:11:57 v #14901 > > │ true │ 00:11:57 v #14902 > > │ } else { │ 00:11:57 v #14903 > > │ Spiral_builder::method3(v4) │ 00:11:57 v #14904 > > │ }; │ 00:11:57 v #14905 > > │ let v8: string = sprintf!( │ 00:11:57 v #14906 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:11:57 v #14907 > > │ string("__assert_eq"), │ 00:11:57 v #14908 > > │ v3, │ 00:11:57 v #14909 > > │ 15_i32 │ 00:11:57 v #14910 > > │ ); │ 00:11:57 v #14911 > > │ let v13: () = { │ 00:11:57 v #14912 > > │ Spiral_builder::closure0(v8.clone(), ()); │ 00:11:57 v #14913 > > │ () │ 00:11:57 v #14914 > > │ }; │ 00:11:57 v #14915 > > │ if (v6) == false { │ 00:11:57 v #14916 > > │ panic!("{}", v8,); │ 00:11:57 v #14917 > > │ } │ 00:11:57 v #14918 > > │ } │ 00:11:57 v #14919 > > │ // on_startup!(Spiral_builder::method0()); │ 00:11:57 v #14920 > > │ } │ 00:11:57 v #14921 > > │ } │ 00:11:57 v #14922 > > │ pub use module_e782e7b7::*; │ 00:11:57 v #14923 > > │ │ 00:11:57 v #14924 > > │ pub fn main() -> Result<(), String> { │ 00:11:57 v #14925 > > │ Ok(Spiral_builder::method0()) │ 00:11:57 v #14926 > > │ } │ 00:11:57 v #14927 > > │ │ 00:11:57 v #14928 > > │ .ts: │ 00:11:57 v #14929 > > │ import { int32 } from │ 00:11:57 v #14930 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; │ 00:11:57 v #14931 > > │ import { interpolate, toText } from │ 00:11:57 v #14932 > > │ "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; │ 00:11:57 v #14933 > > │ │ 00:11:57 v #14934 > > │ export function method1(): int32 { │ 00:11:57 v #14935 > > │ return 3; │ 00:11:57 v #14936 > > │ } │ 00:11:57 v #14937 > > │ │ 00:11:57 v #14938 > > │ export function method2(v0: int32): int32 { │ 00:11:57 v #14939 > > │ return 9 + v0; │ 00:11:57 v #14940 > > │ } │ 00:11:57 v #14941 > > │ │ 00:11:57 v #14942 > > │ export function method3(v0: boolean): boolean { │ 00:11:57 v #14943 > > │ return v0; │ 00:11:57 v #14944 > > │ } │ 00:11:57 v #14945 > > │ │ 00:11:57 v #14946 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:11:57 v #14947 > > │ console.log(v0); │ 00:11:57 v #14948 > > │ } │ 00:11:57 v #14949 > > │ │ 00:11:57 v #14950 > > │ export function method0(): void { │ 00:11:57 v #14951 > > │ const v3: int32 = ((method2(method1()) + 2) + 1) | 0; │ 00:11:57 v #14952 > > │ const v4: boolean = v3 === 15; │ 00:11:57 v #14953 > > │ const v6: boolean = v4 ? true : method3(v4); │ 00:11:57 v #14954 > > │ const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:11:57 v #14955 > > │ %A%P()", ["__assert_eq", v3, 15])); │ 00:11:57 v #14956 > > │ let v13: any; │ 00:11:57 v #14957 > > │ closure0(v8, undefined); │ 00:11:57 v #14958 > > │ v13 = undefined; │ 00:11:57 v #14959 > > │ if (v6 === false) { │ 00:11:57 v #14960 > > │ throw new Error(v8); │ 00:11:57 v #14961 > > │ } │ 00:11:57 v #14962 > > │ } │ 00:11:57 v #14963 > > │ │ 00:11:57 v #14964 > > │ method0(); │ 00:11:57 v #14965 > > │ │ 00:11:57 v #14966 > > │ │ 00:11:57 v #14967 > > │ │ 00:11:57 v #14968 > > │ // spiral_builder.process_typescript │ 00:11:57 v #14969 > > │ │ 00:11:57 v #14970 > > │ .py: │ 00:11:57 v #14971 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:11:57 v #14972 > > │ │ 00:11:57 v #14973 > > │ def method1(__unit: None=None) -> int: │ 00:11:57 v #14974 > > │ return 3 │ 00:11:57 v #14975 > > │ │ 00:11:57 v #14976 > > │ │ 00:11:57 v #14977 > > │ def method2(v0: int) -> int: │ 00:11:57 v #14978 > > │ return 9 + v0 │ 00:11:57 v #14979 > > │ │ 00:11:57 v #14980 > > │ │ 00:11:57 v #14981 > > │ def method3(v0: bool) -> bool: │ 00:11:57 v #14982 > > │ return v0 │ 00:11:57 v #14983 > > │ │ 00:11:57 v #14984 > > │ │ 00:11:57 v #14985 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:11:57 v #14986 > > │ print(v0) │ 00:11:57 v #14987 > > │ │ 00:11:57 v #14988 > > │ │ 00:11:57 v #14989 > > │ def method0(__unit: None=None) -> None: │ 00:11:57 v #14990 > > │ v3: int = ((method2(method1()) + 2) + 1) or 0 │ 00:11:57 v #14991 > > │ v4: bool = v3 == 15 │ 00:11:57 v #14992 > > │ v6: bool = True if v4 else method3(v4) │ 00:11:57 v #14993 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:11:57 v #14994 > > │ %A%P()", ["__assert_eq", v3, 15])) │ 00:11:57 v #14995 > > │ v13: None │ 00:11:57 v #14996 > > │ closure0(v8, None) │ 00:11:57 v #14997 > > │ v13 = None │ 00:11:57 v #14998 > > │ if v6 == False: │ 00:11:57 v #14999 > > │ raise Exception(v8) │ 00:11:57 v #15000 > > │ │ 00:11:57 v #15001 > > │ │ 00:11:57 v #15002 > > │ │ 00:11:57 v #15003 > > │ method0() │ 00:11:57 v #15004 > > │ │ 00:11:57 v #15005 > > │ │ 00:11:57 v #15006 > > │ │ 00:11:57 v #15007 > > │ # spiral_builder.process_python │ 00:11:57 v #15008 > > │ │ 00:11:57 v #15009 > > │ .py (Cuda): │ 00:11:57 v #15010 > > │ kernel = r""" │ 00:11:57 v #15011 > > │ """ │ 00:11:57 v #15012 > > │ class static_array(): │ 00:11:57 v #15013 > > │ def __init__(self, length): │ 00:11:57 v #15014 > > │ self.ptr = [] │ 00:11:57 v #15015 > > │ for _ in range(length): │ 00:11:57 v #15016 > > │ self.ptr.append(None) │ 00:11:57 v #15017 > > │ │ 00:11:57 v #15018 > > │ def __getitem__(self, index): │ 00:11:57 v #15019 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:11:57 v #15020 > > │ range." │ 00:11:57 v #15021 > > │ return self.ptr[index] │ 00:11:57 v #15022 > > │ │ 00:11:57 v #15023 > > │ def __setitem__(self, index, value): │ 00:11:57 v #15024 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:11:57 v #15025 > > │ range." │ 00:11:57 v #15026 > > │ self.ptr[index] = value │ 00:11:57 v #15027 > > │ │ 00:11:57 v #15028 > > │ class static_array_list(static_array): │ 00:11:57 v #15029 > > │ def __init__(self, length): │ 00:11:57 v #15030 > > │ super().__init__(length) │ 00:11:57 v #15031 > > │ self.length = 0 │ 00:11:57 v #15032 > > │ │ 00:11:57 v #15033 > > │ def __getitem__(self, index): │ 00:11:57 v #15034 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:11:57 v #15035 > > │ range." │ 00:11:57 v #15036 > > │ return self.ptr[index] │ 00:11:57 v #15037 > > │ │ 00:11:57 v #15038 > > │ def __setitem__(self, index, value): │ 00:11:57 v #15039 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:11:57 v #15040 > > │ range." │ 00:11:57 v #15041 > > │ self.ptr[index] = value │ 00:11:57 v #15042 > > │ │ 00:11:57 v #15043 > > │ def push(self,value): │ 00:11:57 v #15044 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:11:57 v #15045 > > │ to be less than the maximum length of the array." │ 00:11:57 v #15046 > > │ self.ptr[self.length] = value │ 00:11:57 v #15047 > > │ self.length += 1 │ 00:11:57 v #15048 > > │ │ 00:11:57 v #15049 > > │ def pop(self): │ 00:11:57 v #15050 > > │ assert (0 < self.length), "The length before popping has to be │ 00:11:57 v #15051 > > │ greater than 0." │ 00:11:57 v #15052 > > │ self.length -= 1 │ 00:11:57 v #15053 > > │ return self.ptr[self.length] │ 00:11:57 v #15054 > > │ │ 00:11:57 v #15055 > > │ def unsafe_set_length(self,i): │ 00:11:57 v #15056 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:11:57 v #15057 > > │ self.length = i │ 00:11:57 v #15058 > > │ │ 00:11:57 v #15059 > > │ class dynamic_array(static_array): │ 00:11:57 v #15060 > > │ pass │ 00:11:57 v #15061 > > │ │ 00:11:57 v #15062 > > │ class dynamic_array_list(static_array_list): │ 00:11:57 v #15063 > > │ def length_(self): return self.length │ 00:11:57 v #15064 > > │ │ 00:11:57 v #15065 > > │ import cupy as cp │ 00:11:57 v #15066 > > │ import numpy as np │ 00:11:57 v #15067 > > │ from dataclasses import dataclass │ 00:11:57 v #15068 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:11:57 v #15069 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; │ 00:11:57 v #15070 > > │ u64 = int; f32 = float; f64 = float; char = str; string = str │ 00:11:57 v #15071 > > │ cuda = False │ 00:11:57 v #15072 > > │ │ 00:11:57 v #15073 > > │ def method1() -> i32: │ 00:11:57 v #15074 > > │ return 3 │ 00:11:57 v #15075 > > │ def method2(v0 : i32) -> i32: │ 00:11:57 v #15076 > > │ v1 = 9 + v0 │ 00:11:57 v #15077 > > │ del v0 │ 00:11:57 v #15078 > > │ return v1 │ 00:11:57 v #15079 > > │ def method3(v0 : bool) -> bool: │ 00:11:57 v #15080 > > │ return v0 │ 00:11:57 v #15081 > > │ def method0() -> None: │ 00:11:57 v #15082 > > │ v0 = method1() │ 00:11:57 v #15083 > > │ v1 = method2(v0) │ 00:11:57 v #15084 > > │ del v0 │ 00:11:57 v #15085 > > │ v2 = v1 + 2 │ 00:11:57 v #15086 > > │ del v1 │ 00:11:57 v #15087 > > │ v3 = v2 + 1 │ 00:11:57 v #15088 > > │ del v2 │ 00:11:57 v #15089 > > │ v4 = v3 == 15 │ 00:11:57 v #15090 > > │ if v4: │ 00:11:57 v #15091 > > │ v6 = True │ 00:11:57 v #15092 > > │ else: │ 00:11:57 v #15093 > > │ v6 = method3(v4) │ 00:11:57 v #15094 > > │ del v4 │ 00:11:57 v #15095 > > │ v9 = "__assert_eq" │ 00:11:57 v #15096 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:11:57 v #15097 > > │ del v3, v9 │ 00:11:57 v #15098 > > │ print(v10) │ 00:11:57 v #15099 > > │ v16 = v6 == False │ 00:11:57 v #15100 > > │ del v6 │ 00:11:57 v #15101 > > │ if v16: │ 00:11:57 v #15102 > > │ del v16 │ 00:11:57 v #15103 > > │ raise Exception(v10) │ 00:11:57 v #15104 > > │ else: │ 00:11:57 v #15105 > > │ del v10, v16 │ 00:11:57 v #15106 > > │ return │ 00:11:57 v #15107 > > │ def main_body(): │ 00:11:57 v #15108 > > │ return method0() │ 00:11:57 v #15109 > > │ │ 00:11:57 v #15110 > > │ def main(): │ 00:11:57 v #15111 > > │ r = main_body() │ 00:11:57 v #15112 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # This line is here │ 00:11:57 v #15113 > > │ so the `__trap()` calls on the kernel aren't missed. │ 00:11:57 v #15114 > > │ return r │ 00:11:57 v #15115 > > │ │ 00:11:57 v #15116 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:11:57 v #15117 > > │ print(result) │ 00:11:57 v #15118 > > │ │ 00:11:57 v #15119 > > │ .fsx output: │ 00:11:57 v #15120 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:11:57 v #15121 > > │ │ 00:11:57 v #15122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:57 v #15123 > > 00:11:57 v #15124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:57 v #15125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:57 v #15126 > > │ ### retry_fn' │ 00:11:57 v #15127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:57 v #15128 > > 00:11:57 v #15129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:57 v #15130 > > inl retry_fn' retries fn = 00:11:57 v #15131 > > let rec loop retry = 00:11:57 v #15132 > > inl is_error, result = 00:11:57 v #15133 > > match fn () with 00:11:57 v #15134 > > | Ok x => false, x 00:11:57 v #15135 > > | Error x => true, x 00:11:57 v #15136 > > if not is_error || retry >= retries 00:11:57 v #15137 > > then result 00:11:57 v #15138 > > else 00:11:57 v #15139 > > trace Debug 00:11:57 v #15140 > > fun () => "common.retry_fn\' / loop" 00:11:57 v #15141 > > fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string; 00:11:57 v #15142 > > result } 00:11:57 v #15143 > > loop (retry + 1) 00:11:57 v #15144 > > loop 1 00:11:58 v #15145 > > 00:11:58 v #15146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:58 v #15147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:58 v #15148 > > │ ## fsharp │ 00:11:58 v #15149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:58 v #15150 > > 00:11:58 v #15151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:58 v #15152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:58 v #15153 > > │ ### upcast │ 00:11:58 v #15154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:58 v #15155 > > 00:11:58 v #15156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:58 v #15157 > > inl upcast forall t u. (x : t) : u = 00:11:58 v #15158 > > $'!x :> `u ' 00:11:58 v #15159 > > 00:11:58 v #15160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:58 v #15161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:58 v #15162 > > │ ### downcast │ 00:11:58 v #15163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:58 v #15164 > > 00:11:58 v #15165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:58 v #15166 > > inl downcast forall t u. (x : t) : u = 00:11:58 v #15167 > > $'!x :?> `u ' 00:11:59 v #15168 > > 00:11:59 v #15169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:59 v #15170 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:59 v #15171 > > │ ### random │ 00:11:59 v #15172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:59 v #15173 > > 00:11:59 v #15174 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:59 v #15175 > > nominal random = $'System.Random' 00:11:59 v #15176 > > 00:11:59 v #15177 > > inl random () : random = 00:11:59 v #15178 > > $'`random ' () 00:11:59 v #15179 > > 00:11:59 v #15180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:59 v #15181 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:59 v #15182 > > │ ### random_next │ 00:11:59 v #15183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:59 v #15184 > > 00:11:59 v #15185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:59 v #15186 > > inl random_next (min : i32) (max : i32) (random : random) : i32 = 00:11:59 v #15187 > > $'!random.Next (!min, !max)' 00:11:59 v #15188 > > 00:11:59 v #15189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:59 v #15190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:59 v #15191 > > │ ### disposable │ 00:11:59 v #15192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:59 v #15193 > > 00:11:59 v #15194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:59 v #15195 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable'; 00:11:59 v #15196 > > Python : $'object' })" 00:12:00 v #15197 > > 00:12:00 v #15198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:00 v #15199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:00 v #15200 > > │ ### dispose │ 00:12:00 v #15201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:00 v #15202 > > 00:12:00 v #15203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:00 v #15204 > > inl dispose (disposable : disposable _) : () = 00:12:00 v #15205 > > backend_switch { 00:12:00 v #15206 > > Fsharp = fun () => disposable |> $'_.Dispose()' : () 00:12:00 v #15207 > > Python = fun () => $'!disposable.__exit__(None, None, None)' : () 00:12:00 v #15208 > > } 00:12:00 v #15209 > > 00:12:00 v #15210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:00 v #15211 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:00 v #15212 > > │ ### yield │ 00:12:00 v #15213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:00 v #15214 > > 00:12:00 v #15215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:00 v #15216 > > inl yield forall t. (x : t) : () = 00:12:00 v #15217 > > $'yield !x ' 00:12:01 v #15218 > > 00:12:01 v #15219 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:01 v #15220 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:01 v #15221 > > │ ### return │ 00:12:01 v #15222 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 v #15223 > > 00:12:01 v #15224 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:01 v #15225 > > inl return forall t. (x : t) : () = 00:12:01 v #15226 > > $'return !x ' 00:12:01 v #15227 > > 00:12:01 v #15228 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:01 v #15229 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:01 v #15230 > > │ ### return' │ 00:12:01 v #15231 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 v #15232 > > 00:12:01 v #15233 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:01 v #15234 > > inl return' forall t. (x : t) : t = 00:12:01 v #15235 > > $'return !x ' 00:12:02 v #15236 > > 00:12:02 v #15237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:02 v #15238 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:02 v #15239 > > │ ### retry_fn │ 00:12:02 v #15240 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:02 v #15241 > > 00:12:02 v #15242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:02 v #15243 > > inl retry_fn forall t. retries (fn : () -> t) : option t = 00:12:02 v #15244 > > let rec loop retry = 00:12:02 v #15245 > > try 00:12:02 v #15246 > > fun () => 00:12:02 v #15247 > > if retry < retries 00:12:02 v #15248 > > then fn () |> Some 00:12:02 v #15249 > > else None 00:12:02 v #15250 > > fun ex => 00:12:02 v #15251 > > trace Warning 00:12:02 v #15252 > > fun () => "common.retry_fn" 00:12:02 v #15253 > > fun () => { retry ex } 00:12:02 v #15254 > > None 00:12:02 v #15255 > > |> function 00:12:02 v #15256 > > | Some x => x 00:12:02 v #15257 > > | None => loop (retry + 1) 00:12:02 v #15258 > > loop 0 00:12:02 v #15259 > > 00:12:02 v #15260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:02 v #15261 > > //// test 00:12:02 v #15262 > > ///! fsharp 00:12:02 v #15263 > > ///! cuda 00:12:02 v #15264 > > ///! rust 00:12:02 v #15265 > > ///! typescript 00:12:02 v #15266 > > ///! python 00:12:02 v #15267 > > 00:12:02 v #15268 > > inl retry_fn_test = mut 0i32 00:12:02 v #15269 > > fun () => 00:12:02 v #15270 > > retry_fn_test <- *retry_fn_test + 1 00:12:02 v #15271 > > *retry_fn_test 00:12:02 v #15272 > > |> retry_fn 3i32 00:12:02 v #15273 > > |> _assert_eq' (Some 1i32) 00:12:07 v #15274 > > 00:12:07 v #15275 > > ╭─[ 4.92s - return value ]─────────────────────────────────────────────────────╮ 00:12:07 v #15276 > > │ .py output (Cuda): │ 00:12:07 v #15277 > > │ __assert_eq' / actual: US0_0(v0=1) / expected: US0_0(v0=1) │ 00:12:07 v #15278 > > │ │ 00:12:07 v #15279 > > │ .rs output: │ 00:12:07 v #15280 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1) │ 00:12:07 v #15281 > > │ │ 00:12:07 v #15282 > > │ .ts output: │ 00:12:07 v #15283 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:12:07 v #15284 > > │ │ 00:12:07 v #15285 > > │ .py output: │ 00:12:07 v #15286 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:12:07 v #15287 > > │ │ 00:12:07 v #15288 > > │ │ 00:12:07 v #15289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:07 v #15290 > > 00:12:07 v #15291 > > ╭─[ 4.92s - stdout ]───────────────────────────────────────────────────────────╮ 00:12:07 v #15292 > > │ .fsx output: │ 00:12:07 v #15293 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:12:07 v #15294 > > │ │ 00:12:07 v #15295 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:07 v #15296 > > 00:12:07 v #15297 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:07 v #15298 > > //// test 00:12:07 v #15299 > > ///! fsharp 00:12:07 v #15300 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}" 00:12:07 v #15301 > > ///! rust 00:12:07 v #15302 > > ///! typescript 00:12:07 v #15303 > > ///! python 00:12:07 v #15304 > > 00:12:07 v #15305 > > inl retry_fn_test = mut 0i32 00:12:07 v #15306 > > fun () => 00:12:07 v #15307 > > if *retry_fn_test >= 2 00:12:07 v #15308 > > then *retry_fn_test 00:12:07 v #15309 > > else 00:12:07 v #15310 > > retry_fn_test <- *retry_fn_test + 1 00:12:07 v #15311 > > failwith "test" 00:12:07 v #15312 > > |> retry_fn 3i32 00:12:07 v #15313 > > |> _assert_eq' (Some 2i32) 00:12:11 v #15314 > > 00:12:11 v #15315 > > ╭─[ 3.66s - return value ]─────────────────────────────────────────────────────╮ 00:12:11 v #15316 > > │ │ 00:12:11 v #15317 > > │ .rs output: │ 00:12:11 v #15318 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Exception { │ 00:12:11 v #15319 > > │ message: "test", │ 00:12:11 v #15320 > > │ } } │ 00:12:11 v #15321 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Exception { │ 00:12:11 v #15322 > > │ message: "test", │ 00:12:11 v #15323 > > │ } } │ 00:12:11 v #15324 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2) │ 00:12:11 v #15325 > > │ │ 00:12:11 v #15326 > > │ │ 00:12:11 v #15327 > > │ .ts output: │ 00:12:11 v #15328 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Error: test } │ 00:12:11 v #15329 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Error: test } │ 00:12:11 v #15330 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:12:11 v #15331 > > │ │ 00:12:11 v #15332 > > │ │ 00:12:11 v #15333 > > │ .py output: │ 00:12:11 v #15334 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = test } │ 00:12:11 v #15335 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = test } │ 00:12:11 v #15336 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:12:11 v #15337 > > │ │ 00:12:11 v #15338 > > │ │ 00:12:11 v #15339 > > │ │ 00:12:11 v #15340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:11 v #15341 > > 00:12:11 v #15342 > > ╭─[ 3.66s - stdout ]───────────────────────────────────────────────────────────╮ 00:12:11 v #15343 > > │ .fsx output: │ 00:12:11 v #15344 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = System.Exception: │ 00:12:11 v #15345 > > │ test │ 00:12:11 v #15346 > > │ at FSI_0026.closure1(Mut0 v0, Int32 v1, Unit unitVar2) │ 00:12:11 v #15347 > > │ at FSI_0026.method1(Mut0 v0, Int32 v1) } │ 00:12:11 v #15348 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = System.Exception: │ 00:12:11 v #15349 > > │ test │ 00:12:11 v #15350 > > │ at FSI_0026.closure1(Mut0 v0, Int32 v1, Unit unitVar2) │ 00:12:11 v #15351 > > │ at FSI_0026.method1(Mut0 v0, Int32 v1) } │ 00:12:11 v #15352 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:12:11 v #15353 > > │ │ 00:12:11 v #15354 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:11 v #15355 > > 00:12:11 v #15356 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:11 v #15357 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:11 v #15358 > > │ ## common │ 00:12:11 v #15359 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:11 v #15360 > > 00:12:11 v #15361 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:11 v #15362 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:11 v #15363 > > │ ### random' │ 00:12:11 v #15364 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:11 v #15365 > > 00:12:11 v #15366 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:11 v #15367 > > inl random' forall t. (min : t) (max : t) : t = 00:12:11 v #15368 > > run_target function 00:12:11 v #15369 > > | Rust (Contract) => fun () => 00:12:11 v #15370 > > failwith "common.random' / target=Rust(Contract)" 00:12:11 v #15371 > > | Rust _ => fun () => 00:12:11 v #15372 > > open rust.rust_operators 00:12:11 v #15373 > > !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(), 00:12:11 v #15374 > > $0..$1)"') 00:12:11 v #15375 > > | _ => fun () => 00:12:11 v #15376 > > random () |> random_next (i32 min) (i32 max) |> convert 00:12:11 v #15377 > > 00:12:11 v #15378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:11 v #15379 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:11 v #15380 > > │ ### new_disposable │ 00:12:11 v #15381 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:11 v #15382 > > 00:12:11 v #15383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:11 v #15384 > > inl new_disposable (fn : () -> ()) : disposable _ = 00:12:11 v #15385 > > run_target function 00:12:11 v #15386 > > | Rust _ => fun () => 00:12:11 v #15387 > > global "type Disposable (f : unit -> unit) = interface 00:12:11 v #15388 > > System.IDisposable with member _.Dispose () = f ()" 00:12:11 v #15389 > > inl fn = join fn 00:12:11 v #15390 > > $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn 00:12:11 v #15391 > > "$0()" )' 00:12:11 v #15392 > > | Fsharp _ | TypeScript _ | Python _ => fun () => 00:12:11 v #15393 > > inl fn = join fn 00:12:11 v #15394 > > $'{ new System.IDisposable with member _.Dispose () = !fn () }' 00:12:11 v #15395 > > | Cuda _ => fun () => 00:12:11 v #15396 > > $'class Disposable:' 00:12:11 v #15397 > > $' def __init__(self, fn):' 00:12:11 v #15398 > > $' self.fn = fn' 00:12:11 v #15399 > > $' def __exit__(self, exc_type, exc_value, traceback):' 00:12:11 v #15400 > > $' self.fn()' 00:12:11 v #15401 > > $' return False' 00:12:11 v #15402 > > $'Disposable(!fn)' 00:12:11 v #15403 > > | _ => fun () => null () 00:12:12 v #15404 > > 00:12:12 v #15405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:12 v #15406 > > //// test 00:12:12 v #15407 > > ///! fsharp 00:12:12 v #15408 > > ///! cuda 00:12:12 v #15409 > > ///! rust 00:12:12 v #15410 > > ///! typescript 00:12:12 v #15411 > > ///! python 00:12:12 v #15412 > > 00:12:12 v #15413 > > inl new_disposable_test = mut 0i32 00:12:12 v #15414 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:12 v #15415 > > |> fun x => x : disposable () 00:12:12 v #15416 > > |> dispose 00:12:12 v #15417 > > *new_disposable_test |> _assert_eq 1 00:12:15 v #15418 > > 00:12:15 v #15419 > > ╭─[ 3.68s - return value ]─────────────────────────────────────────────────────╮ 00:12:15 v #15420 > > │ .py output (Cuda): │ 00:12:15 v #15421 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:15 v #15422 > > │ │ 00:12:15 v #15423 > > │ .rs output: │ 00:12:15 v #15424 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:15 v #15425 > > │ │ 00:12:15 v #15426 > > │ .ts output: │ 00:12:15 v #15427 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:15 v #15428 > > │ │ 00:12:15 v #15429 > > │ .py output: │ 00:12:15 v #15430 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:15 v #15431 > > │ │ 00:12:15 v #15432 > > │ │ 00:12:15 v #15433 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:15 v #15434 > > 00:12:15 v #15435 > > ╭─[ 3.68s - stdout ]───────────────────────────────────────────────────────────╮ 00:12:15 v #15436 > > │ .fsx output: │ 00:12:15 v #15437 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:15 v #15438 > > │ │ 00:12:15 v #15439 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:15 v #15440 > > 00:12:15 v #15441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:15 v #15442 > > //// test 00:12:15 v #15443 > > 00:12:15 v #15444 > > inl new_disposable_test = mut 0i32 00:12:15 v #15445 > > fun () => 00:12:15 v #15446 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:15 v #15447 > > |> fun x => x : disposable () 00:12:15 v #15448 > > |> use 00:12:15 v #15449 > > |> ignore 00:12:15 v #15450 > > |> return 00:12:15 v #15451 > > |> async.new_task 00:12:15 v #15452 > > |> async.await_task 00:12:15 v #15453 > > |> async.run_synchronously 00:12:15 v #15454 > > *new_disposable_test |> _assert_eq 1 00:12:16 v #15455 > > 00:12:16 v #15456 > > ╭─[ 640.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:12:16 v #15457 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:16 v #15458 > > │ │ 00:12:16 v #15459 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:16 v #15460 > > 00:12:16 v #15461 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:16 v #15462 > > //// test 00:12:16 v #15463 > > 00:12:16 v #15464 > > inl new_disposable_test = mut 0i32 00:12:16 v #15465 > > fun () => 00:12:16 v #15466 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:16 v #15467 > > |> fun x => x : disposable () 00:12:16 v #15468 > > |> use 00:12:16 v #15469 > > |> ignore 00:12:16 v #15470 > > |> return 00:12:16 v #15471 > > |> async.new_async 00:12:16 v #15472 > > |> async.run_synchronously 00:12:16 v #15473 > > *new_disposable_test |> _assert_eq 1 00:12:16 v #15474 > > 00:12:16 v #15475 > > ╭─[ 612.60ms - stdout ]────────────────────────────────────────────────────────╮ 00:12:16 v #15476 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:12:16 v #15477 > > │ │ 00:12:16 v #15478 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:16 v #15479 > > 00:12:16 v #15480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:16 v #15481 > > //// test 00:12:16 v #15482 > > 00:12:16 v #15483 > > inl new_disposable_test = mut 0i32 00:12:16 v #15484 > > fun () => 00:12:16 v #15485 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:16 v #15486 > > |> fun x => x : disposable () 00:12:16 v #15487 > > |> ignore 00:12:16 v #15488 > > |> return 00:12:16 v #15489 > > |> async.new_async 00:12:16 v #15490 > > |> async.run_synchronously 00:12:16 v #15491 > > *new_disposable_test |> _assert_eq 0 00:12:17 v #15492 > > 00:12:17 v #15493 > > ╭─[ 569.02ms - stdout ]────────────────────────────────────────────────────────╮ 00:12:17 v #15494 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:12:17 v #15495 > > │ │ 00:12:17 v #15496 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:17 v #15497 > > 00:12:17 v #15498 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #15499 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:17 v #15500 > > │ ## main │ 00:12:17 v #15501 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:17 v #15502 > > 00:12:17 v #15503 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:17 v #15504 > > inl main () = 00:12:17 v #15505 > > init_trace_state None 00:12:17 v #15506 > > inl new_disposable x : _ () = new_disposable x 00:12:17 v #15507 > > $'let new_disposable x = !new_disposable x' : () 00:12:17 v #15508 > > inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |> 00:12:17 v #15509 > > optionm'.box 00:12:17 v #15510 > > $'let retry_fn x = !retry_fn x' : () 00:12:17 v #15511 > > inl memoize (fn : () -> ()) : () -> () = memoize fn 00:12:17 v #15512 > > $'let memoize x = !memoize x' : () 00:12:18 v #15513 > 00:00:39 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 95907 } 00:12:18 v #15514 > 00:00:39 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:19 v #15515 > 00:00:40 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/common.dib.ipynb to html 00:12:19 v #15516 > 00:00:40 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:12:19 v #15517 > 00:00:40 v #7 ! validate(nb) 00:12:20 v #15518 > 00:00:41 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:12:20 v #15519 > 00:00:41 v #9 ! return _pygments_highlight( 00:12:20 v #15520 > 00:00:41 v #10 ! [NbConvertApp] Writing 352806 bytes to c:\home\git\polyglot\lib\spiral\common.dib.html 00:12:20 v #15521 > 00:00:41 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:12:20 v #15522 > 00:00:41 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:12:20 v #15523 > 00:00:41 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:21 v #15524 > 00:00:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:12:21 v #15525 > 00:00:42 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:12:21 v #15526 > 00:00:42 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 96820 } 00:12:21 d #15527 runtime.execute_with_options_async / { exit_code = 0; output_length = 102177 } 00:12:21 d #14 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path common.dib --retries 3 00:12:21 d #15528 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path resultm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:21 v #15529 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) } 00:12:21 v #15530 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/resultm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/resultm.dib" --output-path "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:12:23 v #15531 > > 00:12:23 v #15532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:23 v #15533 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:23 v #15534 > > │ # resultm │ 00:12:23 v #15535 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:26 v #15536 > > 00:12:26 v #15537 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:26 v #15538 > > open rust 00:12:26 v #15539 > > open rust_operators 00:12:27 v #15540 > > 00:12:27 v #15541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:27 v #15542 > > //// test 00:12:27 v #15543 > > 00:12:27 v #15544 > > open testing 00:12:27 v #15545 > > 00:12:27 v #15546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:27 v #15547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:27 v #15548 > > │ ## resultm │ 00:12:27 v #15549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:27 v #15550 > > 00:12:27 v #15551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:27 v #15552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:27 v #15553 > > │ ### from_option_error │ 00:12:27 v #15554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:27 v #15555 > > 00:12:27 v #15556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:27 v #15557 > > inl from_option_error error opt = 00:12:27 v #15558 > > match opt with 00:12:27 v #15559 > > | Some x => Ok x 00:12:27 v #15560 > > | None => Error error 00:12:28 v #15561 > > 00:12:28 v #15562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:28 v #15563 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:28 v #15564 > > │ ### from_option │ 00:12:28 v #15565 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:28 v #15566 > > 00:12:28 v #15567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:28 v #15568 > > inl from_option opt = 00:12:28 v #15569 > > opt |> from_option_error "resultm.from_option / Option does not have a 00:12:28 v #15570 > > value." 00:12:28 v #15571 > > 00:12:28 v #15572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:28 v #15573 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:28 v #15574 > > │ ### flatten_option │ 00:12:28 v #15575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:28 v #15576 > > 00:12:28 v #15577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:28 v #15578 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result 00:12:28 v #15579 > > (option t) u = 00:12:28 v #15580 > > match x with 00:12:28 v #15581 > > | Some (Error x) => Error x 00:12:28 v #15582 > > | Some (Ok (Some x)) => Ok (Some x) 00:12:28 v #15583 > > | _ => Ok None 00:12:28 v #15584 > > 00:12:28 v #15585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:28 v #15586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:28 v #15587 > > │ ### flatten │ 00:12:28 v #15588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:28 v #15589 > > 00:12:28 v #15590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:28 v #15591 > > inl flatten forall t u. (x : result (result t u) u) : result t u = 00:12:28 v #15592 > > match x with 00:12:28 v #15593 > > | Ok x => x 00:12:28 v #15594 > > | Error x => Error x 00:12:29 v #15595 > > 00:12:29 v #15596 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:29 v #15597 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:29 v #15598 > > │ ### get │ 00:12:29 v #15599 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:29 v #15600 > > 00:12:29 v #15601 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:29 v #15602 > > inl get forall t e. (source : result t e) : t = 00:12:29 v #15603 > > match source with 00:12:29 v #15604 > > | Ok x => x 00:12:29 v #15605 > > | Error x => 00:12:29 v #15606 > > backend_switch { 00:12:29 v #15607 > > Fsharp = fun () => $'$"resultm.get / Result value was Error: {!x}"' 00:12:29 v #15608 > > : string 00:12:29 v #15609 > > Python = fun () => $'f"resultm.get / Result value was Error: {!x}"' 00:12:29 v #15610 > > : string 00:12:29 v #15611 > > } 00:12:29 v #15612 > > |> failwith 00:12:29 v #15613 > > 00:12:29 v #15614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:29 v #15615 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:29 v #15616 > > │ ### map │ 00:12:29 v #15617 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:29 v #15618 > > 00:12:29 v #15619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:29 v #15620 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e = 00:12:29 v #15621 > > match source with 00:12:29 v #15622 > > | Ok x => x |> fn |> Ok 00:12:29 v #15623 > > | Error x => Error x 00:12:30 v #15624 > > 00:12:30 v #15625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:30 v #15626 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:30 v #15627 > > │ ### map_error │ 00:12:30 v #15628 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:30 v #15629 > > 00:12:30 v #15630 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:30 v #15631 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u = 00:12:30 v #15632 > > match source with 00:12:30 v #15633 > > | Ok x => Ok x 00:12:30 v #15634 > > | Error x => x |> fn |> Error 00:12:30 v #15635 > > 00:12:30 v #15636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:30 v #15637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:30 v #15638 > > │ ### unwrap_err │ 00:12:30 v #15639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:30 v #15640 > > 00:12:30 v #15641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:30 v #15642 > > inl unwrap_err forall t u. (x : result t u) : u = 00:12:30 v #15643 > > match x with 00:12:30 v #15644 > > | Ok x => 00:12:30 v #15645 > > backend_switch { 00:12:30 v #15646 > > Fsharp = fun () => $'$"resultm.unwrap_err / x: {!x}"' : string 00:12:30 v #15647 > > Python = fun () => $'f"resultm.unwrap_err / x: {!x}"' : string 00:12:30 v #15648 > > } 00:12:30 v #15649 > > |> failwith 00:12:30 v #15650 > > | Error x => x 00:12:31 v #15651 > > 00:12:31 v #15652 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:31 v #15653 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:31 v #15654 > > │ ### ok │ 00:12:31 v #15655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:31 v #15656 > > 00:12:31 v #15657 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:31 v #15658 > > inl ok forall t. (x : result t _) : option t = 00:12:31 v #15659 > > match x with 00:12:31 v #15660 > > | Ok x => Some x 00:12:31 v #15661 > > | Error _ => None 00:12:31 v #15662 > > 00:12:31 v #15663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:31 v #15664 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:31 v #15665 > > │ ## fsharp │ 00:12:31 v #15666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:31 v #15667 > > 00:12:31 v #15668 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:31 v #15669 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:31 v #15670 > > │ ### result' │ 00:12:31 v #15671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:31 v #15672 > > 00:12:31 v #15673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:31 v #15674 > > nominal result' t u = $'Result<`t, `u>' 00:12:32 v #15675 > > 00:12:32 v #15676 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:32 v #15677 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:32 v #15678 > > │ ### unbox │ 00:12:32 v #15679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:32 v #15680 > > 00:12:32 v #15681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:32 v #15682 > > inl unbox forall t u. (x : result' t u) : result t u = 00:12:32 v #15683 > > inl ok x : result t u = Ok x 00:12:32 v #15684 > > inl error x : result t u = Error x 00:12:32 v #15685 > > inl ok = join ok 00:12:32 v #15686 > > inl error = join error 00:12:32 v #15687 > > real 00:12:32 v #15688 > > typecase t with 00:12:32 v #15689 > > | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result 00:12:32 v #15690 > > t u 00:12:32 v #15691 > > | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u 00:12:32 v #15692 > > 00:12:32 v #15693 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:32 v #15694 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:32 v #15695 > > │ ### box │ 00:12:32 v #15696 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:32 v #15697 > > 00:12:32 v #15698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:32 v #15699 > > inl box forall t u. (x : result t u) : result' t u = 00:12:32 v #15700 > > match x with 00:12:32 v #15701 > > | Ok x => $'Ok !x ' 00:12:32 v #15702 > > | Error err => $'Error !err ' 00:12:32 v #15703 > > 00:12:32 v #15704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:32 v #15705 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:32 v #15706 > > │ ## rust │ 00:12:32 v #15707 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:32 v #15708 > > 00:12:32 v #15709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:32 v #15710 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:32 v #15711 > > │ ### anyhow_result │ 00:12:32 v #15712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:32 v #15713 > > 00:12:32 v #15714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:32 v #15715 > > nominal anyhow_result t = 00:12:32 v #15716 > > `( 00:12:32 v #15717 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:12:32 v #15718 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> = 00:12:32 v #15719 > > class end" 00:12:32 v #15720 > > $'' : $'anyhow_Result<`t>' 00:12:32 v #15721 > > ) 00:12:33 v #15722 > > 00:12:33 v #15723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:33 v #15724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:33 v #15725 > > │ ### anyhow_error │ 00:12:33 v #15726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:33 v #15727 > > 00:12:33 v #15728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:33 v #15729 > > nominal anyhow_error = 00:12:33 v #15730 > > `( 00:12:33 v #15731 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:12:33 v #15732 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end" 00:12:33 v #15733 > > $'' : $'anyhow_Error' 00:12:33 v #15734 > > ) 00:12:33 v #15735 > > 00:12:33 v #15736 > > inl anyhow_error error = 00:12:33 v #15737 > > !\\(error, $'"anyhow::anyhow\!($0)"') 00:12:33 v #15738 > > 00:12:33 v #15739 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:33 v #15740 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:33 v #15741 > > │ ### try' │ 00:12:33 v #15742 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:33 v #15743 > > 00:12:33 v #15744 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:33 v #15745 > > inl try' forall t u. (x : result' t u) : t = 00:12:33 v #15746 > > inl is_unit = 00:12:33 v #15747 > > real 00:12:33 v #15748 > > typecase t with 00:12:33 v #15749 > > | () => true 00:12:33 v #15750 > > | _ => false 00:12:33 v #15751 > > if is_unit 00:12:33 v #15752 > > then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $'' 00:12:33 v #15753 > > else !\\(x, $'"$0?"') 00:12:34 v #15754 > > 00:12:34 v #15755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 v #15756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 v #15757 > > │ ### to_try │ 00:12:34 v #15758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 v #15759 > > 00:12:34 v #15760 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 v #15761 > > inl to_try forall t u. (x : result' t u) : rust.try t = 00:12:34 v #15762 > > !\\(x, $'"$0"') 00:12:34 v #15763 > > 00:12:34 v #15764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 v #15765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 v #15766 > > │ ### unwrap' │ 00:12:34 v #15767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 v #15768 > > 00:12:34 v #15769 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 v #15770 > > inl unwrap' forall t u. (x : result' t u) : t = 00:12:34 v #15771 > > run_target function 00:12:34 v #15772 > > | Rust _ => fun () => !\\(x, $'"$0.unwrap()"') 00:12:34 v #15773 > > | _ => fun () => $'match !x with Ok x -> x | Error e -> failwith 00:12:34 v #15774 > > $"resultm.unwrap\' / e: {e}"' 00:12:35 v #15775 > > 00:12:35 v #15776 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:35 v #15777 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:35 v #15778 > > │ ### unwrap_err' │ 00:12:35 v #15779 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:35 v #15780 > > 00:12:35 v #15781 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:35 v #15782 > > inl unwrap_err' forall t u. (x : result' t u) : u = 00:12:35 v #15783 > > $'match !x with Ok x -> failwith $"resultm.unwrap_err\' / x: %A{x}" | Error 00:12:35 v #15784 > > x -> x' 00:12:35 v #15785 > > 00:12:35 v #15786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:35 v #15787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:35 v #15788 > > │ ### unbox' │ 00:12:35 v #15789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:35 v #15790 > > 00:12:35 v #15791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:35 v #15792 > > inl unbox' forall t u. (x : result' t u) : result t u = 00:12:35 v #15793 > > inl ok x : result t u = Ok x 00:12:35 v #15794 > > inl ok = join ok 00:12:35 v #15795 > > inl error x : result t u = Error x 00:12:35 v #15796 > > inl error = join error 00:12:35 v #15797 > > real 00:12:35 v #15798 > > typecase t with 00:12:35 v #15799 > > | () => 00:12:35 v #15800 > > (~!\\) 00:12:35 v #15801 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:12:35 v #15802 > > `(result t u) 00:12:35 v #15803 > > ((ok, error, x), ($'"match $2 { Ok(()) => $0(()), Err(e) => 00:12:35 v #15804 > > $1(e) }"' : string)) 00:12:35 v #15805 > > | _ => 00:12:35 v #15806 > > (~!\\) 00:12:35 v #15807 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:12:35 v #15808 > > `(result t u) 00:12:35 v #15809 > > ((ok, error, x), ($'"match $2 { Ok(x) => $0(x), Err(e) => $1(e) 00:12:35 v #15810 > > }"' : string)) 00:12:36 v #15811 > > 00:12:36 v #15812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:36 v #15813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:36 v #15814 > > │ ### map' │ 00:12:36 v #15815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:36 v #15816 > > 00:12:36 v #15817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:36 v #15818 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:12:36 v #15819 > > (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |> 00:12:36 v #15820 > > ignore 00:12:36 v #15821 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:12:36 v #15822 > > !\($'"_result_map_"') 00:12:36 v #15823 > > 00:12:36 v #15824 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:36 v #15825 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:36 v #15826 > > │ ### map'' │ 00:12:36 v #15827 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:36 v #15828 > > 00:12:36 v #15829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:36 v #15830 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:12:36 v #15831 > > inl fn = join fn 00:12:36 v #15832 > > inl source = join source 00:12:36 v #15833 > > !\($'"!source.map(|x| !fn(x))"') 00:12:36 v #15834 > > 00:12:36 v #15835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:36 v #15836 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:36 v #15837 > > │ ### map_error' │ 00:12:36 v #15838 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:36 v #15839 > > 00:12:36 v #15840 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:36 v #15841 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:12:36 v #15842 > > = 00:12:36 v #15843 > > inl fn = join fn 00:12:36 v #15844 > > run_target_args (fun () => fn) function 00:12:36 v #15845 > > | Rust _ => fun fn => 00:12:36 v #15846 > > !\\((source, fn), $'"$0.map_err(|x| $1(x))"') 00:12:36 v #15847 > > | _ => fun fn => 00:12:36 v #15848 > > $'match !source with Ok x -> Ok x | Error x -> Error (!fn x)' : 00:12:36 v #15849 > > result' t u 00:12:37 v #15850 > > 00:12:37 v #15851 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:37 v #15852 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:37 v #15853 > > │ ### map_error'' │ 00:12:37 v #15854 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:37 v #15855 > > 00:12:37 v #15856 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:37 v #15857 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:12:37 v #15858 > > = 00:12:37 v #15859 > > (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') : 00:12:37 v #15860 > > bool) |> ignore 00:12:37 v #15861 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:12:37 v #15862 > > !\($'"_result_map_error__"') 00:12:37 v #15863 > > 00:12:37 v #15864 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:37 v #15865 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:37 v #15866 > > │ ### option_ok_or │ 00:12:37 v #15867 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:37 v #15868 > > 00:12:37 v #15869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:37 v #15870 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e 00:12:37 v #15871 > > = 00:12:37 v #15872 > > !\\(source, $'"$0.ok_or(!e)"') 00:12:38 v #15873 > > 00:12:38 v #15874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:38 v #15875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:38 v #15876 > > │ ### unwrap_or_else │ 00:12:38 v #15877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:38 v #15878 > > 00:12:38 v #15879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:38 v #15880 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u = 00:12:38 v #15881 > > (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| { 00:12:38 v #15882 > > //"') : bool) |> ignore 00:12:38 v #15883 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:12:38 v #15884 > > !\($'"_result_unwrap_or_else"') 00:12:38 v #15885 > > 00:12:38 v #15886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:38 v #15887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:38 v #15888 > > │ ### map_or_else │ 00:12:38 v #15889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:38 v #15890 > > 00:12:38 v #15891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:38 v #15892 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t 00:12:38 v #15893 > > e) : v = 00:12:38 v #15894 > > (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') : 00:12:38 v #15895 > > bool) |> ignore 00:12:38 v #15896 > > (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore 00:12:38 v #15897 > > (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:12:38 v #15898 > > !\($'"_result_map_or_else"') 00:12:39 v #15899 > > 00:12:39 v #15900 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:39 v #15901 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:39 v #15902 > > │ ### as_ref │ 00:12:39 v #15903 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:39 v #15904 > > 00:12:39 v #15905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:39 v #15906 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref 00:12:39 v #15907 > > e) = 00:12:39 v #15908 > > !\($'"!source.as_ref()"') 00:12:39 v #15909 > > 00:12:39 v #15910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:39 v #15911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:39 v #15912 > > │ ### as_ref' │ 00:12:39 v #15913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:39 v #15914 > > 00:12:39 v #15915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:39 v #15916 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t) 00:12:39 v #15917 > > (rust.ref e) = 00:12:39 v #15918 > > !\($'"!source.as_ref()"') 00:12:39 v #15919 > > 00:12:39 v #15920 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:39 v #15921 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:39 v #15922 > > │ ### unwrap_or' │ 00:12:39 v #15923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:39 v #15924 > > 00:12:39 v #15925 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:39 v #15926 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t = 00:12:39 v #15927 > > !\\((x, default), $'"$0.unwrap_or($1)"') 00:12:40 v #15928 > > 00:12:40 v #15929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:40 v #15930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:40 v #15931 > > │ ### expect │ 00:12:40 v #15932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:40 v #15933 > > 00:12:40 v #15934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:40 v #15935 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t = 00:12:40 v #15936 > > !\($'"!x.expect(&!error)"') 00:12:40 v #15937 > > 00:12:40 v #15938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:40 v #15939 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:40 v #15940 > > │ ### is_err │ 00:12:40 v #15941 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:40 v #15942 > > 00:12:40 v #15943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:40 v #15944 > > inl is_err forall t u. (x : result' t u) : bool = 00:12:40 v #15945 > > run_target function 00:12:40 v #15946 > > | Rust _ => fun () => !\\(x, $'"$0.is_err()"') 00:12:40 v #15947 > > | _ => fun () => true 00:12:41 v #15948 > > 00:12:41 v #15949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:41 v #15950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:41 v #15951 > > │ ### ok' │ 00:12:41 v #15952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:41 v #15953 > > 00:12:41 v #15954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:41 v #15955 > > inl ok' forall t. (x : result' t _) : optionm'.option' t = 00:12:41 v #15956 > > run_target function 00:12:41 v #15957 > > | Rust _ => fun () => !\\(x, $'"$0.ok()"') 00:12:41 v #15958 > > | _ => fun () => $'match !x with Ok x -> Some x | Error _ -> None' 00:12:41 v #15959 > > 00:12:41 v #15960 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:41 v #15961 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:41 v #15962 > > │ ### err │ 00:12:41 v #15963 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:41 v #15964 > > 00:12:41 v #15965 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:41 v #15966 > > inl err forall t u. (x : u) : result' t u = 00:12:41 v #15967 > > run_target function 00:12:41 v #15968 > > | Rust _ => fun () => !\\(x, $'"Err($0)"') 00:12:41 v #15969 > > | _ => fun () => $'!x |> Error' 00:12:42 v #15970 > > 00:12:42 v #15971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:42 v #15972 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:42 v #15973 > > │ ### ok'' │ 00:12:42 v #15974 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:42 v #15975 > > 00:12:42 v #15976 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:42 v #15977 > > inl ok'' forall t u. (x : t) : result' t u = 00:12:42 v #15978 > > run_target function 00:12:42 v #15979 > > | Rust _ => fun () => !\\(x, $'"Ok($0)"') 00:12:42 v #15980 > > | _ => fun () => $'!x |> Ok' 00:12:42 v #15981 > > 00:12:42 v #15982 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:42 v #15983 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:42 v #15984 > > │ ### transpose │ 00:12:42 v #15985 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:42 v #15986 > > 00:12:42 v #15987 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:42 v #15988 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result' 00:12:42 v #15989 > > (optionm'.option' t) u = 00:12:42 v #15990 > > !\\(x, $'"$0.transpose()"') 00:12:43 v #15991 > > 00:12:43 v #15992 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:43 v #15993 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:43 v #15994 > > │ ### rc_try_unwrap │ 00:12:43 v #15995 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:43 v #15996 > > 00:12:43 v #15997 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:43 v #15998 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) = 00:12:43 v #15999 > > !\\(x, $'"std::rc::Rc::try_unwrap($0)"') 00:12:43 v #16000 > > 00:12:43 v #16001 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:43 v #16002 > > //// test 00:12:43 v #16003 > > ///! rust 00:12:43 v #16004 > > 00:12:43 v #16005 > > rust.new_rc true 00:12:43 v #16006 > > |> rc_try_unwrap 00:12:43 v #16007 > > |> unbox 00:12:43 v #16008 > > |> _assert_eq (Ok true) 00:12:46 v #16009 > > 00:12:46 v #16010 > > ╭─[ 2.60s - return value ]─────────────────────────────────────────────────────╮ 00:12:46 v #16011 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true) │ 00:12:46 v #16012 > > │ │ 00:12:46 v #16013 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:46 v #16014 > 00:00:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 23823 } 00:12:46 v #16015 > 00:00:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:47 v #16016 > 00:00:26 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/resultm.dib.ipynb to html 00:12:47 v #16017 > 00:00:26 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:12:47 v #16018 > 00:00:26 v #7 ! validate(nb) 00:12:48 v #16019 > 00:00:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:12:48 v #16020 > 00:00:26 v #9 ! return _pygments_highlight( 00:12:48 v #16021 > 00:00:27 v #10 ! [NbConvertApp] Writing 352020 bytes to c:\home\git\polyglot\lib\spiral\resultm.dib.html 00:12:48 v #16022 > 00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:12:48 v #16023 > 00:00:27 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:12:48 v #16024 > 00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:49 v #16025 > 00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:12:49 v #16026 > 00:00:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:12:49 v #16027 > 00:00:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 24738 } 00:12:49 d #16028 runtime.execute_with_options_async / { exit_code = 0; output_length = 28280 } 00:12:49 d #15 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path resultm.dib --retries 3 00:12:49 d #16029 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path console.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:49 v #16030 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) } 00:12:49 v #16031 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/console.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/console.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/console.dib" --output-path "c:/home/git/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:12:50 v #16032 > > 00:12:50 v #16033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:50 v #16034 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:50 v #16035 > > │ # console │ 00:12:50 v #16036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:53 v #16037 > > 00:12:53 v #16038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:53 v #16039 > > //// test 00:12:53 v #16040 > > 00:12:53 v #16041 > > open testing 00:12:55 v #16042 > > 00:12:55 v #16043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:55 v #16044 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:55 v #16045 > > │ ## fsharp │ 00:12:55 v #16046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:55 v #16047 > > 00:12:55 v #16048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:55 v #16049 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:55 v #16050 > > │ ### console_color │ 00:12:55 v #16051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:55 v #16052 > > 00:12:55 v #16053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:55 v #16054 > > nominal console_color = $'System.ConsoleColor' 00:12:55 v #16055 > > 00:12:55 v #16056 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:55 v #16057 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:55 v #16058 > > │ ### reset_color │ 00:12:55 v #16059 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:55 v #16060 > > 00:12:55 v #16061 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:55 v #16062 > > inl reset_color () : () = 00:12:55 v #16063 > > run_target function 00:12:55 v #16064 > > | Fsharp => fun () => $'System.Console.ResetColor ()' 00:12:55 v #16065 > > | _ => fun () => () 00:12:55 v #16066 > > 00:12:55 v #16067 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:55 v #16068 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:55 v #16069 > > │ ### set_foreground_color │ 00:12:55 v #16070 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:55 v #16071 > > 00:12:55 v #16072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:55 v #16073 > > inl set_foreground_color (color : console_color) : () = 00:12:55 v #16074 > > run_target function 00:12:55 v #16075 > > | Fsharp => fun () => $'System.Console.ForegroundColor <- !color ' 00:12:55 v #16076 > > | _ => fun () => () 00:12:56 v #16077 > > 00:12:56 v #16078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 v #16079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 v #16080 > > │ ## console │ 00:12:56 v #16081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 v #16082 > > 00:12:56 v #16083 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 v #16084 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 v #16085 > > │ ### write_line │ 00:12:56 v #16086 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 v #16087 > > 00:12:56 v #16088 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 v #16089 > > inl write_line obj : () = 00:12:56 v #16090 > > backend_switch { 00:12:56 v #16091 > > Fsharp = fun () => 00:12:56 v #16092 > > fun () => obj |> $'System.Console.WriteLine' 00:12:56 v #16093 > > |> exec_unit 00:12:56 v #16094 > > Python = fun () => $'print(!obj)' : () 00:12:56 v #16095 > > } 00:12:56 v #16096 > > 00:12:56 v #16097 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 v #16098 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 v #16099 > > │ ### write │ 00:12:56 v #16100 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 v #16101 > > 00:12:56 v #16102 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 v #16103 > > inl write forall t. (x : t) : () = 00:12:56 v #16104 > > inl s = x |> sm'.format 00:12:56 v #16105 > > backend_switch { 00:12:56 v #16106 > > Python = fun () => $'print(!s, end="")' : () 00:12:56 v #16107 > > Fsharp = fun () => $'!s |> System.Console.Write' : () 00:12:56 v #16108 > > } 00:12:57 v #16109 > > 00:12:57 v #16110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 v #16111 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 v #16112 > > │ ### write_ln │ 00:12:57 v #16113 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 v #16114 > > 00:12:57 v #16115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 v #16116 > > inl write_ln l : () = 00:12:57 v #16117 > > write l 00:12:57 v #16118 > > backend_switch { 00:12:57 v #16119 > > Cuda = fun () => $'printf("\\n")' : () 00:12:57 v #16120 > > Python = fun () => $"print()" : () 00:12:57 v #16121 > > Fsharp = fun () => write_line () : () 00:12:57 v #16122 > > } 00:12:57 v #16123 > 00:00:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4503 } 00:12:57 v #16124 > 00:00:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/console.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:58 v #16125 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/console.dib.ipynb to html 00:12:58 v #16126 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:12:58 v #16127 > 00:00:09 v #7 ! validate(nb) 00:12:59 v #16128 > 00:00:10 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:12:59 v #16129 > 00:00:10 v #9 ! return _pygments_highlight( 00:12:59 v #16130 > 00:00:10 v #10 ! [NbConvertApp] Writing 283391 bytes to c:\home\git\polyglot\lib\spiral\console.dib.html 00:12:59 v #16131 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:12:59 v #16132 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:12:59 v #16133 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:00 v #16134 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:13:00 v #16135 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:13:00 v #16136 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5418 } 00:13:00 d #16137 runtime.execute_with_options_async / { exit_code = 0; output_length = 8174 } 00:13:00 d #16 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path console.dib --retries 3 00:13:00 d #16138 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path base.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:00 v #16139 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) } 00:13:00 v #16140 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/base.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/base.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/base.dib" --output-path "c:/home/git/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:13:01 v #16141 > > 00:13:01 v #16142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #16143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:01 v #16144 > > │ # base │ 00:13:01 v #16145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:04 v #16146 > > 00:13:04 v #16147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:04 v #16148 > > //// test 00:13:04 v #16149 > > 00:13:04 v #16150 > > open testing 00:13:06 v #16151 > > 00:13:06 v #16152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:06 v #16153 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:06 v #16154 > > │ ## execution │ 00:13:06 v #16155 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:06 v #16156 > > 00:13:06 v #16157 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:06 v #16158 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:06 v #16159 > > │ ### emit │ 00:13:06 v #16160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:06 v #16161 > > 00:13:06 v #16162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:06 v #16163 > > inl emit forall t. (x : t) : t = 00:13:06 v #16164 > > $'!x ' 00:13:06 v #16165 > > 00:13:06 v #16166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:06 v #16167 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:06 v #16168 > > │ ### emit_unit │ 00:13:06 v #16169 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:06 v #16170 > > 00:13:06 v #16171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:06 v #16172 > > inl emit_unit forall t. (x : t) : () = 00:13:06 v #16173 > > $'!x ' 00:13:06 v #16174 > > 00:13:06 v #16175 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:06 v #16176 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:06 v #16177 > > │ ### use │ 00:13:06 v #16178 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:06 v #16179 > > 00:13:06 v #16180 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:06 v #16181 > > inl use forall t. (x : t) : t = 00:13:06 v #16182 > > $'use !x = !x ' : () 00:13:06 v #16183 > > $'!x ' 00:13:07 v #16184 > > 00:13:07 v #16185 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:07 v #16186 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:07 v #16187 > > │ ## type │ 00:13:07 v #16188 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:07 v #16189 > > 00:13:07 v #16190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:07 v #16191 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:07 v #16192 > > │ ### unit │ 00:13:07 v #16193 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:07 v #16194 > > 00:13:07 v #16195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:07 v #16196 > > nominal unit = $'unit' 00:13:07 v #16197 > > 00:13:07 v #16198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:07 v #16199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:07 v #16200 > > │ ## target │ 00:13:07 v #16201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:07 v #16202 > > 00:13:07 v #16203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:07 v #16204 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:07 v #16205 > > │ ### backend_switch │ 00:13:07 v #16206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:07 v #16207 > > 00:13:07 v #16208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:07 v #16209 > > inl backend_switch forall t. x : t = 00:13:07 v #16210 > > real 00:13:07 v #16211 > > inl backend key : t = 00:13:07 v #16212 > > inl s = real_core.string_lit_to_symbol key 00:13:07 v #16213 > > real_core.record_type_try_find `(`x) s 00:13:07 v #16214 > > (forall v'. => (x s) ()) 00:13:07 v #16215 > > (fun () => $'' : t) 00:13:07 v #16216 > > !!!!BackendSwitch ( 00:13:07 v #16217 > > ("Fsharp", backend "Fsharp"), 00:13:07 v #16218 > > ("Python", backend "Python"), 00:13:07 v #16219 > > ("Cuda", backend "Cuda") 00:13:07 v #16220 > > ) 00:13:08 v #16221 > > 00:13:08 v #16222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:08 v #16223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:08 v #16224 > > │ ### target_runtime │ 00:13:08 v #16225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:08 v #16226 > > 00:13:08 v #16227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:08 v #16228 > > union target_runtime = 00:13:08 v #16229 > > | Native 00:13:08 v #16230 > > | Wasm 00:13:08 v #16231 > > | Contract 00:13:08 v #16232 > > 00:13:08 v #16233 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:08 v #16234 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:08 v #16235 > > │ ### target │ 00:13:08 v #16236 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:08 v #16237 > > 00:13:08 v #16238 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:08 v #16239 > > union target = 00:13:08 v #16240 > > | Fsharp : target_runtime 00:13:08 v #16241 > > | Cuda : target_runtime 00:13:08 v #16242 > > | Rust : target_runtime 00:13:08 v #16243 > > | TypeScript : target_runtime 00:13:08 v #16244 > > | Python : target_runtime 00:13:09 v #16245 > > 00:13:09 v #16246 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:09 v #16247 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:09 v #16248 > > │ ### run_target_args' │ 00:13:09 v #16249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 v #16250 > > 00:13:09 v #16251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:09 v #16252 > > inl run_target_args' forall t u. (args : u) (fn : target -> (u -> t)) : t = 00:13:09 v #16253 > > backend_switch { 00:13:09 v #16254 > > Fsharp = fun () => 00:13:09 v #16255 > > inl is_unit : bool = 00:13:09 v #16256 > > real 00:13:09 v #16257 > > typecase t with 00:13:09 v #16258 > > | () => true 00:13:09 v #16259 > > | _ => false 00:13:09 v #16260 > > inl result = $'()' : unit 00:13:09 v #16261 > > inl emit_result x : () = 00:13:09 v #16262 > > if is_unit |> not 00:13:09 v #16263 > > then $'let _run_target_args\'_!result = !x ' 00:13:09 v #16264 > > $'\n#if FABLE_COMPILER || WASM || CONTRACT' 00:13:09 v #16265 > > $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT' 00:13:09 v #16266 > > inl target = Rust Native 00:13:09 v #16267 > > fn target args |> emit_result 00:13:09 v #16268 > > $'#endif\n#if FABLE_COMPILER_RUST && WASM' 00:13:09 v #16269 > > inl target = Rust Wasm 00:13:09 v #16270 > > fn target args |> emit_result 00:13:09 v #16271 > > $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT' 00:13:09 v #16272 > > inl target = Rust Contract 00:13:09 v #16273 > > fn target args |> emit_result 00:13:09 v #16274 > > $'#endif\n#if FABLE_COMPILER_TYPESCRIPT' 00:13:09 v #16275 > > inl target = TypeScript Native 00:13:09 v #16276 > > fn target args |> emit_result 00:13:09 v #16277 > > $'#endif\n#if FABLE_COMPILER_PYTHON' 00:13:09 v #16278 > > inl target = Python Native 00:13:09 v #16279 > > fn target args |> emit_result 00:13:09 v #16280 > > $'#endif\n#if \!FABLE_COMPILER_RUST && \!FABLE_COMPILER_TYPESCRIPT 00:13:09 v #16281 > > && \!FABLE_COMPILER_PYTHON' 00:13:09 v #16282 > > inl target = Fsharp Wasm 00:13:09 v #16283 > > fn target args |> emit_result 00:13:09 v #16284 > > $'#endif\n#else' 00:13:09 v #16285 > > inl target = Fsharp Native 00:13:09 v #16286 > > fn target args |> emit_result 00:13:09 v #16287 > > $'#endif' 00:13:09 v #16288 > > if is_unit 00:13:09 v #16289 > > then $'// run_target_args\' is_unit' 00:13:09 v #16290 > > else $'_run_target_args\'_!result ' : t 00:13:09 v #16291 > > Python = fun () => 00:13:09 v #16292 > > inl target = Cuda Native 00:13:09 v #16293 > > fn target args 00:13:09 v #16294 > > } 00:13:09 v #16295 > > 00:13:09 v #16296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:09 v #16297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:09 v #16298 > > │ ### run_target_args │ 00:13:09 v #16299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 v #16300 > > 00:13:09 v #16301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:09 v #16302 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t = 00:13:09 v #16303 > > inl args = args () |> dyn 00:13:09 v #16304 > > fn |> run_target_args' args 00:13:09 v #16305 > > 00:13:09 v #16306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:09 v #16307 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:09 v #16308 > > │ ### run_target │ 00:13:09 v #16309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 v #16310 > > 00:13:09 v #16311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:09 v #16312 > > inl run_target forall t. (fn : target -> (() -> t)) : t = 00:13:09 v #16313 > > run_target_args id fn 00:13:10 v #16314 > > 00:13:10 v #16315 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:10 v #16316 > > //// test 00:13:10 v #16317 > > ///! fsharp 00:13:10 v #16318 > > ///! cuda 00:13:10 v #16319 > > ///! rust 00:13:10 v #16320 > > ///! typescript 00:13:10 v #16321 > > ///! python 00:13:10 v #16322 > > 00:13:10 v #16323 > > run_target function 00:13:10 v #16324 > > | Fsharp (Native) => fun () => $'1uy' 00:13:10 v #16325 > > | Cuda (Native) => fun () => $'1' 00:13:10 v #16326 > > | Rust (Native) => fun () => $'1uy' 00:13:10 v #16327 > > | TypeScript (Native) => fun () => $'1uy' 00:13:10 v #16328 > > | Python (Native) => fun () => $'1uy' 00:13:10 v #16329 > > | _ => fun () => $'2uy' 00:13:10 v #16330 > > |> _assert_eq 1u8 00:13:14 v #16331 > > 00:13:14 v #16332 > > ╭─[ 4.25s - return value ]─────────────────────────────────────────────────────╮ 00:13:14 v #16333 > > │ .py output (Cuda): │ 00:13:14 v #16334 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:14 v #16335 > > │ │ 00:13:14 v #16336 > > │ .rs output: │ 00:13:14 v #16337 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:14 v #16338 > > │ │ 00:13:14 v #16339 > > │ .ts output: │ 00:13:14 v #16340 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:14 v #16341 > > │ │ 00:13:14 v #16342 > > │ .py output: │ 00:13:14 v #16343 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:14 v #16344 > > │ │ 00:13:14 v #16345 > > │ │ 00:13:14 v #16346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:14 v #16347 > > 00:13:14 v #16348 > > ╭─[ 4.26s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:14 v #16349 > > │ .fsx output: │ 00:13:14 v #16350 > > │ __assert_eq / actual: 1uy / expected: 1uy │ 00:13:14 v #16351 > > │ │ 00:13:14 v #16352 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:14 v #16353 > > 00:13:14 v #16354 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:14 v #16355 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:14 v #16356 > > │ ## function │ 00:13:14 v #16357 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:14 v #16358 > > 00:13:14 v #16359 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:14 v #16360 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:14 v #16361 > > │ ### eval │ 00:13:14 v #16362 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:14 v #16363 > > 00:13:14 v #16364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:14 v #16365 > > inl eval fn = 00:13:14 v #16366 > > fn () 00:13:14 v #16367 > > 00:13:14 v #16368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:14 v #16369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:14 v #16370 > > │ ### flip │ 00:13:14 v #16371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:14 v #16372 > > 00:13:14 v #16373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:14 v #16374 > > inl flip fn a b = 00:13:14 v #16375 > > fn b a 00:13:15 v #16376 > > 00:13:15 v #16377 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:15 v #16378 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:15 v #16379 > > │ ### do │ 00:13:15 v #16380 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:15 v #16381 > > 00:13:15 v #16382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:15 v #16383 > > inl do (body : () -> ()) : () = 00:13:15 v #16384 > > !!!!Do (body()) 00:13:15 v #16385 > > 00:13:15 v #16386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:15 v #16387 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:15 v #16388 > > │ ### indent │ 00:13:15 v #16389 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:15 v #16390 > > 00:13:15 v #16391 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:15 v #16392 > > inl indent (body : () -> ()) : () = 00:13:15 v #16393 > > backend_switch { 00:13:15 v #16394 > > Fsharp = fun () => 00:13:15 v #16395 > > inl body () = 00:13:15 v #16396 > > body () 00:13:15 v #16397 > > $'(* indent' : () 00:13:15 v #16398 > > !!!!Indent (body()) 00:13:15 v #16399 > > $'indent *)' : () 00:13:15 v #16400 > > Python = fun () => 00:13:15 v #16401 > > !!!!Indent (body()) 00:13:15 v #16402 > > () 00:13:15 v #16403 > > } 00:13:16 v #16404 > > 00:13:16 v #16405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #16406 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 v #16407 > > │ ### let' │ 00:13:16 v #16408 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 v #16409 > > 00:13:16 v #16410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #16411 > > inl let' fn = 00:13:16 v #16412 > > inl result : unit = 00:13:16 v #16413 > > backend_switch { 00:13:16 v #16414 > > Fsharp = fun () => 00:13:16 v #16415 > > $'()' : unit 00:13:16 v #16416 > > Python = fun () => 00:13:16 v #16417 > > $'None' : unit 00:13:16 v #16418 > > } 00:13:16 v #16419 > > backend_switch { 00:13:16 v #16420 > > Fsharp = fun () => 00:13:16 v #16421 > > $'let _let\'_!result =' : () 00:13:16 v #16422 > > fn |> indent 00:13:16 v #16423 > > Python = fun () => 00:13:16 v #16424 > > $'def _let\'_!result():' : () 00:13:16 v #16425 > > fn |> indent 00:13:16 v #16426 > > } 00:13:16 v #16427 > > $'_let\'_!result ' 00:13:16 v #16428 > > 00:13:16 v #16429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #16430 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 v #16431 > > │ ### exec_unit │ 00:13:16 v #16432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 v #16433 > > 00:13:16 v #16434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #16435 > > inl exec_unit (fn : () -> ()) : () = 00:13:16 v #16436 > > backend_switch { 00:13:16 v #16437 > > Fsharp = fun () => 00:13:16 v #16438 > > inl unit = $'()' : $'unit' 00:13:16 v #16439 > > ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore 00:13:16 v #16440 > > Python = fun () => fn () 00:13:16 v #16441 > > } 00:13:17 v #16442 > > 00:13:17 v #16443 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 v #16444 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 v #16445 > > │ ### lazy │ 00:13:17 v #16446 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 v #16447 > > 00:13:17 v #16448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 v #16449 > > nominal lazy t = $'Lazy<`t>' 00:13:17 v #16450 > > 00:13:17 v #16451 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 v #16452 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 v #16453 > > │ ### memoize │ 00:13:17 v #16454 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 v #16455 > > 00:13:17 v #16456 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 v #16457 > > nominal lazy t = $'Lazy<`t>' 00:13:17 v #16458 > > 00:13:17 v #16459 > > inl memoize forall t. (fn : () -> t) : () -> t = 00:13:17 v #16460 > > inl fn = join fn 00:13:17 v #16461 > > backend_switch { 00:13:17 v #16462 > > Fsharp = fun () => 00:13:17 v #16463 > > inl result : lazy t = $'lazy !fn ()' 00:13:17 v #16464 > > fun () => $'!result.Value' : t 00:13:17 v #16465 > > Python = fun () => 00:13:17 v #16466 > > inl result = mut None 00:13:17 v #16467 > > inl computed = mut false 00:13:17 v #16468 > > fun () => 00:13:17 v #16469 > > if *computed 00:13:17 v #16470 > > then *result 00:13:17 v #16471 > > else 00:13:17 v #16472 > > result <- fn () |> Some 00:13:17 v #16473 > > computed <- true 00:13:17 v #16474 > > *result 00:13:17 v #16475 > > |> optionm.value 00:13:17 v #16476 > > } 00:13:18 v #16477 > > 00:13:18 v #16478 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 v #16479 > > //// test 00:13:18 v #16480 > > ///! fsharp 00:13:18 v #16481 > > ///! cuda 00:13:18 v #16482 > > ///! rust 00:13:18 v #16483 > > ///! typescript 00:13:18 v #16484 > > ///! python 00:13:18 v #16485 > > 00:13:18 v #16486 > > inl count = mut 0i32 00:13:18 v #16487 > > inl add = 00:13:18 v #16488 > > fun () => 00:13:18 v #16489 > > count <- *count + 1 00:13:18 v #16490 > > count 00:13:18 v #16491 > > |> memoize 00:13:18 v #16492 > > 00:13:18 v #16493 > > add () |> ignore 00:13:18 v #16494 > > add () |> ignore 00:13:18 v #16495 > > add () |> ignore 00:13:18 v #16496 > > 00:13:18 v #16497 > > *count 00:13:18 v #16498 > > |> _assert_eq 1 00:13:21 v #16499 > > 00:13:21 v #16500 > > ╭─[ 3.86s - return value ]─────────────────────────────────────────────────────╮ 00:13:21 v #16501 > > │ .py output (Cuda): │ 00:13:21 v #16502 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:21 v #16503 > > │ │ 00:13:21 v #16504 > > │ .rs output: │ 00:13:21 v #16505 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:21 v #16506 > > │ │ 00:13:21 v #16507 > > │ .ts output: │ 00:13:21 v #16508 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:21 v #16509 > > │ │ 00:13:21 v #16510 > > │ .py output: │ 00:13:21 v #16511 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:21 v #16512 > > │ │ 00:13:21 v #16513 > > │ │ 00:13:21 v #16514 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:21 v #16515 > > 00:13:21 v #16516 > > ╭─[ 3.86s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:21 v #16517 > > │ .fsx output: │ 00:13:21 v #16518 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:13:21 v #16519 > > │ │ 00:13:21 v #16520 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:21 v #16521 > > 00:13:21 v #16522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:21 v #16523 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:21 v #16524 > > │ ### capture │ 00:13:21 v #16525 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:21 v #16526 > > 00:13:21 v #16527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:21 v #16528 > > inl capture forall t. (fn : () -> t) : t = 00:13:21 v #16529 > > backend_switch { 00:13:21 v #16530 > > Fsharp = fun () => 00:13:21 v #16531 > > inl result = dyn true 00:13:21 v #16532 > > $'let mutable _capture_!result : `t option = None ' 00:13:21 v #16533 > > $'(' 00:13:21 v #16534 > > $'(fun () ->' 00:13:21 v #16535 > > $'(fun () ->' 00:13:21 v #16536 > > fn () |> emit_unit 00:13:21 v #16537 > > $')' 00:13:21 v #16538 > > $'|> fun x -> x ()' 00:13:21 v #16539 > > $') () )' 00:13:21 v #16540 > > $'|> fun x -> _capture_!result <- Some x' 00:13:21 v #16541 > > $'match _capture_!result with Some x -> x | None -> failwith 00:13:21 v #16542 > > "base.capture / _capture_!result=None"' : t 00:13:21 v #16543 > > Python = fun () => 00:13:21 v #16544 > > fn () 00:13:21 v #16545 > > } 00:13:22 v #16546 > > 00:13:22 v #16547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:22 v #16548 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:22 v #16549 > > │ ## arithmetic │ 00:13:22 v #16550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:22 v #16551 > > 00:13:22 v #16552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:22 v #16553 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:22 v #16554 > > │ ### (+.) │ 00:13:22 v #16555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:22 v #16556 > > 00:13:22 v #16557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:22 v #16558 > > inl (+.) forall t. (a : t) (b : t) : t = 00:13:22 v #16559 > > $'!a + !b ' 00:13:22 v #16560 > > 00:13:22 v #16561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:22 v #16562 > > //// test 00:13:22 v #16563 > > ///! fsharp 00:13:22 v #16564 > > ///! cuda 00:13:22 v #16565 > > ///! rust 00:13:22 v #16566 > > ///! typescript 00:13:22 v #16567 > > ///! python 00:13:22 v #16568 > > 00:13:22 v #16569 > > ($'3' : i32) +. ($'-6' : i32) 00:13:22 v #16570 > > |> _assert_eq -3i32 00:13:26 v #16571 > > 00:13:26 v #16572 > > ╭─[ 3.31s - return value ]─────────────────────────────────────────────────────╮ 00:13:26 v #16573 > > │ .py output (Cuda): │ 00:13:26 v #16574 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:26 v #16575 > > │ │ 00:13:26 v #16576 > > │ .rs output: │ 00:13:26 v #16577 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:26 v #16578 > > │ │ 00:13:26 v #16579 > > │ .ts output: │ 00:13:26 v #16580 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:26 v #16581 > > │ │ 00:13:26 v #16582 > > │ .py output: │ 00:13:26 v #16583 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:26 v #16584 > > │ │ 00:13:26 v #16585 > > │ │ 00:13:26 v #16586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:26 v #16587 > > 00:13:26 v #16588 > > ╭─[ 3.31s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:26 v #16589 > > │ .fsx output: │ 00:13:26 v #16590 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:26 v #16591 > > │ │ 00:13:26 v #16592 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:26 v #16593 > > 00:13:26 v #16594 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:26 v #16595 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:26 v #16596 > > │ ### (-.) │ 00:13:26 v #16597 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:26 v #16598 > > 00:13:26 v #16599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:26 v #16600 > > inl (-.) forall t. (a : t) (b : t) : t = 00:13:26 v #16601 > > $'!a - !b ' 00:13:26 v #16602 > > 00:13:26 v #16603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:26 v #16604 > > //// test 00:13:26 v #16605 > > ///! fsharp 00:13:26 v #16606 > > ///! cuda 00:13:26 v #16607 > > ///! rust 00:13:26 v #16608 > > ///! typescript 00:13:26 v #16609 > > ///! python 00:13:26 v #16610 > > 00:13:26 v #16611 > > ($'3' : i32) -. ($'6' : i32) 00:13:26 v #16612 > > |> _assert_eq -3i32 00:13:29 v #16613 > > 00:13:29 v #16614 > > ╭─[ 3.35s - return value ]─────────────────────────────────────────────────────╮ 00:13:29 v #16615 > > │ .py output (Cuda): │ 00:13:29 v #16616 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:29 v #16617 > > │ │ 00:13:29 v #16618 > > │ .rs output: │ 00:13:29 v #16619 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:29 v #16620 > > │ │ 00:13:29 v #16621 > > │ .ts output: │ 00:13:29 v #16622 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:29 v #16623 > > │ │ 00:13:29 v #16624 > > │ .py output: │ 00:13:29 v #16625 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:29 v #16626 > > │ │ 00:13:29 v #16627 > > │ │ 00:13:29 v #16628 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:29 v #16629 > > 00:13:29 v #16630 > > ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:29 v #16631 > > │ .fsx output: │ 00:13:29 v #16632 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:29 v #16633 > > │ │ 00:13:29 v #16634 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:29 v #16635 > > 00:13:29 v #16636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:29 v #16637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:29 v #16638 > > │ ### (*.) │ 00:13:29 v #16639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:29 v #16640 > > 00:13:29 v #16641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:29 v #16642 > > inl (*.) forall t. (a : t) (b : t) : t = 00:13:29 v #16643 > > $'!a * !b ' 00:13:30 v #16644 > > 00:13:30 v #16645 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:30 v #16646 > > //// test 00:13:30 v #16647 > > ///! fsharp 00:13:30 v #16648 > > ///! cuda 00:13:30 v #16649 > > ///! rust 00:13:30 v #16650 > > ///! typescript 00:13:30 v #16651 > > ///! python 00:13:30 v #16652 > > 00:13:30 v #16653 > > ($'3' : i32) *. ($'-1' : i32) 00:13:30 v #16654 > > |> _assert_eq -3i32 00:13:33 v #16655 > > 00:13:33 v #16656 > > ╭─[ 3.46s - return value ]─────────────────────────────────────────────────────╮ 00:13:33 v #16657 > > │ .py output (Cuda): │ 00:13:33 v #16658 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:33 v #16659 > > │ │ 00:13:33 v #16660 > > │ .rs output: │ 00:13:33 v #16661 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:33 v #16662 > > │ │ 00:13:33 v #16663 > > │ .ts output: │ 00:13:33 v #16664 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:33 v #16665 > > │ │ 00:13:33 v #16666 > > │ .py output: │ 00:13:33 v #16667 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:33 v #16668 > > │ │ 00:13:33 v #16669 > > │ │ 00:13:33 v #16670 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:33 v #16671 > > 00:13:33 v #16672 > > ╭─[ 3.46s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:33 v #16673 > > │ .fsx output: │ 00:13:33 v #16674 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:33 v #16675 > > │ │ 00:13:33 v #16676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:33 v #16677 > > 00:13:33 v #16678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:33 v #16679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:33 v #16680 > > │ ### (/.) │ 00:13:33 v #16681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:33 v #16682 > > 00:13:33 v #16683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:33 v #16684 > > inl (/.) forall t. (a : t) (b : t) : t = 00:13:33 v #16685 > > $'!a / !b ' 00:13:34 v #16686 > > 00:13:34 v #16687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #16688 > > //// test 00:13:34 v #16689 > > ///! fsharp 00:13:34 v #16690 > > ///! cuda 00:13:34 v #16691 > > ///! rust 00:13:34 v #16692 > > ///! typescript 00:13:34 v #16693 > > ///! python 00:13:34 v #16694 > > 00:13:34 v #16695 > > ($'-3' : i32) /. ($'1' : i32) 00:13:34 v #16696 > > |> _assert_eq -3i32 00:13:37 v #16697 > > 00:13:37 v #16698 > > ╭─[ 3.30s - return value ]─────────────────────────────────────────────────────╮ 00:13:37 v #16699 > > │ .py output (Cuda): │ 00:13:37 v #16700 > > │ __assert_eq / actual: -3.0 / expected: -3 │ 00:13:37 v #16701 > > │ │ 00:13:37 v #16702 > > │ .rs output: │ 00:13:37 v #16703 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:37 v #16704 > > │ │ 00:13:37 v #16705 > > │ .ts output: │ 00:13:37 v #16706 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:37 v #16707 > > │ │ 00:13:37 v #16708 > > │ .py output: │ 00:13:37 v #16709 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:37 v #16710 > > │ │ 00:13:37 v #16711 > > │ │ 00:13:37 v #16712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 v #16713 > > 00:13:37 v #16714 > > ╭─[ 3.30s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:37 v #16715 > > │ .fsx output: │ 00:13:37 v #16716 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:13:37 v #16717 > > │ │ 00:13:37 v #16718 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 v #16719 > > 00:13:37 v #16720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:37 v #16721 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:37 v #16722 > > │ ## comparison │ 00:13:37 v #16723 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 v #16724 > > 00:13:37 v #16725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:37 v #16726 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:37 v #16727 > > │ ### (=.) │ 00:13:37 v #16728 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 v #16729 > > 00:13:37 v #16730 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:37 v #16731 > > inl (=.) forall t. (a : t) (b : t) : bool = 00:13:37 v #16732 > > backend_switch { 00:13:37 v #16733 > > Fsharp = fun () => $'!a = !b ' : bool 00:13:37 v #16734 > > Python = fun () => $'!a == !b ' : bool 00:13:37 v #16735 > > } 00:13:37 v #16736 > > 00:13:37 v #16737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:37 v #16738 > > //// test 00:13:37 v #16739 > > ///! fsharp 00:13:37 v #16740 > > ///! cuda 00:13:37 v #16741 > > ///! rust 00:13:37 v #16742 > > ///! typescript 00:13:37 v #16743 > > ///! python 00:13:37 v #16744 > > 00:13:37 v #16745 > > ($'-3' : i32) =. ($'-3' : i32) 00:13:37 v #16746 > > |> _assert_eq true 00:13:41 v #16747 > > 00:13:41 v #16748 > > ╭─[ 3.51s - return value ]─────────────────────────────────────────────────────╮ 00:13:41 v #16749 > > │ .py output (Cuda): │ 00:13:41 v #16750 > > │ __assert_eq / actual: True / expected: True │ 00:13:41 v #16751 > > │ │ 00:13:41 v #16752 > > │ .rs output: │ 00:13:41 v #16753 > > │ __assert_eq / actual: true / expected: true │ 00:13:41 v #16754 > > │ │ 00:13:41 v #16755 > > │ .ts output: │ 00:13:41 v #16756 > > │ __assert_eq / actual: true / expected: true │ 00:13:41 v #16757 > > │ │ 00:13:41 v #16758 > > │ .py output: │ 00:13:41 v #16759 > > │ __assert_eq / actual: true / expected: true │ 00:13:41 v #16760 > > │ │ 00:13:41 v #16761 > > │ │ 00:13:41 v #16762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:41 v #16763 > > 00:13:41 v #16764 > > ╭─[ 3.51s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:41 v #16765 > > │ .fsx output: │ 00:13:41 v #16766 > > │ __assert_eq / actual: true / expected: true │ 00:13:41 v #16767 > > │ │ 00:13:41 v #16768 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:41 v #16769 > > 00:13:41 v #16770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:41 v #16771 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:41 v #16772 > > │ ### (<>.) │ 00:13:41 v #16773 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:41 v #16774 > > 00:13:41 v #16775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:41 v #16776 > > inl (<>.) forall t. (a : t) (b : t) : bool = 00:13:41 v #16777 > > backend_switch { 00:13:41 v #16778 > > Fsharp = fun () => $'!a <> !b ' : bool 00:13:41 v #16779 > > Python = fun () => $'!a \!= !b ' : bool 00:13:41 v #16780 > > } 00:13:41 v #16781 > > 00:13:41 v #16782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:41 v #16783 > > //// test 00:13:41 v #16784 > > ///! fsharp 00:13:41 v #16785 > > ///! cuda 00:13:41 v #16786 > > ///! rust 00:13:41 v #16787 > > ///! typescript 00:13:41 v #16788 > > ///! python 00:13:41 v #16789 > > 00:13:41 v #16790 > > ($'-3' : i32) <>. ($'3' : i32) 00:13:41 v #16791 > > |> _assert_eq true 00:13:45 v #16792 > > 00:13:45 v #16793 > > ╭─[ 3.32s - return value ]─────────────────────────────────────────────────────╮ 00:13:45 v #16794 > > │ .py output (Cuda): │ 00:13:45 v #16795 > > │ __assert_eq / actual: True / expected: True │ 00:13:45 v #16796 > > │ │ 00:13:45 v #16797 > > │ .rs output: │ 00:13:45 v #16798 > > │ __assert_eq / actual: true / expected: true │ 00:13:45 v #16799 > > │ │ 00:13:45 v #16800 > > │ .ts output: │ 00:13:45 v #16801 > > │ __assert_eq / actual: true / expected: true │ 00:13:45 v #16802 > > │ │ 00:13:45 v #16803 > > │ .py output: │ 00:13:45 v #16804 > > │ __assert_eq / actual: true / expected: true │ 00:13:45 v #16805 > > │ │ 00:13:45 v #16806 > > │ │ 00:13:45 v #16807 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:45 v #16808 > > 00:13:45 v #16809 > > ╭─[ 3.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:45 v #16810 > > │ .fsx output: │ 00:13:45 v #16811 > > │ __assert_eq / actual: true / expected: true │ 00:13:45 v #16812 > > │ │ 00:13:45 v #16813 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:45 v #16814 > > 00:13:45 v #16815 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:45 v #16816 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:45 v #16817 > > │ ## (<>..) │ 00:13:45 v #16818 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:45 v #16819 > > 00:13:45 v #16820 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:45 v #16821 > > inl (<>..) a b = 00:13:45 v #16822 > > fun () => a = b 00:13:45 v #16823 > > |> dyn 00:13:45 v #16824 > > |> eval 00:13:45 v #16825 > > |> not 00:13:45 v #16826 > > 00:13:45 v #16827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:45 v #16828 > > //// test 00:13:45 v #16829 > > ///! fsharp 00:13:45 v #16830 > > ///! cuda 00:13:45 v #16831 > > ///! rust 00:13:45 v #16832 > > ///! typescript 00:13:45 v #16833 > > ///! python 00:13:45 v #16834 > > 00:13:45 v #16835 > > ($'-3' : i32) <>.. ($'3' : i32) 00:13:45 v #16836 > > |> _assert_eq true 00:13:49 v #16837 > > 00:13:49 v #16838 > > ╭─[ 3.32s - return value ]─────────────────────────────────────────────────────╮ 00:13:49 v #16839 > > │ .py output (Cuda): │ 00:13:49 v #16840 > > │ __assert_eq / actual: True / expected: True │ 00:13:49 v #16841 > > │ │ 00:13:49 v #16842 > > │ .rs output: │ 00:13:49 v #16843 > > │ __assert_eq / actual: true / expected: true │ 00:13:49 v #16844 > > │ │ 00:13:49 v #16845 > > │ .ts output: │ 00:13:49 v #16846 > > │ __assert_eq / actual: true / expected: true │ 00:13:49 v #16847 > > │ │ 00:13:49 v #16848 > > │ .py output: │ 00:13:49 v #16849 > > │ __assert_eq / actual: true / expected: true │ 00:13:49 v #16850 > > │ │ 00:13:49 v #16851 > > │ │ 00:13:49 v #16852 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16853 > > 00:13:49 v #16854 > > ╭─[ 3.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:49 v #16855 > > │ .fsx output: │ 00:13:49 v #16856 > > │ __assert_eq / actual: true / expected: true │ 00:13:49 v #16857 > > │ │ 00:13:49 v #16858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16859 > > 00:13:49 v #16860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:49 v #16861 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:49 v #16862 > > │ ## composition │ 00:13:49 v #16863 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16864 > > 00:13:49 v #16865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:49 v #16866 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:49 v #16867 > > │ ### append │ 00:13:49 v #16868 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16869 > > 00:13:49 v #16870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:49 v #16871 > > prototype append t : t -> t -> t 00:13:49 v #16872 > > 00:13:49 v #16873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:49 v #16874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:49 v #16875 > > │ ### (++) │ 00:13:49 v #16876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16877 > > 00:13:49 v #16878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:49 v #16879 > > inl (++) a b = 00:13:49 v #16880 > > b |> append a 00:13:49 v #16881 > > 00:13:49 v #16882 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:49 v #16883 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:49 v #16884 > > │ ## pair │ 00:13:49 v #16885 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16886 > > 00:13:49 v #16887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:49 v #16888 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:49 v #16889 > > │ ### pair │ 00:13:49 v #16890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:49 v #16891 > > 00:13:49 v #16892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:49 v #16893 > > nominal pair a b = $'(`a * `b)' 00:13:49 v #16894 > > 00:13:49 v #16895 > > inl pair x y = 00:13:49 v #16896 > > x, y 00:13:50 v #16897 > > 00:13:50 v #16898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:50 v #16899 > > //// test 00:13:50 v #16900 > > ///! fsharp 00:13:50 v #16901 > > ///! cuda 00:13:50 v #16902 > > ///! rust 00:13:50 v #16903 > > ///! typescript 00:13:50 v #16904 > > ///! python 00:13:50 v #16905 > > 00:13:50 v #16906 > > pair 1i32 2i32 00:13:50 v #16907 > > |> _assert_eq (1, 2) 00:13:53 v #16908 > > 00:13:53 v #16909 > > ╭─[ 3.48s - return value ]─────────────────────────────────────────────────────╮ 00:13:53 v #16910 > > │ .py output (Cuda): │ 00:13:53 v #16911 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:13:53 v #16912 > > │ │ 00:13:53 v #16913 > > │ .rs output: │ 00:13:53 v #16914 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:13:53 v #16915 > > │ │ 00:13:53 v #16916 > > │ .ts output: │ 00:13:53 v #16917 > > │ __assert_eq / actual: 1,2 / expected: 1,2 │ 00:13:53 v #16918 > > │ │ 00:13:53 v #16919 > > │ .py output: │ 00:13:53 v #16920 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:13:53 v #16921 > > │ │ 00:13:53 v #16922 > > │ │ 00:13:53 v #16923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:53 v #16924 > > 00:13:53 v #16925 > > ╭─[ 3.48s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:53 v #16926 > > │ .fsx output: │ 00:13:53 v #16927 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2) │ 00:13:53 v #16928 > > │ │ 00:13:53 v #16929 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:53 v #16930 > > 00:13:53 v #16931 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:53 v #16932 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:53 v #16933 > > │ ### new_pair │ 00:13:53 v #16934 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:53 v #16935 > > 00:13:53 v #16936 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:53 v #16937 > > inl new_pair forall a b. (a : a) (b : b) : pair a b = 00:13:53 v #16938 > > $'!a, !b ' 00:13:54 v #16939 > > 00:13:54 v #16940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:54 v #16941 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:54 v #16942 > > │ ### from_pair │ 00:13:54 v #16943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 v #16944 > > 00:13:54 v #16945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 v #16946 > > inl from_pair forall a b. (pair : pair a b) : a * b = 00:13:54 v #16947 > > backend_switch { 00:13:54 v #16948 > > Fsharp = fun () => 00:13:54 v #16949 > > $'let (a, b) = !pair ' 00:13:54 v #16950 > > ($'a' : a), ($'b' : b) 00:13:54 v #16951 > > Python = fun () => 00:13:54 v #16952 > > $'a, b = !pair ' 00:13:54 v #16953 > > ($'a' : a), ($'b' : b) 00:13:54 v #16954 > > } 00:13:54 v #16955 > > 00:13:54 v #16956 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 v #16957 > > //// test 00:13:54 v #16958 > > ///! fsharp 00:13:54 v #16959 > > ///! cuda 00:13:54 v #16960 > > ///! rust 00:13:54 v #16961 > > ///! typescript 00:13:54 v #16962 > > ///! python 00:13:54 v #16963 > > 00:13:54 v #16964 > > new_pair "a" (new_pair 1i32 "b") 00:13:54 v #16965 > > |> from_pair 00:13:54 v #16966 > > |> _assert_eq' ("a", (new_pair 1i32 "b")) 00:13:57 v #16967 > > 00:13:57 v #16968 > > ╭─[ 3.32s - return value ]─────────────────────────────────────────────────────╮ 00:13:57 v #16969 > > │ .py output (Cuda): │ 00:13:57 v #16970 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b')) │ 00:13:57 v #16971 > > │ │ 00:13:57 v #16972 > > │ .rs output: │ 00:13:57 v #16973 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1, "b")) │ 00:13:57 v #16974 > > │ │ 00:13:57 v #16975 > > │ .ts output: │ 00:13:57 v #16976 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b │ 00:13:57 v #16977 > > │ │ 00:13:57 v #16978 > > │ .py output: │ 00:13:57 v #16979 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b')) │ 00:13:57 v #16980 > > │ │ 00:13:57 v #16981 > > │ │ 00:13:57 v #16982 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:57 v #16983 > > 00:13:57 v #16984 > > ╭─[ 3.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:57 v #16985 > > │ .fsx output: │ 00:13:57 v #16986 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected: struct ("a", (1, │ 00:13:57 v #16987 > > │ "b")) │ 00:13:57 v #16988 > > │ │ 00:13:57 v #16989 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:57 v #16990 > > 00:13:57 v #16991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:57 v #16992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:57 v #16993 > > │ ## application │ 00:13:57 v #16994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:57 v #16995 > > 00:13:57 v #16996 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:57 v #16997 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:57 v #16998 > > │ ### (||>) │ 00:13:57 v #16999 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:57 v #17000 > > 00:13:57 v #17001 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:57 v #17002 > > inl (||>) (arg1, arg2) fn = 00:13:57 v #17003 > > arg2 |> fn arg1 00:13:58 v #17004 > > 00:13:58 v #17005 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:58 v #17006 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:58 v #17007 > > │ ### (||>) │ 00:13:58 v #17008 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:58 v #17009 > > 00:13:58 v #17010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:58 v #17011 > > //// test 00:13:58 v #17012 > > ///! fsharp 00:13:58 v #17013 > > ///! cuda 00:13:58 v #17014 > > ///! rust 00:13:58 v #17015 > > ///! typescript 00:13:58 v #17016 > > ///! python 00:13:58 v #17017 > > 00:13:58 v #17018 > > (3i32, 2i32) 00:13:58 v #17019 > > ||> fun a b => a - b 00:13:58 v #17020 > > |> _assert_eq 1 00:14:01 v #17021 > > 00:14:01 v #17022 > > ╭─[ 3.23s - return value ]─────────────────────────────────────────────────────╮ 00:14:01 v #17023 > > │ .py output (Cuda): │ 00:14:01 v #17024 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:14:01 v #17025 > > │ │ 00:14:01 v #17026 > > │ .rs output: │ 00:14:01 v #17027 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:14:01 v #17028 > > │ │ 00:14:01 v #17029 > > │ .ts output: │ 00:14:01 v #17030 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:14:01 v #17031 > > │ │ 00:14:01 v #17032 > > │ .py output: │ 00:14:01 v #17033 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:14:01 v #17034 > > │ │ 00:14:01 v #17035 > > │ │ 00:14:01 v #17036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:01 v #17037 > > 00:14:01 v #17038 > > ╭─[ 3.23s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:01 v #17039 > > │ .fsx output: │ 00:14:01 v #17040 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:14:01 v #17041 > > │ │ 00:14:01 v #17042 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:01 v #17043 > > 00:14:01 v #17044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:01 v #17045 > > //// test 00:14:01 v #17046 > > ///! fsharp 00:14:01 v #17047 > > ///! cuda 00:14:01 v #17048 > > ///! rust 00:14:01 v #17049 > > ///! typescript 00:14:01 v #17050 > > ///! python 00:14:01 v #17051 > > 00:14:01 v #17052 > > (1i32, 2i32) 00:14:01 v #17053 > > ||> flip pair 00:14:01 v #17054 > > |> _assert_eq (2, 1) 00:14:04 v #17055 > > 00:14:04 v #17056 > > ╭─[ 3.31s - return value ]─────────────────────────────────────────────────────╮ 00:14:04 v #17057 > > │ .py output (Cuda): │ 00:14:04 v #17058 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:14:04 v #17059 > > │ │ 00:14:04 v #17060 > > │ .rs output: │ 00:14:04 v #17061 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:14:04 v #17062 > > │ │ 00:14:04 v #17063 > > │ .ts output: │ 00:14:04 v #17064 > > │ __assert_eq / actual: 2,1 / expected: 2,1 │ 00:14:04 v #17065 > > │ │ 00:14:04 v #17066 > > │ .py output: │ 00:14:04 v #17067 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:14:04 v #17068 > > │ │ 00:14:04 v #17069 > > │ │ 00:14:04 v #17070 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 v #17071 > > 00:14:04 v #17072 > > ╭─[ 3.31s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:04 v #17073 > > │ .fsx output: │ 00:14:04 v #17074 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1) │ 00:14:04 v #17075 > > │ │ 00:14:04 v #17076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 v #17077 > > 00:14:04 v #17078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 v #17079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 v #17080 > > │ ### fix_condition │ 00:14:04 v #17081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 v #17082 > > 00:14:04 v #17083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 v #17084 > > inl fix_condition x a b = 00:14:04 v #17085 > > if x () 00:14:04 v #17086 > > then a () |> fun x => $'(* fix_condition then' : () 00:14:04 v #17087 > > else 00:14:04 v #17088 > > $'fix_condition then *) else' : () 00:14:04 v #17089 > > b () |> fun x => $'(* fix_condition else' : () 00:14:04 v #17090 > > |> fun x => $'fix_condition else *)' : () 00:14:05 v #17091 > > 00:14:05 v #17092 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:05 v #17093 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:05 v #17094 > > │ ## type │ 00:14:05 v #17095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 v #17096 > > 00:14:05 v #17097 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:05 v #17098 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:05 v #17099 > > │ ### infer │ 00:14:05 v #17100 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 v #17101 > > 00:14:05 v #17102 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 v #17103 > > nominal infer = $'_' 00:14:05 v #17104 > > 00:14:05 v #17105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:05 v #17106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:05 v #17107 > > │ ### infer' │ 00:14:05 v #17108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 v #17109 > > 00:14:05 v #17110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 v #17111 > > nominal infer' t = $'_' 00:14:06 v #17112 > > 00:14:06 v #17113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:06 v #17114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:06 v #17115 > > │ ### any │ 00:14:06 v #17116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:06 v #17117 > > 00:14:06 v #17118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:06 v #17119 > > nominal any = $'obj' 00:14:06 v #17120 > > 00:14:06 v #17121 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:06 v #17122 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:06 v #17123 > > │ ### null │ 00:14:06 v #17124 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:06 v #17125 > > 00:14:06 v #17126 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:06 v #17127 > > inl null forall t. () : t = 00:14:06 v #17128 > > backend_switch { 00:14:06 v #17129 > > Fsharp = fun () => $'null |> unbox<`t>' : t 00:14:06 v #17130 > > Python = fun () => $'None' : t 00:14:06 v #17131 > > } 00:14:07 v #17132 > > 00:14:07 v #17133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:07 v #17134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:07 v #17135 > > │ ### defaultof │ 00:14:07 v #17136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:07 v #17137 > > 00:14:07 v #17138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:07 v #17139 > > inl defaultof forall t. () : t = 00:14:07 v #17140 > > $'Unchecked.defaultof<`t>' 00:14:07 v #17141 > > 00:14:07 v #17142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:07 v #17143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:07 v #17144 > > │ ### choice2' │ 00:14:07 v #17145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:07 v #17146 > > 00:14:07 v #17147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:07 v #17148 > > nominal choice2' a b = $'Choice<`a, `b>' 00:14:07 v #17149 > > 00:14:07 v #17150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:07 v #17151 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:07 v #17152 > > │ ### choice2_unbox │ 00:14:07 v #17153 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:07 v #17154 > > 00:14:07 v #17155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:07 v #17156 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 = 00:14:07 v #17157 > > run_target_args (fun () => choice) function 00:14:07 v #17158 > > | Fsharp _ => fun choice => 00:14:07 v #17159 > > inl c1of2 (x : t1) : _ _ t2 = C1of2 x 00:14:07 v #17160 > > inl c2of2 (x : t2) : _ t1 _ = C2of2 x 00:14:07 v #17161 > > inl c1of2 = join c1of2 00:14:07 v #17162 > > inl c2of2 = join c2of2 00:14:07 v #17163 > > $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x -> 00:14:07 v #17164 > > !c2of2 x' 00:14:07 v #17165 > > | _ => fun _ => null () 00:14:08 v #17166 > > 00:14:08 v #17167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 v #17168 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:08 v #17169 > > │ ## ref │ 00:14:08 v #17170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:08 v #17171 > > 00:14:08 v #17172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 v #17173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:08 v #17174 > > │ ### ref │ 00:14:08 v #17175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:08 v #17176 > > 00:14:08 v #17177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:08 v #17178 > > nominal ref t = $'`t ref' 00:14:08 v #17179 > > 00:14:08 v #17180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 v #17181 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:08 v #17182 > > │ ### new_ref │ 00:14:08 v #17183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:08 v #17184 > > 00:14:08 v #17185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:08 v #17186 > > inl new_ref forall t. (x : t) : ref t = 00:14:08 v #17187 > > $'ref !x ' 00:14:09 v #17188 > > 00:14:09 v #17189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:09 v #17190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:09 v #17191 > > │ ### ref_value │ 00:14:09 v #17192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:09 v #17193 > > 00:14:09 v #17194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:09 v #17195 > > inl ref_value forall t. (x : ref t) : t = 00:14:09 v #17196 > > $'!x.Value' 00:14:09 v #17197 > > 00:14:09 v #17198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:09 v #17199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:09 v #17200 > > │ ### ref_set_value │ 00:14:09 v #17201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:09 v #17202 > > 00:14:09 v #17203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:09 v #17204 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t = 00:14:09 v #17205 > > $'!ref.Value <- !value ' 00:14:09 v #17206 > > ref 00:14:10 v #17207 > > 00:14:10 v #17208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:10 v #17209 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:10 v #17210 > > │ ## convert │ 00:14:10 v #17211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:10 v #17212 > > 00:14:10 v #17213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:10 v #17214 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:10 v #17215 > > │ ### to │ 00:14:10 v #17216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:10 v #17217 > > 00:14:10 v #17218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:10 v #17219 > > inl to forall t u. (x : t) : u = 00:14:10 v #17220 > > $'!x ' : u 00:14:10 v #17221 > > 00:14:10 v #17222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:10 v #17223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:10 v #17224 > > │ ### convert │ 00:14:10 v #17225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:10 v #17226 > > 00:14:10 v #17227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:10 v #17228 > > inl convert forall t u. (x : t) : u = 00:14:10 v #17229 > > backend_switch { 00:14:10 v #17230 > > Fsharp = fun () => $'!x |> `u ' : u 00:14:10 v #17231 > > Python = fun () => $'`u(!x)' : u 00:14:10 v #17232 > > } 00:14:10 v #17233 > > 00:14:10 v #17234 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:10 v #17235 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:10 v #17236 > > │ ### unbox │ 00:14:10 v #17237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:10 v #17238 > > 00:14:10 v #17239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:10 v #17240 > > inl unbox forall t u. (x : t) : u = 00:14:10 v #17241 > > backend_switch { 00:14:10 v #17242 > > Fsharp = fun () => $'!x |> unbox<`u>' : u 00:14:10 v #17243 > > Python = fun () => x |> to : u 00:14:10 v #17244 > > } 00:14:11 v #17245 > > 00:14:11 v #17246 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 v #17247 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 v #17248 > > │ ### u8 │ 00:14:11 v #17249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 v #17250 > > 00:14:11 v #17251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 v #17252 > > inl u8 forall t. (x : t) : u8 = 00:14:11 v #17253 > > backend_switch { 00:14:11 v #17254 > > Fsharp = fun () => x |> $'uint8' : u8 00:14:11 v #17255 > > Python = fun () => x |> to : u8 00:14:11 v #17256 > > } 00:14:11 v #17257 > > 00:14:11 v #17258 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 v #17259 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 v #17260 > > │ ### u16 │ 00:14:11 v #17261 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 v #17262 > > 00:14:11 v #17263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 v #17264 > > inl u16 forall t. (x : t) : u16 = 00:14:11 v #17265 > > backend_switch { 00:14:11 v #17266 > > Fsharp = fun () => x |> $'uint16' : u16 00:14:11 v #17267 > > Python = fun () => $'!x & 0xFFFF' : u16 00:14:11 v #17268 > > } 00:14:12 v #17269 > > 00:14:12 v #17270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 v #17271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 v #17272 > > │ ### u64 │ 00:14:12 v #17273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 v #17274 > > 00:14:12 v #17275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 v #17276 > > inl u64 forall t. (x : t) : u64 = 00:14:12 v #17277 > > backend_switch { 00:14:12 v #17278 > > Fsharp = fun () => x |> $'uint64' : u64 00:14:12 v #17279 > > Python = fun () => x |> to : u64 00:14:12 v #17280 > > } 00:14:12 v #17281 > > 00:14:12 v #17282 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 v #17283 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 v #17284 > > │ ### i32 │ 00:14:12 v #17285 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 v #17286 > > 00:14:12 v #17287 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 v #17288 > > inl i32 forall t. (x : t) : i32 = 00:14:12 v #17289 > > backend_switch { 00:14:12 v #17290 > > Fsharp = fun () => x |> convert : i32 00:14:12 v #17291 > > Python = fun () => x |> convert : i32 00:14:12 v #17292 > > } 00:14:12 v #17293 > > 00:14:12 v #17294 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 v #17295 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 v #17296 > > │ ### i64 │ 00:14:12 v #17297 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 v #17298 > > 00:14:12 v #17299 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 v #17300 > > inl i64 forall t. (x : t) : i64 = 00:14:12 v #17301 > > backend_switch { 00:14:12 v #17302 > > Fsharp = fun () => x |> $'int64' : i64 00:14:12 v #17303 > > Python = fun () => x |> to : i64 00:14:12 v #17304 > > } 00:14:13 v #17305 > > 00:14:13 v #17306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 v #17307 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 v #17308 > > │ ### f32 │ 00:14:13 v #17309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 v #17310 > > 00:14:13 v #17311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 v #17312 > > inl f32 forall t. (x : t) : f32 = 00:14:13 v #17313 > > backend_switch { 00:14:13 v #17314 > > Fsharp = fun () => x |> $'float32' : f32 00:14:13 v #17315 > > Python = fun () => x |> to : f32 00:14:13 v #17316 > > } 00:14:13 v #17317 > > 00:14:13 v #17318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 v #17319 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 v #17320 > > │ ### f64 │ 00:14:13 v #17321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 v #17322 > > 00:14:13 v #17323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 v #17324 > > inl f64 forall t. (x : t) : f64 = 00:14:13 v #17325 > > backend_switch { 00:14:13 v #17326 > > Fsharp = fun () => x |> $'float' : f64 00:14:13 v #17327 > > Python = fun () => x |> to : f64 00:14:13 v #17328 > > } 00:14:14 v #17329 > > 00:14:14 v #17330 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:14 v #17331 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:14 v #17332 > > │ ### unativeint │ 00:14:14 v #17333 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:14 v #17334 > > 00:14:14 v #17335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:14 v #17336 > > nominal unativeint = $'unativeint' 00:14:14 v #17337 > > 00:14:14 v #17338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:14 v #17339 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:14 v #17340 > > │ ### convert_i32 │ 00:14:14 v #17341 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:14 v #17342 > > 00:14:14 v #17343 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:14 v #17344 > > inl convert_i32 forall t. (x : t) : i32 = 00:14:14 v #17345 > > backend_switch { 00:14:14 v #17346 > > Fsharp = fun () => x |> $'System.Convert.ToInt32' : i32 00:14:14 v #17347 > > Python = fun () => x |> to : i32 00:14:14 v #17348 > > } 00:14:15 v #17349 > > 00:14:15 v #17350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:15 v #17351 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:15 v #17352 > > │ ### convert_i32_base │ 00:14:15 v #17353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:15 v #17354 > > 00:14:15 v #17355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:15 v #17356 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 = 00:14:15 v #17357 > > backend_switch { 00:14:15 v #17358 > > Fsharp = fun () => $'System.Convert.ToInt32 (!x, !base)' : i32 00:14:15 v #17359 > > Python = fun () => $'int (!x, !base)' : i32 00:14:15 v #17360 > > } 00:14:15 v #17361 > > 00:14:15 v #17362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:15 v #17363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:15 v #17364 > > │ ### (:>) │ 00:14:15 v #17365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:15 v #17366 > > 00:14:15 v #17367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:15 v #17368 > > prototype (~:>) r : forall t. t -> r 00:14:16 v #17369 > > 00:14:16 v #17370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 v #17371 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:16 v #17372 > > │ ### to_any │ 00:14:16 v #17373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:16 v #17374 > > 00:14:16 v #17375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:16 v #17376 > > inl to_any forall t. (obj : t) : any = 00:14:16 v #17377 > > obj |> to 00:14:16 v #17378 > > 00:14:16 v #17379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 v #17380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:16 v #17381 > > │ ### (~:>) any │ 00:14:16 v #17382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:16 v #17383 > > 00:14:16 v #17384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:16 v #17385 > > instance (~:>) any = to_any 00:14:16 v #17386 > > 00:14:16 v #17387 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 v #17388 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:16 v #17389 > > │ ## error │ 00:14:16 v #17390 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:16 v #17391 > > 00:14:16 v #17392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 v #17393 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:16 v #17394 > > │ ### exn │ 00:14:16 v #17395 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:16 v #17396 > > 00:14:16 v #17397 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:16 v #17398 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException' 00:14:16 v #17399 > > })" 00:14:16 v #17400 > > 00:14:16 v #17401 > > inl exn x = 00:14:16 v #17402 > > x |> $'`exn ' 00:14:17 v #17403 > > 00:14:17 v #17404 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:17 v #17405 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:17 v #17406 > > │ ### try │ 00:14:17 v #17407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:17 v #17408 > > 00:14:17 v #17409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:17 v #17410 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t = 00:14:17 v #17411 > > inl some x : option t = Some x 00:14:17 v #17412 > > inl some = dyn some 00:14:17 v #17413 > > inl fn = dyn fn 00:14:17 v #17414 > > inl ex_fn = dyn ex_fn 00:14:17 v #17415 > > backend_switch { 00:14:17 v #17416 > > Fsharp = fun () => 00:14:17 v #17417 > > $'let result = ref !(None : option t)' 00:14:17 v #17418 > > $'try' 00:14:17 v #17419 > > $' result.Value <- !fn () |> !some ' 00:14:17 v #17420 > > $'with ex ->' 00:14:17 v #17421 > > $' result.Value <- !ex_fn ex ' 00:14:17 v #17422 > > $'result.Value' : option t 00:14:17 v #17423 > > Python = fun () => 00:14:17 v #17424 > > $'result = !(None : option t)' 00:14:17 v #17425 > > inl fn = dyn fn 00:14:17 v #17426 > > inl ex_fn = dyn ex_fn 00:14:17 v #17427 > > $'try:' 00:14:17 v #17428 > > $' result = !some(!fn())\n \'\'\'' 00:14:17 v #17429 > > $'\'\'\'' 00:14:17 v #17430 > > $'except Exception as e:' 00:14:17 v #17431 > > $' result = !ex_fn(e)' 00:14:17 v #17432 > > $'result' : option t 00:14:17 v #17433 > > } 00:14:17 v #17434 > > 00:14:17 v #17435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:17 v #17436 > > //// test 00:14:17 v #17437 > > ///! fsharp 00:14:17 v #17438 > > ///! cuda 00:14:17 v #17439 > > ///! rust 00:14:17 v #17440 > > ///! typescript 00:14:17 v #17441 > > ///! python 00:14:17 v #17442 > > 00:14:17 v #17443 > > try 00:14:17 v #17444 > > fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format 00:14:17 v #17445 > > (fun ex => $'!ex ' |> sm'.format_exception |> Some) 00:14:17 v #17446 > > |> optionm.value 00:14:17 v #17447 > > |> _assert_eq (run_target function 00:14:17 v #17448 > > | Fsharp => fun () => join "System.IndexOutOfRangeException: Index was 00:14:17 v #17449 > > outside the bounds of the array." 00:14:17 v #17450 > > | Cuda => fun () => "index 1 is out of bounds for axis 0 with size 1" 00:14:17 v #17451 > > | Rust => fun () => "Exception { message: \"index out of bounds: the len is 00:14:17 v #17452 > > 1 but the index is 1\" }" 00:14:17 v #17453 > > | TypeScript => fun () => "Error: Index was outside the bounds of the 00:14:17 v #17454 > > array.\\nParameter name: index" 00:14:17 v #17455 > > | Python => fun () => "array index out of range" 00:14:17 v #17456 > > ) 00:14:21 v #17457 > > 00:14:21 v #17458 > > ╭─[ 3.76s - return value ]─────────────────────────────────────────────────────╮ 00:14:21 v #17459 > > │ .py output (Cuda): │ 00:14:21 v #17460 > > │ __assert_eq / actual: index 1 is out of bounds for axis 0 with size 1 / │ 00:14:21 v #17461 > > │ expected: index 1 is out of bounds for axis 0 with size 1 │ 00:14:21 v #17462 > > │ │ 00:14:21 v #17463 > > │ .rs output: │ 00:14:21 v #17464 > > │ __assert_eq / actual: "Exception { message: "index out of bounds: the len is │ 00:14:21 v #17465 > > │ 1 but the index is 1" }" / expected: "Exception { message: "index out of │ 00:14:21 v #17466 > > │ bounds: the len is 1 but the index is 1" }" │ 00:14:21 v #17467 > > │ │ 00:14:21 v #17468 > > │ .ts output: │ 00:14:21 v #17469 > > │ __assert_eq / actual: Error: Index was outside the bounds of the │ 00:14:21 v #17470 > > │ array.\nParameter name: index / expected: Error: Index was outside the │ 00:14:21 v #17471 > > │ bounds of the array.\nParameter name: index │ 00:14:21 v #17472 > > │ │ 00:14:21 v #17473 > > │ .py output: │ 00:14:21 v #17474 > > │ __assert_eq / actual: array index out of range / expected: array index out │ 00:14:21 v #17475 > > │ of range │ 00:14:21 v #17476 > > │ │ 00:14:21 v #17477 > > │ │ 00:14:21 v #17478 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 v #17479 > > 00:14:21 v #17480 > > ╭─[ 3.76s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:21 v #17481 > > │ .fsx output: │ 00:14:21 v #17482 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index was outside │ 00:14:21 v #17483 > > │ the bounds of the array." / expected: "System.IndexOutOfRangeException: │ 00:14:21 v #17484 > > │ Index was outside the bounds of the array." │ 00:14:21 v #17485 > > │ │ 00:14:21 v #17486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 v #17487 > > 00:14:21 v #17488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 v #17489 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 v #17490 > > │ ### try_unit │ 00:14:21 v #17491 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 v #17492 > > 00:14:21 v #17493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 v #17494 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : (() -> exn) -> ()) : t = 00:14:21 v #17495 > > backend_switch { 00:14:21 v #17496 > > Fsharp = fun () => $'try' : () 00:14:21 v #17497 > > Python = fun () => $'try:' : () 00:14:21 v #17498 > > } 00:14:21 v #17499 > > fn |> indent 00:14:21 v #17500 > > backend_switch { 00:14:21 v #17501 > > Fsharp = fun () => $'with ex ->' : () 00:14:21 v #17502 > > Python = fun () => $'except Exception as ex:' : () 00:14:21 v #17503 > > } 00:14:21 v #17504 > > fun () => 00:14:21 v #17505 > > inl ex = $'ex' 00:14:21 v #17506 > > inl ex () = 00:14:21 v #17507 > > ex 00:14:21 v #17508 > > ex_fn ex 00:14:21 v #17509 > > |> indent 00:14:21 v #17510 > > backend_switch { 00:14:21 v #17511 > > Fsharp = fun () => 00:14:21 v #17512 > > $'(* try_unit' 00:14:21 v #17513 > > $'try_unit *)' : t 00:14:21 v #17514 > > Python = fun () => $'' : t 00:14:21 v #17515 > > } 00:14:21 v #17516 > > 00:14:21 v #17517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 v #17518 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 v #17519 > > │ ### try_unit' │ 00:14:21 v #17520 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 v #17521 > > 00:14:21 v #17522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 v #17523 > > inl try_unit' forall t. (ex_fn : (() -> exn) -> ()) (fn : () -> ()) : t = 00:14:21 v #17524 > > try_unit fn ex_fn 00:14:22 v #17525 > > 00:14:22 v #17526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 v #17527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 v #17528 > > │ ### try_finally │ 00:14:22 v #17529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 v #17530 > > 00:14:22 v #17531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 v #17532 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t = 00:14:22 v #17533 > > backend_switch { 00:14:22 v #17534 > > Fsharp = fun () => $'try' : () 00:14:22 v #17535 > > Python = fun () => $'try:' : () 00:14:22 v #17536 > > } 00:14:22 v #17537 > > fn |> indent 00:14:22 v #17538 > > backend_switch { 00:14:22 v #17539 > > Fsharp = fun () => $'finally' : () 00:14:22 v #17540 > > Python = fun () => $'finally:' : () 00:14:22 v #17541 > > } 00:14:22 v #17542 > > finally |> indent 00:14:22 v #17543 > > backend_switch { 00:14:22 v #17544 > > Fsharp = fun () => 00:14:22 v #17545 > > $'(* try_finally' 00:14:22 v #17546 > > $'try_finally *)' 00:14:22 v #17547 > > () 00:14:22 v #17548 > > Python = fun () => () 00:14:22 v #17549 > > } 00:14:22 v #17550 > 00:01:22 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 70137 } 00:14:22 v #17551 > 00:01:22 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/base.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:24 v #17552 > 00:01:24 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/base.dib.ipynb to html 00:14:24 v #17553 > 00:01:24 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:14:24 v #17554 > 00:01:24 v #7 ! validate(nb) 00:14:24 v #17555 > 00:01:24 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:14:24 v #17556 > 00:01:24 v #9 ! return _pygments_highlight( 00:14:25 v #17557 > 00:01:25 v #10 ! [NbConvertApp] Writing 443866 bytes to c:\home\git\polyglot\lib\spiral\base.dib.html 00:14:25 v #17558 > 00:01:25 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:14:25 v #17559 > 00:01:25 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:14:25 v #17560 > 00:01:25 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:26 v #17561 > 00:01:26 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:14:26 v #17562 > 00:01:26 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:14:26 v #17563 > 00:01:26 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 71046 } 00:14:26 d #17564 runtime.execute_with_options_async / { exit_code = 0; output_length = 76413 } 00:14:26 d #17 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path base.dib --retries 3 00:14:26 d #17565 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path date_time.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:26 v #17566 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) } 00:14:26 v #17567 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/date_time.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/date_time.dib" --output-path "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:14:28 v #17568 > > 00:14:28 v #17569 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:28 v #17570 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:28 v #17571 > > │ # date_time │ 00:14:28 v #17572 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:31 v #17573 > > 00:14:31 v #17574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:31 v #17575 > > open rust.rust_operators 00:14:31 v #17576 > > open sm'_operators 00:14:32 v #17577 > > 00:14:32 v #17578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:32 v #17579 > > //// test 00:14:32 v #17580 > > 00:14:32 v #17581 > > open testing 00:14:33 v #17582 > > 00:14:33 v #17583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:33 v #17584 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:33 v #17585 > > │ ## date_time │ 00:14:33 v #17586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:33 v #17587 > > 00:14:33 v #17588 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:33 v #17589 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:33 v #17590 > > │ ### timestamp │ 00:14:33 v #17591 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:33 v #17592 > > 00:14:33 v #17593 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:33 v #17594 > > nominal timestamp_python = 00:14:33 v #17595 > > `( 00:14:33 v #17596 > > backend_switch `(()) `({}) { 00:14:33 v #17597 > > Python = (fun () => global "import datetime") : () -> () 00:14:33 v #17598 > > } 00:14:33 v #17599 > > $'' : i64 00:14:33 v #17600 > > ) 00:14:33 v #17601 > > type timestamp_switch = 00:14:33 v #17602 > > { 00:14:33 v #17603 > > Fsharp : i64 00:14:33 v #17604 > > Python : timestamp_python 00:14:33 v #17605 > > } 00:14:33 v #17606 > > nominal timestamp = $'backend_switch `(timestamp_switch)' 00:14:33 v #17607 > > 00:14:33 v #17608 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:33 v #17609 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:33 v #17610 > > │ ### timestamp_guid │ 00:14:33 v #17611 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:33 v #17612 > > 00:14:33 v #17613 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:33 v #17614 > > type timestamp_guid = guid.guid 00:14:33 v #17615 > > 00:14:33 v #17616 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:33 v #17617 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:33 v #17618 > > │ ### date_time_guid │ 00:14:33 v #17619 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:33 v #17620 > > 00:14:33 v #17621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:33 v #17622 > > type date_time_guid = guid.guid 00:14:34 v #17623 > > 00:14:34 v #17624 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:34 v #17625 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:34 v #17626 > > │ ### test_guid │ 00:14:34 v #17627 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 v #17628 > > 00:14:34 v #17629 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:34 v #17630 > > //// test 00:14:34 v #17631 > > 00:14:34 v #17632 > > inl test_guid () = 00:14:34 v #17633 > > "6543210F-EDCB-A987-6543-210FEDCBA987" |> guid.new_guid 00:14:34 v #17634 > > 00:14:34 v #17635 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:34 v #17636 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:34 v #17637 > > │ ## fsharp │ 00:14:34 v #17638 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 v #17639 > > 00:14:34 v #17640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:34 v #17641 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:34 v #17642 > > │ ### date_time │ 00:14:34 v #17643 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 v #17644 > > 00:14:34 v #17645 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:34 v #17646 > > nominal date_time_python = 00:14:34 v #17647 > > `( 00:14:34 v #17648 > > backend_switch `(()) `({}) { 00:14:34 v #17649 > > Python = (fun () => global "import datetime") : () -> () 00:14:34 v #17650 > > } 00:14:34 v #17651 > > $'' : $'datetime.datetime' 00:14:34 v #17652 > > ) 00:14:34 v #17653 > > type date_time_switch = 00:14:34 v #17654 > > { 00:14:34 v #17655 > > Fsharp : $'System.DateTime' 00:14:34 v #17656 > > Python : date_time_python 00:14:34 v #17657 > > } 00:14:34 v #17658 > > nominal date_time = $'backend_switch `(date_time_switch)' 00:14:35 v #17659 > > 00:14:35 v #17660 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:35 v #17661 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:35 v #17662 > > │ ### year │ 00:14:35 v #17663 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:35 v #17664 > > 00:14:35 v #17665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:35 v #17666 > > inl year (date_time : date_time) : i32 = 00:14:35 v #17667 > > backend_switch { 00:14:35 v #17668 > > Fsharp = fun () => date_time |> $'_.Year' : i32 00:14:35 v #17669 > > Python = fun () => $'!date_time.year' : i32 00:14:35 v #17670 > > } 00:14:35 v #17671 > > 00:14:35 v #17672 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:35 v #17673 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:35 v #17674 > > │ ### format │ 00:14:35 v #17675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:35 v #17676 > > 00:14:35 v #17677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:35 v #17678 > > inl format (format : string) (date_time : date_time) : string = 00:14:35 v #17679 > > backend_switch { 00:14:35 v #17680 > > Fsharp = fun () => 00:14:35 v #17681 > > inl format = 00:14:35 v #17682 > > if format = "" 00:14:35 v #17683 > > then "M-d-y hh:mm:ss tt" 00:14:35 v #17684 > > else format 00:14:35 v #17685 > > $'!date_time.ToString' format : string 00:14:35 v #17686 > > Python = fun () => 00:14:35 v #17687 > > inl date_time = join date_time 00:14:35 v #17688 > > if format <> "" 00:14:35 v #17689 > > then $'!date_time.strftime(!format)' : string 00:14:35 v #17690 > > elif year date_time < 1000 00:14:35 v #17691 > > then $'\'{dt.month}-{dt.day}-{dt.year} {dt:%I}:{dt:%M}:{dt:%S} 00:14:35 v #17692 > > {dt:%p}\'.format(dt=!date_time)' : string 00:14:35 v #17693 > > else $'\'{dt.month}-{dt.day}-{dt:%y} {dt:%I}:{dt:%M}:{dt:%S} 00:14:35 v #17694 > > {dt:%p}\'.format(dt=!date_time)' : string 00:14:35 v #17695 > > } 00:14:35 v #17696 > > 00:14:35 v #17697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:35 v #17698 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:35 v #17699 > > │ ### format_iso8601 │ 00:14:35 v #17700 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:35 v #17701 > > 00:14:35 v #17702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:35 v #17703 > > inl format_iso8601 (date_time : date_time) : string = 00:14:35 v #17704 > > backend_switch { 00:14:35 v #17705 > > Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" : 00:14:35 v #17706 > > string 00:14:35 v #17707 > > Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string 00:14:35 v #17708 > > } 00:14:36 v #17709 > > 00:14:36 v #17710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:36 v #17711 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:36 v #17712 > > │ ### min_value │ 00:14:36 v #17713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:36 v #17714 > > 00:14:36 v #17715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:36 v #17716 > > inl min_value () : date_time = 00:14:36 v #17717 > > backend_switch { 00:14:36 v #17718 > > Fsharp = fun () => $'System.DateTime.MinValue' : date_time 00:14:36 v #17719 > > Python = fun () => $'datetime.datetime.min' : date_time 00:14:36 v #17720 > > } 00:14:36 v #17721 > > 00:14:36 v #17722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:36 v #17723 > > //// test 00:14:36 v #17724 > > ///! fsharp 00:14:36 v #17725 > > ///! cuda 00:14:36 v #17726 > > 00:14:36 v #17727 > > min_value () 00:14:36 v #17728 > > |> format "" 00:14:36 v #17729 > > |> _assert_eq "1-1-1 12:00:00 AM" 00:14:38 v #17730 > > 00:14:38 v #17731 > > ╭─[ 1.89s - return value ]─────────────────────────────────────────────────────╮ 00:14:38 v #17732 > > │ .py output (Cuda): │ 00:14:38 v #17733 > > │ __assert_eq / actual: 1-1-1 12:00:00 AM / expected: 1-1-1 12:00:00 AM │ 00:14:38 v #17734 > > │ │ 00:14:38 v #17735 > > │ │ 00:14:38 v #17736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:38 v #17737 > > 00:14:38 v #17738 > > ╭─[ 1.90s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:38 v #17739 > > │ .fsx output: │ 00:14:38 v #17740 > > │ __assert_eq / actual: "1-1-1 12:00:00 AM" / expected: "1-1-1 12:00:00 AM" │ 00:14:38 v #17741 > > │ │ 00:14:38 v #17742 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:38 v #17743 > > 00:14:38 v #17744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:38 v #17745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:38 v #17746 > > │ ### max_value │ 00:14:38 v #17747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:38 v #17748 > > 00:14:38 v #17749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:38 v #17750 > > inl max_value () : date_time = 00:14:38 v #17751 > > backend_switch { 00:14:38 v #17752 > > Fsharp = fun () => $'System.DateTime.MaxValue' : date_time 00:14:38 v #17753 > > Python = fun () => $'datetime.datetime.max' : date_time 00:14:38 v #17754 > > } 00:14:39 v #17755 > > 00:14:39 v #17756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:39 v #17757 > > //// test 00:14:39 v #17758 > > ///! fsharp 00:14:39 v #17759 > > ///! cuda 00:14:39 v #17760 > > 00:14:39 v #17761 > > max_value () 00:14:39 v #17762 > > |> format "" 00:14:39 v #17763 > > |> _assert_eq "12-31-99 11:59:59 PM" 00:14:40 v #17764 > > 00:14:40 v #17765 > > ╭─[ 1.17s - return value ]─────────────────────────────────────────────────────╮ 00:14:40 v #17766 > > │ .py output (Cuda): │ 00:14:40 v #17767 > > │ __assert_eq / actual: 12-31-99 11:59:59 PM / expected: 12-31-99 11:59:59 PM │ 00:14:40 v #17768 > > │ │ 00:14:40 v #17769 > > │ │ 00:14:40 v #17770 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:40 v #17771 > > 00:14:40 v #17772 > > ╭─[ 1.17s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:40 v #17773 > > │ .fsx output: │ 00:14:40 v #17774 > > │ __assert_eq / actual: "12-31-99 11:59:59 PM" / expected: "12-31-99 11:59:59 │ 00:14:40 v #17775 > > │ PM" │ 00:14:40 v #17776 > > │ │ 00:14:40 v #17777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:40 v #17778 > > 00:14:40 v #17779 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:40 v #17780 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:40 v #17781 > > │ ### unix_epoch │ 00:14:40 v #17782 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:40 v #17783 > > 00:14:40 v #17784 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:40 v #17785 > > inl unix_epoch () : date_time = 00:14:40 v #17786 > > backend_switch { 00:14:40 v #17787 > > Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time 00:14:40 v #17788 > > Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time 00:14:40 v #17789 > > } 00:14:40 v #17790 > > 00:14:40 v #17791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:40 v #17792 > > //// test 00:14:40 v #17793 > > ///! fsharp 00:14:40 v #17794 > > ///! cuda 00:14:40 v #17795 > > 00:14:40 v #17796 > > unix_epoch () 00:14:40 v #17797 > > |> format "" 00:14:40 v #17798 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:42 v #17799 > > 00:14:42 v #17800 > > ╭─[ 1.21s - return value ]─────────────────────────────────────────────────────╮ 00:14:42 v #17801 > > │ .py output (Cuda): │ 00:14:42 v #17802 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:42 v #17803 > > │ │ 00:14:42 v #17804 > > │ │ 00:14:42 v #17805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:42 v #17806 > > 00:14:42 v #17807 > > ╭─[ 1.21s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:42 v #17808 > > │ .fsx output: │ 00:14:42 v #17809 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:42 v #17810 > > │ │ 00:14:42 v #17811 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:42 v #17812 > > 00:14:42 v #17813 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:42 v #17814 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:42 v #17815 > > │ ### date_time_milliseconds │ 00:14:42 v #17816 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:42 v #17817 > > 00:14:42 v #17818 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:42 v #17819 > > inl date_time_milliseconds 00:14:42 v #17820 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:14:42 v #17821 > > int) (millisecond : int) 00:14:42 v #17822 > > : date_time 00:14:42 v #17823 > > = 00:14:42 v #17824 > > backend_switch { 00:14:42 v #17825 > > Fsharp = fun () => 00:14:42 v #17826 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:14:42 v #17827 > > !millisecond)' : date_time 00:14:42 v #17828 > > Python = fun () => 00:14:42 v #17829 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:14:42 v #17830 > > !millisecond)' : date_time 00:14:42 v #17831 > > } 00:14:42 v #17832 > > 00:14:42 v #17833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:42 v #17834 > > //// test 00:14:42 v #17835 > > ///! fsharp 00:14:42 v #17836 > > ///! cuda 00:14:42 v #17837 > > 00:14:42 v #17838 > > date_time_milliseconds 1970 1 1 0 0 0 0 00:14:42 v #17839 > > |> format "" 00:14:42 v #17840 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:43 v #17841 > > 00:14:43 v #17842 > > ╭─[ 1.28s - return value ]─────────────────────────────────────────────────────╮ 00:14:43 v #17843 > > │ .py output (Cuda): │ 00:14:43 v #17844 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:43 v #17845 > > │ │ 00:14:43 v #17846 > > │ │ 00:14:43 v #17847 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:43 v #17848 > > 00:14:43 v #17849 > > ╭─[ 1.28s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:43 v #17850 > > │ .fsx output: │ 00:14:43 v #17851 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:43 v #17852 > > │ │ 00:14:43 v #17853 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:43 v #17854 > > 00:14:43 v #17855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:43 v #17856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:43 v #17857 > > │ ### date_time_utc │ 00:14:43 v #17858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:43 v #17859 > > 00:14:43 v #17860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:43 v #17861 > > inl date_time_utc 00:14:43 v #17862 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:14:43 v #17863 > > int) 00:14:43 v #17864 > > : date_time 00:14:43 v #17865 > > = 00:14:43 v #17866 > > backend_switch { 00:14:43 v #17867 > > Fsharp = fun () => 00:14:43 v #17868 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:14:43 v #17869 > > System.DateTimeKind.Utc)' : date_time 00:14:43 v #17870 > > Python = fun () => 00:14:43 v #17871 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:14:43 v #17872 > > tzinfo=datetime.timezone.utc)' : date_time 00:14:43 v #17873 > > } 00:14:44 v #17874 > > 00:14:44 v #17875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:44 v #17876 > > //// test 00:14:44 v #17877 > > ///! fsharp 00:14:44 v #17878 > > ///! cuda 00:14:44 v #17879 > > 00:14:44 v #17880 > > date_time_utc 1970 1 1 0 0 0 00:14:44 v #17881 > > |> format "" 00:14:44 v #17882 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:45 v #17883 > > 00:14:45 v #17884 > > ╭─[ 1.24s - return value ]─────────────────────────────────────────────────────╮ 00:14:45 v #17885 > > │ .py output (Cuda): │ 00:14:45 v #17886 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:45 v #17887 > > │ │ 00:14:45 v #17888 > > │ │ 00:14:45 v #17889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:45 v #17890 > > 00:14:45 v #17891 > > ╭─[ 1.24s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:45 v #17892 > > │ .fsx output: │ 00:14:45 v #17893 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:45 v #17894 > > │ │ 00:14:45 v #17895 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:45 v #17896 > > 00:14:45 v #17897 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:45 v #17898 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:45 v #17899 > > │ ### date_time_kind │ 00:14:45 v #17900 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:45 v #17901 > > 00:14:45 v #17902 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:45 v #17903 > > union date_time_kind = 00:14:45 v #17904 > > | Unspecified 00:14:45 v #17905 > > | Utc 00:14:45 v #17906 > > | Local 00:14:45 v #17907 > > 00:14:45 v #17908 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:45 v #17909 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:45 v #17910 > > │ ### specify_date_kind │ 00:14:45 v #17911 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:45 v #17912 > > 00:14:45 v #17913 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:45 v #17914 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) : 00:14:45 v #17915 > > date_time = 00:14:45 v #17916 > > backend_switch { 00:14:45 v #17917 > > Fsharp = fun () => 00:14:45 v #17918 > > inl kind : $'System.DateTimeKind' = 00:14:45 v #17919 > > match kind with 00:14:45 v #17920 > > | Unspecified => $'System.DateTimeKind.Unspecified' 00:14:45 v #17921 > > | Utc => $'System.DateTimeKind.Utc' 00:14:45 v #17922 > > | Local => $'System.DateTimeKind.Local' 00:14:45 v #17923 > > $'System.DateTime.SpecifyKind (!date_time, !kind)' : date_time 00:14:45 v #17924 > > Python = fun () => $'!date_time.replace(tzinfo=None)' : date_time 00:14:45 v #17925 > > } 00:14:46 v #17926 > > 00:14:46 v #17927 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:46 v #17928 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:46 v #17929 > > │ ### to_universal_time │ 00:14:46 v #17930 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:46 v #17931 > > 00:14:46 v #17932 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:46 v #17933 > > inl to_universal_time (date_time : date_time) : date_time = 00:14:46 v #17934 > > backend_switch { 00:14:46 v #17935 > > Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time 00:14:46 v #17936 > > Python = fun () => $'!date_time.replace(tzinfo=datetime.timezone.utc)' : 00:14:46 v #17937 > > date_time 00:14:46 v #17938 > > } 00:14:46 v #17939 > > 00:14:46 v #17940 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:46 v #17941 > > //// test 00:14:46 v #17942 > > ///! fsharp 00:14:46 v #17943 > > ///! cuda 00:14:46 v #17944 > > 00:14:46 v #17945 > > date_time_milliseconds 1970 1 1 0 0 0 0 00:14:46 v #17946 > > |> specify_date_kind Utc 00:14:46 v #17947 > > |> to_universal_time 00:14:46 v #17948 > > |> format "" 00:14:46 v #17949 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:47 v #17950 > > 00:14:47 v #17951 > > ╭─[ 1.18s - return value ]─────────────────────────────────────────────────────╮ 00:14:47 v #17952 > > │ .py output (Cuda): │ 00:14:47 v #17953 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:47 v #17954 > > │ │ 00:14:47 v #17955 > > │ │ 00:14:47 v #17956 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:47 v #17957 > > 00:14:47 v #17958 > > ╭─[ 1.18s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:47 v #17959 > > │ .fsx output: │ 00:14:47 v #17960 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:47 v #17961 > > │ │ 00:14:47 v #17962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:47 v #17963 > > 00:14:47 v #17964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:47 v #17965 > > //// test 00:14:47 v #17966 > > ///! fsharp 00:14:47 v #17967 > > ///! cuda 00:14:47 v #17968 > > 00:14:47 v #17969 > > date_time_utc 1970 1 1 0 0 0 00:14:47 v #17970 > > |> specify_date_kind Utc 00:14:47 v #17971 > > |> format "" 00:14:47 v #17972 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:49 v #17973 > > 00:14:49 v #17974 > > ╭─[ 1.17s - return value ]─────────────────────────────────────────────────────╮ 00:14:49 v #17975 > > │ .py output (Cuda): │ 00:14:49 v #17976 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:49 v #17977 > > │ │ 00:14:49 v #17978 > > │ │ 00:14:49 v #17979 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:49 v #17980 > > 00:14:49 v #17981 > > ╭─[ 1.17s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:49 v #17982 > > │ .fsx output: │ 00:14:49 v #17983 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:49 v #17984 > > │ │ 00:14:49 v #17985 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:49 v #17986 > > 00:14:49 v #17987 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:49 v #17988 > > //// test 00:14:49 v #17989 > > ///! fsharp 00:14:49 v #17990 > > ///! cuda 00:14:49 v #17991 > > 00:14:49 v #17992 > > date_time_utc 1970 1 1 0 0 0 00:14:49 v #17993 > > |> specify_date_kind Local 00:14:49 v #17994 > > |> format "" 00:14:49 v #17995 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:50 v #17996 > > 00:14:50 v #17997 > > ╭─[ 1.13s - return value ]─────────────────────────────────────────────────────╮ 00:14:50 v #17998 > > │ .py output (Cuda): │ 00:14:50 v #17999 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:50 v #18000 > > │ │ 00:14:50 v #18001 > > │ │ 00:14:50 v #18002 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:50 v #18003 > > 00:14:50 v #18004 > > ╭─[ 1.13s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:50 v #18005 > > │ .fsx output: │ 00:14:50 v #18006 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:50 v #18007 > > │ │ 00:14:50 v #18008 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:50 v #18009 > > 00:14:50 v #18010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:50 v #18011 > > //// test 00:14:50 v #18012 > > ///! fsharp 00:14:50 v #18013 > > ///! cuda 00:14:50 v #18014 > > 00:14:50 v #18015 > > date_time_utc 1970 1 1 0 0 0 00:14:50 v #18016 > > |> specify_date_kind Unspecified 00:14:50 v #18017 > > |> format "" 00:14:50 v #18018 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:14:51 v #18019 > > 00:14:51 v #18020 > > ╭─[ 1.09s - return value ]─────────────────────────────────────────────────────╮ 00:14:51 v #18021 > > │ .py output (Cuda): │ 00:14:51 v #18022 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 12:00:00 AM │ 00:14:51 v #18023 > > │ │ 00:14:51 v #18024 > > │ │ 00:14:51 v #18025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:51 v #18026 > > 00:14:51 v #18027 > > ╭─[ 1.09s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:51 v #18028 > > │ .fsx output: │ 00:14:51 v #18029 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: "1-1-70 12:00:00 AM" │ 00:14:51 v #18030 > > │ │ 00:14:51 v #18031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:51 v #18032 > > 00:14:51 v #18033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:51 v #18034 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:51 v #18035 > > │ ### time_span │ 00:14:51 v #18036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:51 v #18037 > > 00:14:51 v #18038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:51 v #18039 > > nominal time_span_python = 00:14:51 v #18040 > > `( 00:14:51 v #18041 > > backend_switch `(()) `({}) { 00:14:51 v #18042 > > Python = (fun () => global "import datetime") : () -> () 00:14:51 v #18043 > > } 00:14:51 v #18044 > > $'' : $'datetime.timedelta' 00:14:51 v #18045 > > ) 00:14:51 v #18046 > > type time_span_switch = 00:14:51 v #18047 > > { 00:14:51 v #18048 > > Fsharp : $'System.TimeSpan' 00:14:51 v #18049 > > Python : time_span_python 00:14:51 v #18050 > > } 00:14:51 v #18051 > > nominal time_span = $'backend_switch `(time_span_switch)' 00:14:51 v #18052 > > 00:14:51 v #18053 > > inl time_span x : time_span = 00:14:51 v #18054 > > backend_switch { 00:14:51 v #18055 > > Fsharp = fun () => x |> convert : time_span 00:14:51 v #18056 > > Python = fun () => $'datetime.timedelta(!x)' : time_span 00:14:51 v #18057 > > } 00:14:51 v #18058 > > 00:14:51 v #18059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:51 v #18060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:51 v #18061 > > │ ### new_time_span │ 00:14:51 v #18062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:51 v #18063 > > 00:14:51 v #18064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:51 v #18065 > > inl new_time_span (a : date_time) (b : date_time) : time_span = 00:14:51 v #18066 > > $'!b - !a ' 00:14:52 v #18067 > > 00:14:52 v #18068 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:52 v #18069 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:52 v #18070 > > │ ### total_seconds │ 00:14:52 v #18071 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:52 v #18072 > > 00:14:52 v #18073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:52 v #18074 > > inl total_seconds (time_span : time_span) : f64 = 00:14:52 v #18075 > > backend_switch { 00:14:52 v #18076 > > Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64 00:14:52 v #18077 > > Python = fun () => $'!time_span.total_seconds()' : f64 00:14:52 v #18078 > > } 00:14:52 v #18079 > > 00:14:52 v #18080 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:52 v #18081 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:52 v #18082 > > │ ### ticks │ 00:14:52 v #18083 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:52 v #18084 > > 00:14:52 v #18085 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:52 v #18086 > > inl ticks (date_time : date_time) : timestamp = 00:14:52 v #18087 > > backend_switch { 00:14:52 v #18088 > > Fsharp = fun () => 00:14:52 v #18089 > > run_target function 00:14:52 v #18090 > > | Rust (Contract) => fun () => null () 00:14:52 v #18091 > > | _ => fun () => date_time |> $'_.Ticks' 00:14:52 v #18092 > > : timestamp 00:14:52 v #18093 > > Python = fun () => 00:14:52 v #18094 > > date_time |> new_time_span (min_value ()) |> total_seconds |> ((*) 00:14:52 v #18095 > > 10000000) |> convert : timestamp 00:14:52 v #18096 > > } 00:14:53 v #18097 > > 00:14:53 v #18098 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:53 v #18099 > > //// test 00:14:53 v #18100 > > ///! fsharp 00:14:53 v #18101 > > ///! cuda 00:14:53 v #18102 > > ///! rust 00:14:53 v #18103 > > 00:14:53 v #18104 > > unix_epoch () 00:14:53 v #18105 > > |> ticks 00:14:53 v #18106 > > |> _assert_eq' (621355968000000000i64 |> convert) 00:14:56 v #18107 > > 00:14:56 v #18108 > > ╭─[ 3.23s - return value ]─────────────────────────────────────────────────────╮ 00:14:56 v #18109 > > │ .py output (Cuda): │ 00:14:56 v #18110 > > │ __assert_eq' / actual: 621355968000000000 / expected: 621355968000000000 │ 00:14:56 v #18111 > > │ │ 00:14:56 v #18112 > > │ .rs output: │ 00:14:56 v #18113 > > │ __assert_eq' / actual: 621355968000000000 / expected: 621355968000000000 │ 00:14:56 v #18114 > > │ │ 00:14:56 v #18115 > > │ │ 00:14:56 v #18116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:56 v #18117 > > 00:14:56 v #18118 > > ╭─[ 3.23s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:56 v #18119 > > │ .fsx output: │ 00:14:56 v #18120 > > │ __assert_eq' / actual: 621355968000000000L / expected: 621355968000000000L │ 00:14:56 v #18121 > > │ │ 00:14:56 v #18122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:56 v #18123 > > 00:14:56 v #18124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:56 v #18125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:56 v #18126 > > │ ### time_span_format │ 00:14:56 v #18127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:56 v #18128 > > 00:14:56 v #18129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:56 v #18130 > > inl time_span_format (format : string) (time_span : time_span) : string = 00:14:56 v #18131 > > run_target function 00:14:56 v #18132 > > | TypeScript _ 00:14:56 v #18133 > > | Python _ => fun () => 00:14:56 v #18134 > > $'!time_span.ToString ("c", 00:14:56 v #18135 > > System.Globalization.CultureInfo.InvariantCulture)' 00:14:56 v #18136 > > | _ => fun () => 00:14:56 v #18137 > > backend_switch { 00:14:56 v #18138 > > Fsharp = fun () => $'!time_span.ToString !format ' : string 00:14:56 v #18139 > > Python = fun () => $'!time_span ' : string 00:14:56 v #18140 > > } 00:14:56 v #18141 > > 00:14:56 v #18142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:56 v #18143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:56 v #18144 > > │ ### hours │ 00:14:56 v #18145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:56 v #18146 > > 00:14:56 v #18147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:56 v #18148 > > inl hours (time_span : time_span) : i32 = 00:14:56 v #18149 > > backend_switch { 00:14:56 v #18150 > > Fsharp = fun () => time_span |> $'_.Hours' : i32 00:14:56 v #18151 > > Python = fun () => $'!time_span.seconds // 3600' : i32 00:14:56 v #18152 > > } 00:14:57 v #18153 > > 00:14:57 v #18154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:57 v #18155 > > //// test 00:14:57 v #18156 > > ///! fsharp 00:14:57 v #18157 > > ///! cuda 00:14:57 v #18158 > > ///! rust 00:14:57 v #18159 > > ///! typescript 00:14:57 v #18160 > > ///! python 00:14:57 v #18161 > > 00:14:57 v #18162 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:14:57 v #18163 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:14:57 v #18164 > > |> hours 00:14:57 v #18165 > > |> _assert_eq 10 00:15:00 v #18166 > > 00:15:00 v #18167 > > ╭─[ 3.42s - return value ]─────────────────────────────────────────────────────╮ 00:15:00 v #18168 > > │ .py output (Cuda): │ 00:15:00 v #18169 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:15:00 v #18170 > > │ │ 00:15:00 v #18171 > > │ .rs output: │ 00:15:00 v #18172 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:15:00 v #18173 > > │ │ 00:15:00 v #18174 > > │ .ts output: │ 00:15:00 v #18175 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:15:00 v #18176 > > │ │ 00:15:00 v #18177 > > │ .py output: │ 00:15:00 v #18178 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:15:00 v #18179 > > │ │ 00:15:00 v #18180 > > │ │ 00:15:00 v #18181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:00 v #18182 > > 00:15:00 v #18183 > > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:00 v #18184 > > │ .fsx output: │ 00:15:00 v #18185 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:15:00 v #18186 > > │ │ 00:15:00 v #18187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:00 v #18188 > > 00:15:00 v #18189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:00 v #18190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:00 v #18191 > > │ ### minutes │ 00:15:00 v #18192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:00 v #18193 > > 00:15:00 v #18194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:00 v #18195 > > inl minutes (time_span : time_span) : i32 = 00:15:00 v #18196 > > backend_switch { 00:15:00 v #18197 > > Fsharp = fun () => time_span |> $'_.Minutes' : i32 00:15:00 v #18198 > > Python = fun () => $'(!time_span.seconds // 60) % 60' : i32 00:15:00 v #18199 > > } 00:15:01 v #18200 > > 00:15:01 v #18201 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:01 v #18202 > > //// test 00:15:01 v #18203 > > ///! fsharp 00:15:01 v #18204 > > ///! cuda 00:15:01 v #18205 > > ///! rust 00:15:01 v #18206 > > ///! typescript 00:15:01 v #18207 > > ///! python 00:15:01 v #18208 > > 00:15:01 v #18209 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:15:01 v #18210 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:15:01 v #18211 > > |> minutes 00:15:01 v #18212 > > |> _assert_eq 11 00:15:04 v #18213 > > 00:15:04 v #18214 > > ╭─[ 3.43s - return value ]─────────────────────────────────────────────────────╮ 00:15:04 v #18215 > > │ .py output (Cuda): │ 00:15:04 v #18216 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:15:04 v #18217 > > │ │ 00:15:04 v #18218 > > │ .rs output: │ 00:15:04 v #18219 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:15:04 v #18220 > > │ │ 00:15:04 v #18221 > > │ .ts output: │ 00:15:04 v #18222 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:15:04 v #18223 > > │ │ 00:15:04 v #18224 > > │ .py output: │ 00:15:04 v #18225 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:15:04 v #18226 > > │ │ 00:15:04 v #18227 > > │ │ 00:15:04 v #18228 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:04 v #18229 > > 00:15:04 v #18230 > > ╭─[ 3.43s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:04 v #18231 > > │ .fsx output: │ 00:15:04 v #18232 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:15:04 v #18233 > > │ │ 00:15:04 v #18234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:04 v #18235 > > 00:15:04 v #18236 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:04 v #18237 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:04 v #18238 > > │ ### seconds │ 00:15:04 v #18239 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:04 v #18240 > > 00:15:04 v #18241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:04 v #18242 > > inl seconds (time_span : time_span) : i32 = 00:15:04 v #18243 > > backend_switch { 00:15:04 v #18244 > > Fsharp = fun () => time_span |> $'_.Seconds' : i32 00:15:04 v #18245 > > Python = fun () => $'!time_span.seconds % 60' : i32 00:15:04 v #18246 > > } 00:15:04 v #18247 > > 00:15:04 v #18248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:04 v #18249 > > //// test 00:15:04 v #18250 > > ///! fsharp 00:15:04 v #18251 > > ///! cuda 00:15:04 v #18252 > > ///! rust 00:15:04 v #18253 > > ///! typescript 00:15:04 v #18254 > > ///! python 00:15:04 v #18255 > > 00:15:04 v #18256 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:15:04 v #18257 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:15:04 v #18258 > > |> seconds 00:15:04 v #18259 > > |> _assert_eq 12 00:15:08 v #18260 > > 00:15:08 v #18261 > > ╭─[ 3.39s - return value ]─────────────────────────────────────────────────────╮ 00:15:08 v #18262 > > │ .py output (Cuda): │ 00:15:08 v #18263 > > │ __assert_eq / actual: 12 / expected: 12 │ 00:15:08 v #18264 > > │ │ 00:15:08 v #18265 > > │ .rs output: │ 00:15:08 v #18266 > > │ __assert_eq / actual: 12 / expected: 12 │ 00:15:08 v #18267 > > │ │ 00:15:08 v #18268 > > │ .ts output: │ 00:15:08 v #18269 > > │ __assert_eq / actual: 12 / expected: 12 │ 00:15:08 v #18270 > > │ │ 00:15:08 v #18271 > > │ .py output: │ 00:15:08 v #18272 > > │ __assert_eq / actual: 12 / expected: 12 │ 00:15:08 v #18273 > > │ │ 00:15:08 v #18274 > > │ │ 00:15:08 v #18275 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:08 v #18276 > > 00:15:08 v #18277 > > ╭─[ 3.39s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:08 v #18278 > > │ .fsx output: │ 00:15:08 v #18279 > > │ __assert_eq / actual: 12 / expected: 12 │ 00:15:08 v #18280 > > │ │ 00:15:08 v #18281 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:08 v #18282 > > 00:15:08 v #18283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:08 v #18284 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:08 v #18285 > > │ ### milliseconds │ 00:15:08 v #18286 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:08 v #18287 > > 00:15:08 v #18288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:08 v #18289 > > inl milliseconds (time_span : time_span) : i32 = 00:15:08 v #18290 > > backend_switch { 00:15:08 v #18291 > > Fsharp = fun () => time_span |> $'_.Milliseconds' : i32 00:15:08 v #18292 > > Python = fun () => $'!time_span.microseconds' : i32 00:15:08 v #18293 > > } 00:15:08 v #18294 > > 00:15:08 v #18295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:08 v #18296 > > //// test 00:15:08 v #18297 > > ///! fsharp 00:15:08 v #18298 > > ///! cuda 00:15:08 v #18299 > > ///! rust 00:15:08 v #18300 > > ///! typescript 00:15:08 v #18301 > > ///! python 00:15:08 v #18302 > > 00:15:08 v #18303 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:15:08 v #18304 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:15:08 v #18305 > > |> milliseconds 00:15:08 v #18306 > > |> _assert_eq 13 00:15:12 v #18307 > > 00:15:12 v #18308 > > ╭─[ 3.34s - return value ]─────────────────────────────────────────────────────╮ 00:15:12 v #18309 > > │ .py output (Cuda): │ 00:15:12 v #18310 > > │ __assert_eq / actual: 13 / expected: 13 │ 00:15:12 v #18311 > > │ │ 00:15:12 v #18312 > > │ .rs output: │ 00:15:12 v #18313 > > │ __assert_eq / actual: 13 / expected: 13 │ 00:15:12 v #18314 > > │ │ 00:15:12 v #18315 > > │ .ts output: │ 00:15:12 v #18316 > > │ __assert_eq / actual: 13 / expected: 13 │ 00:15:12 v #18317 > > │ │ 00:15:12 v #18318 > > │ .py output: │ 00:15:12 v #18319 > > │ __assert_eq / actual: 13 / expected: 13 │ 00:15:12 v #18320 > > │ │ 00:15:12 v #18321 > > │ │ 00:15:12 v #18322 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 v #18323 > > 00:15:12 v #18324 > > ╭─[ 3.34s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:12 v #18325 > > │ .fsx output: │ 00:15:12 v #18326 > > │ __assert_eq / actual: 13 / expected: 13 │ 00:15:12 v #18327 > > │ │ 00:15:12 v #18328 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 v #18329 > > 00:15:12 v #18330 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 v #18331 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 v #18332 > > │ ### time_zone_info │ 00:15:12 v #18333 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 v #18334 > > 00:15:12 v #18335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #18336 > > nominal time_zone_info = $'System.TimeZoneInfo' 00:15:12 v #18337 > > 00:15:12 v #18338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 v #18339 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 v #18340 > > │ ### add_days │ 00:15:12 v #18341 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 v #18342 > > 00:15:12 v #18343 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #18344 > > inl add_days (days : i32) (date_time : date_time) : date_time = 00:15:12 v #18345 > > $'!date_time.AddDays' days 00:15:12 v #18346 > > 00:15:12 v #18347 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 v #18348 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 v #18349 > > │ ### now │ 00:15:12 v #18350 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 v #18351 > > 00:15:12 v #18352 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #18353 > > inl now () : date_time = 00:15:12 v #18354 > > backend_switch { 00:15:12 v #18355 > > Fsharp = fun () => 00:15:12 v #18356 > > run_target function 00:15:12 v #18357 > > | Rust (Contract) => fun () => null () 00:15:12 v #18358 > > | _ => fun () => $'System.DateTime.Now' 00:15:12 v #18359 > > : date_time 00:15:12 v #18360 > > Python = fun () => $'datetime.datetime.now()' : date_time 00:15:12 v #18361 > > } 00:15:13 v #18362 > > 00:15:13 v #18363 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 v #18364 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 v #18365 > > │ ### utc_now │ 00:15:13 v #18366 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 v #18367 > > 00:15:13 v #18368 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 v #18369 > > inl utc_now () : date_time = 00:15:13 v #18370 > > backend_switch { 00:15:13 v #18371 > > Fsharp = fun () => $'System.DateTime.UtcNow' : date_time 00:15:13 v #18372 > > Python = fun () => $'datetime.datetime.utcnow()' : date_time 00:15:13 v #18373 > > } 00:15:13 v #18374 > > 00:15:13 v #18375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 v #18376 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 v #18377 > > │ ### stopwatch │ 00:15:13 v #18378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 v #18379 > > 00:15:13 v #18380 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 v #18381 > > nominal stopwatch_python = 00:15:13 v #18382 > > `( 00:15:13 v #18383 > > global "import timeit" 00:15:13 v #18384 > > $'' : $'timeit.default_timer' 00:15:13 v #18385 > > ) 00:15:13 v #18386 > > type stopwatch_switch = 00:15:13 v #18387 > > { 00:15:13 v #18388 > > Fsharp : $'System.Diagnostics.Stopwatch' 00:15:13 v #18389 > > Python : stopwatch_python 00:15:13 v #18390 > > } 00:15:13 v #18391 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)' 00:15:13 v #18392 > > 00:15:13 v #18393 > > inl stopwatch () : stopwatch = 00:15:13 v #18394 > > backend_switch { 00:15:13 v #18395 > > Fsharp = fun () => () |> convert : stopwatch 00:15:13 v #18396 > > Python = fun () => $'`stopwatch ' : stopwatch 00:15:13 v #18397 > > } 00:15:14 v #18398 > > 00:15:14 v #18399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 v #18400 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 = 00:15:14 v #18401 > > $'!stopwatch.ElapsedMilliseconds' 00:15:14 v #18402 > > 00:15:14 v #18403 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 v #18404 > > inl stopwatch_start (stopwatch : stopwatch) : () = 00:15:14 v #18405 > > $'!stopwatch.Start' () 00:15:15 v #18406 > > 00:15:15 v #18407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 v #18408 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 v #18409 > > │ ## rust │ 00:15:15 v #18410 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 v #18411 > > 00:15:15 v #18412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 v #18413 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 v #18414 > > │ ### duration │ 00:15:15 v #18415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 v #18416 > > 00:15:15 v #18417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 v #18418 > > nominal duration = 00:15:15 v #18419 > > `( 00:15:15 v #18420 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:15:15 v #18421 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration = 00:15:15 v #18422 > > class end" 00:15:15 v #18423 > > $'' : $'std_time_Duration' 00:15:15 v #18424 > > ) 00:15:15 v #18425 > > 00:15:15 v #18426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 v #18427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 v #18428 > > │ ### date_time' │ 00:15:15 v #18429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 v #18430 > > 00:15:15 v #18431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 v #18432 > > nominal date_time' t = 00:15:15 v #18433 > > `( 00:15:15 v #18434 > > backend_switch `(()) `({}) { 00:15:15 v #18435 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:15:15 v #18436 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> = 00:15:15 v #18437 > > class end") : () -> () 00:15:15 v #18438 > > } 00:15:15 v #18439 > > $'' : $'chrono_DateTime<`t>' 00:15:15 v #18440 > > ) 00:15:16 v #18441 > > 00:15:16 v #18442 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:16 v #18443 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:16 v #18444 > > │ ### local │ 00:15:16 v #18445 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:16 v #18446 > > 00:15:16 v #18447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:16 v #18448 > > nominal local = 00:15:16 v #18449 > > `( 00:15:16 v #18450 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:15:16 v #18451 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end" 00:15:16 v #18452 > > $'' : $'chrono_Local' 00:15:16 v #18453 > > ) 00:15:16 v #18454 > > 00:15:16 v #18455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:16 v #18456 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:16 v #18457 > > │ ### naive_date_time │ 00:15:16 v #18458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:16 v #18459 > > 00:15:16 v #18460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:16 v #18461 > > nominal naive_date_time = 00:15:16 v #18462 > > `( 00:15:16 v #18463 > > backend_switch `(()) `({}) { 00:15:16 v #18464 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:15:16 v #18465 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime 00:15:16 v #18466 > > = class end") : () -> () 00:15:16 v #18467 > > } 00:15:16 v #18468 > > $'' : $'chrono_NaiveDateTime' 00:15:16 v #18469 > > ) 00:15:16 v #18470 > > 00:15:16 v #18471 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:16 v #18472 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:16 v #18473 > > │ ## utc │ 00:15:16 v #18474 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:16 v #18475 > > 00:15:16 v #18476 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:16 v #18477 > > nominal utc = 00:15:16 v #18478 > > `( 00:15:16 v #18479 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:15:16 v #18480 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end" 00:15:16 v #18481 > > $'' : $'chrono_Utc' 00:15:16 v #18482 > > ) 00:15:17 v #18483 > > 00:15:17 v #18484 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:17 v #18485 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:17 v #18486 > > │ ### naive_utc │ 00:15:17 v #18487 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:17 v #18488 > > 00:15:17 v #18489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:17 v #18490 > > inl naive_utc (date_time : date_time' utc) : naive_date_time = 00:15:17 v #18491 > > !\\(date_time, $'"$0.naive_utc()"') 00:15:17 v #18492 > > 00:15:17 v #18493 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:17 v #18494 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:17 v #18495 > > │ ### to_local │ 00:15:17 v #18496 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:17 v #18497 > > 00:15:17 v #18498 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:17 v #18499 > > inl to_local (date_time : date_time' utc) : date_time' local = 00:15:17 v #18500 > > inl naive_date_time = date_time |> naive_utc 00:15:17 v #18501 > > !\\(naive_date_time, 00:15:17 v #18502 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"') 00:15:18 v #18503 > > 00:15:18 v #18504 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:18 v #18505 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:18 v #18506 > > │ ### from_timestamp_micros │ 00:15:18 v #18507 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:18 v #18508 > > 00:15:18 v #18509 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:18 v #18510 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option 00:15:18 v #18511 > > (date_time' utc) = 00:15:18 v #18512 > > inl result : optionm'.option' (date_time' utc) = 00:15:18 v #18513 > > !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"') 00:15:18 v #18514 > > result |> optionm'.unbox 00:15:18 v #18515 > > 00:15:18 v #18516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:18 v #18517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:18 v #18518 > > │ ### format' │ 00:15:18 v #18519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:18 v #18520 > > 00:15:18 v #18521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:18 v #18522 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string = 00:15:18 v #18523 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:15:19 v #18524 > > 00:15:19 v #18525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:19 v #18526 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:19 v #18527 > > │ ### format'' │ 00:15:19 v #18528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:19 v #18529 > > 00:15:19 v #18530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:19 v #18531 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string = 00:15:19 v #18532 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:15:19 v #18533 > > 00:15:19 v #18534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:19 v #18535 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:19 v #18536 > > │ ### format_timestamp │ 00:15:19 v #18537 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:19 v #18538 > > 00:15:19 v #18539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:19 v #18540 > > inl format_timestamp forall t {number; int}. (timestamp : t) = 00:15:19 v #18541 > > inl timestamp = join timestamp 00:15:19 v #18542 > > (timestamp / 1000) 00:15:19 v #18543 > > |> from_timestamp_micros 00:15:19 v #18544 > > |> optionm.map fun x => 00:15:19 v #18545 > > x 00:15:19 v #18546 > > |> to_local 00:15:19 v #18547 > > |> format'' "%Y-%m-%d %H:%M:%S" 00:15:19 v #18548 > > |> sm'.from_std_string 00:15:19 v #18549 > > |> resultm.from_option 00:15:19 v #18550 > > 00:15:19 v #18551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:19 v #18552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:19 v #18553 > > │ ### duration_from_millis │ 00:15:19 v #18554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:19 v #18555 > > 00:15:19 v #18556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:19 v #18557 > > inl duration_from_millis (ms : u64) : duration = 00:15:19 v #18558 > > inl ms = join ms 00:15:19 v #18559 > > !\($'"std::time::Duration::from_millis(!ms)"') 00:15:20 v #18560 > > 00:15:20 v #18561 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #18562 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:20 v #18563 > > │ ## date_time │ 00:15:20 v #18564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:20 v #18565 > > 00:15:20 v #18566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #18567 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:20 v #18568 > > │ ### time_zone_local │ 00:15:20 v #18569 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:20 v #18570 > > 00:15:20 v #18571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:20 v #18572 > > inl time_zone_local () : time_zone_info = 00:15:20 v #18573 > > run_target function 00:15:20 v #18574 > > | Fsharp _ => fun () => 00:15:20 v #18575 > > $'System.TimeZoneInfo.Local' 00:15:20 v #18576 > > | Rust (Native) => fun () => 00:15:20 v #18577 > > open rust.rust_operators 00:15:20 v #18578 > > 00:15:20 v #18579 > > !\($'"std::sync::Arc::new(chrono::FixedOffset::local_minus_utc(chrono::Local::no 00:15:20 v #18580 > > w().offset()) as i64)"') 00:15:20 v #18581 > > | _ => fun () => null () 00:15:20 v #18582 > > 00:15:20 v #18583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #18584 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:20 v #18585 > > │ ### get_utc_offset │ 00:15:20 v #18586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:20 v #18587 > > 00:15:20 v #18588 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:20 v #18589 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) : 00:15:20 v #18590 > > time_span = 00:15:20 v #18591 > > run_target function 00:15:20 v #18592 > > | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local 00:15:20 v #18593 > > ()) 00:15:20 v #18594 > > | Rust (Native | Wasm) => fun () => 00:15:20 v #18595 > > open rust.rust_operators 00:15:20 v #18596 > > inl ticks = date_time |> ticks 00:15:20 v #18597 > > // inl ticks = ticks |> rust.rust.emit 00:15:20 v #18598 > > (!\\((date_time, ticks), 00:15:20 v #18599 > > $'"chrono::FixedOffset::local_minus_utc(&chrono::DateTime::timezone(&chrono::Dat 00:15:20 v #18600 > > eTime::fixed_offset(&chrono::DateTime::from_timestamp_nanos($1))))"') : i32) 00:15:20 v #18601 > > |> convert 00:15:20 v #18602 > > | target => fun () => 00:15:20 v #18603 > > backend_switch { 00:15:20 v #18604 > > Fsharp = fun () => failwith $'$"date_time.get_utc_offset 00:15:20 v #18605 > > target: {!target}"' : time_span 00:15:20 v #18606 > > Python = fun () => $'!date_time.utcoffset()' : time_span 00:15:20 v #18607 > > } 00:15:21 v #18608 > > 00:15:21 v #18609 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:21 v #18610 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:21 v #18611 > > │ ### date_time_guid_from_date_time │ 00:15:21 v #18612 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:21 v #18613 > > 00:15:21 v #18614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:21 v #18615 > > let date_time_guid_from_date_time (guid' : guid.guid) (date_time : date_time) = 00:15:21 v #18616 > > inl create prefix time_zone : date_time_guid = 00:15:21 v #18617 > > inl guid_range = 00:15:21 v #18618 > > guid' 00:15:21 v #18619 > > |> sm'.obj_to_string 00:15:21 v #18620 > > |> sm'.range 00:15:21 v #18621 > > (am'.Start ((prefix |> sm'.length |> fun x => x : i32) + 00:15:21 v #18622 > > (time_zone |> sm'.length))) 00:15:21 v #18623 > > (am'.End eval) 00:15:21 v #18624 > > ($'$"{!prefix}{!time_zone}{!guid_range}"' : string) |> guid.new_guid 00:15:21 v #18625 > > run_target function 00:15:21 v #18626 > > | Rust (Contract) => fun () => null () 00:15:21 v #18627 > > | Rust (Native | Wasm) => fun () => 00:15:21 v #18628 > > inl epoch = 00:15:21 v #18629 > > unix_epoch () 00:15:21 v #18630 > > |> to_universal_time 00:15:21 v #18631 > > inl date_time = 00:15:21 v #18632 > > date_time 00:15:21 v #18633 > > |> specify_date_kind Local 00:15:21 v #18634 > > |> to_universal_time 00:15:21 v #18635 > > inl unixticks = 00:15:21 v #18636 > > match date_time |> ticks, epoch |> ticks with 00:15:21 v #18637 > > | timestamp date_time, timestamp epoch => convert date_time - 00:15:21 v #18638 > > convert epoch : i64 00:15:21 v #18639 > > inl prefix = 00:15:21 v #18640 > > unixticks / 10 00:15:21 v #18641 > > |> from_timestamp_micros 00:15:21 v #18642 > > |> optionm.map ( 00:15:21 v #18643 > > to_local 00:15:21 v #18644 > > >> format'' "%Y%m%d-%H%M-%S%f" 00:15:21 v #18645 > > >> sm'.from_std_string 00:15:21 v #18646 > > >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"' 00:15:21 v #18647 > > ) 00:15:21 v #18648 > > |> optionm'.default_value "" 00:15:21 v #18649 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:15:21 v #18650 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:15:21 v #18651 > > inl time_zone_value = time_zone |> time_span_format (join "hh:mm") 00:15:21 v #18652 > > inl time_zone = 00:15:21 v #18653 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"' 00:15:21 v #18654 > > create prefix time_zone 00:15:21 v #18655 > > | target => fun () => 00:15:21 v #18656 > > inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f") 00:15:21 v #18657 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:15:21 v #18658 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:15:21 v #18659 > > inl time_zone_value = time_zone |> time_span_format (join "hhmm") 00:15:21 v #18660 > > inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"' 00:15:21 v #18661 > > create prefix time_zone 00:15:21 v #18662 > > 00:15:21 v #18663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:21 v #18664 > > //// test 00:15:21 v #18665 > > ///! fsharp 00:15:21 v #18666 > > ////! cuda 00:15:21 v #18667 > > ///! rust -d chrono 00:15:21 v #18668 > > 00:15:21 v #18669 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:15:21 v #18670 > > () - 6i32) (am'.End eval) 00:15:21 v #18671 > > unix_epoch () 00:15:21 v #18672 > > |> specify_date_kind Utc 00:15:21 v #18673 > > |> to_universal_time 00:15:21 v #18674 > > |> date_time_guid_from_date_time (test_guid ()) 00:15:21 v #18675 > > |> sm'.obj_to_string 00:15:21 v #18676 > > |> fun s => s |> _assert_eq' $'$"{!(s |> sm'.slice 0i32 29)}{!suffix}"' 00:15:25 v #18677 > > 00:15:25 v #18678 > > ╭─[ 3.34s - return value ]─────────────────────────────────────────────────────╮ 00:15:25 v #18679 > > │ .rs output (rust -d chrono): │ 00:15:25 v #18680 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000cba987" / expected: │ 00:15:25 v #18681 > > │ "19700101-0000-0000-0000-000000cba987" │ 00:15:25 v #18682 > > │ │ 00:15:25 v #18683 > > │ │ 00:15:25 v #18684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:25 v #18685 > > 00:15:25 v #18686 > > ╭─[ 3.34s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:25 v #18687 > > │ .fsx output: │ 00:15:25 v #18688 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000300cba987" / expected: │ 00:15:25 v #18689 > > │ "19700101-0000-0000-0000-000300cba987" │ 00:15:25 v #18690 > > │ │ 00:15:25 v #18691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:25 v #18692 > > 00:15:25 v #18693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:25 v #18694 > > //// test 00:15:25 v #18695 > > ///! fsharp 00:15:25 v #18696 > > ///! rust -d chrono 00:15:25 v #18697 > > 00:15:25 v #18698 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:15:25 v #18699 > > () - 6i32) (am'.End eval) 00:15:25 v #18700 > > min_value () 00:15:25 v #18701 > > |> specify_date_kind Local 00:15:25 v #18702 > > |> date_time_guid_from_date_time (test_guid ()) 00:15:25 v #18703 > > |> sm'.obj_to_string 00:15:25 v #18704 > > |> fun s => s |> _assert_eq' $'$"00010101-0000-0000-0000-0{!(s |> sm'.slice 00:15:25 v #18705 > > 25i32 29)}{!suffix}"' 00:15:28 v #18706 > > 00:15:28 v #18707 > > ╭─[ 3.01s - return value ]─────────────────────────────────────────────────────╮ 00:15:28 v #18708 > > │ .rs output (rust -d chrono): │ 00:15:28 v #18709 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000cba987" / expected: │ 00:15:28 v #18710 > > │ "00010101-0000-0000-0000-000000cba987" │ 00:15:28 v #18711 > > │ │ 00:15:28 v #18712 > > │ │ 00:15:28 v #18713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:28 v #18714 > > 00:15:28 v #18715 > > ╭─[ 3.01s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:28 v #18716 > > │ .fsx output: │ 00:15:28 v #18717 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000300cba987" / expected: │ 00:15:28 v #18718 > > │ "00010101-0000-0000-0000-000300cba987" │ 00:15:28 v #18719 > > │ │ 00:15:28 v #18720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:28 v #18721 > > 00:15:28 v #18722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:28 v #18723 > > //// test 00:15:28 v #18724 > > ///! fsharp 00:15:28 v #18725 > > 00:15:28 v #18726 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:15:28 v #18727 > > () - 6i32) (am'.End eval) 00:15:28 v #18728 > > max_value () 00:15:28 v #18729 > > |> specify_date_kind Utc 00:15:28 v #18730 > > |> add_days -1 00:15:28 v #18731 > > |> date_time_guid_from_date_time (test_guid ()) 00:15:28 v #18732 > > |> sm'.obj_to_string 00:15:28 v #18733 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-9{!(s |> sm'.slice 25i32 00:15:28 v #18734 > > 29)}{!suffix}"' 00:15:28 v #18735 > > 00:15:28 v #18736 > > ╭─[ 661.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:28 v #18737 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900300cba987" / expected: │ 00:15:28 v #18738 > > │ "99991230-2359-5999-9999-900300cba987" │ 00:15:28 v #18739 > > │ │ 00:15:28 v #18740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:28 v #18741 > > 00:15:28 v #18742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:28 v #18743 > > //// test 00:15:28 v #18744 > > ///! rust -d chrono 00:15:28 v #18745 > > 00:15:28 v #18746 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:15:28 v #18747 > > () - 6i32) (am'.End eval) 00:15:28 v #18748 > > max_value () 00:15:28 v #18749 > > |> specify_date_kind Utc 00:15:28 v #18750 > > |> add_days -1 00:15:28 v #18751 > > |> date_time_guid_from_date_time (test_guid ()) 00:15:28 v #18752 > > |> sm'.obj_to_string 00:15:28 v #18753 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-0{!(s |> sm'.slice 25i32 00:15:28 v #18754 > > 29)}{!suffix}"' 00:15:31 v #18755 > > 00:15:31 v #18756 > > ╭─[ 3.03s - return value ]─────────────────────────────────────────────────────╮ 00:15:31 v #18757 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000cba987" / expected: │ 00:15:31 v #18758 > > │ "99991230-2359-5999-9999-000000cba987" │ 00:15:31 v #18759 > > │ │ 00:15:31 v #18760 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:31 v #18761 > > 00:15:31 v #18762 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:31 v #18763 > > //// test 00:15:31 v #18764 > > ///! fsharp 00:15:31 v #18765 > > ///! rust -d chrono 00:15:31 v #18766 > > 00:15:31 v #18767 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:15:31 v #18768 > > () - 6i32) (am'.End eval) 00:15:31 v #18769 > > unix_epoch () 00:15:31 v #18770 > > |> specify_date_kind Utc 00:15:31 v #18771 > > |> add_days 1 00:15:31 v #18772 > > |> date_time_guid_from_date_time (test_guid ()) 00:15:31 v #18773 > > |> sm'.obj_to_string 00:15:31 v #18774 > > |> fun s => s |> _assert_eq $'$"19700102-0000-0000-0000-0{!(s |> sm'.slice 25i32 00:15:31 v #18775 > > 29)}{!suffix}"' 00:15:34 v #18776 > > 00:15:34 v #18777 > > ╭─[ 2.89s - return value ]─────────────────────────────────────────────────────╮ 00:15:34 v #18778 > > │ .rs output (rust -d chrono): │ 00:15:34 v #18779 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000cba987" / expected: │ 00:15:34 v #18780 > > │ "19700102-0000-0000-0000-000000cba987" │ 00:15:34 v #18781 > > │ │ 00:15:34 v #18782 > > │ │ 00:15:34 v #18783 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:34 v #18784 > > 00:15:34 v #18785 > > ╭─[ 2.89s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:34 v #18786 > > │ .fsx output: │ 00:15:34 v #18787 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000300cba987" / expected: │ 00:15:34 v #18788 > > │ "19700102-0000-0000-0000-000300cba987" │ 00:15:34 v #18789 > > │ │ 00:15:34 v #18790 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:34 v #18791 > > 00:15:34 v #18792 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:34 v #18793 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:34 v #18794 > > │ ### date_time_from_guid │ 00:15:34 v #18795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:34 v #18796 > > 00:15:34 v #18797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:34 v #18798 > > inl date_time_from_guid (date_time_guid : date_time_guid) = 00:15:34 v #18799 > > inl date_time_guid = date_time_guid |> sm'.obj_to_string 00:15:34 v #18800 > > inl sm_replace = sm'.replace "-" "" 00:15:34 v #18801 > > run_target_args (fun () => sm_replace) function 00:15:34 v #18802 > > | (Rust _ | TypeScript _) => fun sm_replace => 00:15:34 v #18803 > > $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' : 00:15:34 v #18804 > > date_time 00:15:34 v #18805 > > | _ => fun sm_replace => $'System.DateTime.ParseExact 00:15:34 v #18806 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' : 00:15:34 v #18807 > > date_time 00:15:35 v #18808 > > 00:15:35 v #18809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:35 v #18810 > > //// test 00:15:35 v #18811 > > 00:15:35 v #18812 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210") 00:15:35 v #18813 > > |> _assert_eq' (min_value ()) 00:15:35 v #18814 > > 00:15:35 v #18815 > > ╭─[ 495.86ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:35 v #18816 > > │ __assert_eq' / actual: 0001-01-01 12:00:00 AM / expected: 0001-01-01 │ 00:15:35 v #18817 > > │ 12:00:00 AM │ 00:15:35 v #18818 > > │ │ 00:15:35 v #18819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:35 v #18820 > > 00:15:35 v #18821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:35 v #18822 > > //// test 00:15:35 v #18823 > > 00:15:35 v #18824 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid () 00:15:35 v #18825 > > |> string).[[^10..]]}"') 00:15:35 v #18826 > > |> _assert_eq' (max_value ()) 00:15:36 v #18827 > > 00:15:36 v #18828 > > ╭─[ 475.76ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:36 v #18829 > > │ __assert_eq' / actual: 9999-12-31 11:59:59 PM / expected: 9999-12-31 │ 00:15:36 v #18830 > > │ 11:59:59 PM │ 00:15:36 v #18831 > > │ │ 00:15:36 v #18832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:36 v #18833 > > 00:15:36 v #18834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #18835 > > //// test 00:15:36 v #18836 > > 00:15:36 v #18837 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid () 00:15:36 v #18838 > > |> string).[[^10..]]}"') 00:15:36 v #18839 > > |> _assert_eq' $'System.DateTime.UnixEpoch' 00:15:36 v #18840 > > 00:15:36 v #18841 > > ╭─[ 456.35ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:36 v #18842 > > │ __assert_eq' / actual: 1970-01-01 12:00:00 AM / expected: 1970-01-01 │ 00:15:36 v #18843 > > │ 12:00:00 AM │ 00:15:36 v #18844 > > │ │ 00:15:36 v #18845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:36 v #18846 > > 00:15:36 v #18847 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #18848 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:36 v #18849 > > │ ### timestamp_guid_from_timestamp │ 00:15:36 v #18850 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:36 v #18851 > > 00:15:36 v #18852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #18853 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) : 00:15:36 v #18854 > > timestamp_guid = 00:15:36 v #18855 > > inl guid = guid |> sm'.obj_to_string 00:15:36 v #18856 > > inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0' 00:15:36 v #18857 > > $'`timestamp_guid 00:15:36 v #18858 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta 00:15:36 v #18859 > > mp.[[16..17]]}{!guid.[[21..]]}"' 00:15:36 v #18860 > > 00:15:36 v #18861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #18862 > > //// test 00:15:36 v #18863 > > 00:15:36 v #18864 > > timestamp_guid_from_timestamp (test_guid ()) (0i64 |> convert |> timestamp) 00:15:36 v #18865 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-0043-210fedcba987") 00:15:37 v #18866 > > 00:15:37 v #18867 > > ╭─[ 443.19ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:37 v #18868 > > │ __assert_eq' / actual: 00000000-0000-0000-0043-210fedcba987 / expected: │ 00:15:37 v #18869 > > │ 00000000-0000-0000-0043-210fedcba987 │ 00:15:37 v #18870 > > │ │ 00:15:37 v #18871 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:37 v #18872 > > 00:15:37 v #18873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #18874 > > //// test 00:15:37 v #18875 > > 00:15:37 v #18876 > > timestamp_guid_from_timestamp (test_guid ()) (999999999999999999i64 |> convert 00:15:37 v #18877 > > |> timestamp) 00:15:37 v #18878 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-9943-2{(!test_guid () |> 00:15:37 v #18879 > > string).[[^10..]]}"') 00:15:37 v #18880 > > 00:15:37 v #18881 > > ╭─[ 489.82ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:37 v #18882 > > │ __assert_eq' / actual: 99999999-9999-9999-9943-210fedcba987 / expected: │ 00:15:37 v #18883 > > │ 99999999-9999-9999-9943-210fedcba987 │ 00:15:37 v #18884 > > │ │ 00:15:37 v #18885 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:37 v #18886 > > 00:15:37 v #18887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #18888 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:37 v #18889 > > │ ### timestamp_from_guid │ 00:15:37 v #18890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:37 v #18891 > > 00:15:37 v #18892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #18893 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp = 00:15:37 v #18894 > > inl guid = guid |> sm'.obj_to_string 00:15:37 v #18895 > > $'`i64 00:15:37 v #18896 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"' 00:15:38 v #18897 > > 00:15:38 v #18898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #18899 > > //// test 00:15:38 v #18900 > > 00:15:38 v #18901 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210") 00:15:38 v #18902 > > |> _assert_eq' (0i64 |> convert |> timestamp) 00:15:38 v #18903 > > 00:15:38 v #18904 > > ╭─[ 458.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:38 v #18905 > > │ __assert_eq' / actual: 0L / expected: 0L │ 00:15:38 v #18906 > > │ │ 00:15:38 v #18907 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:38 v #18908 > > 00:15:38 v #18909 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #18910 > > //// test 00:15:38 v #18911 > > 00:15:38 v #18912 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |> 00:15:38 v #18913 > > string).[[^14..]]}"') 00:15:38 v #18914 > > |> _assert_eq' (999999999999999999i64 |> convert |> timestamp) 00:15:39 v #18915 > > 00:15:39 v #18916 > > ╭─[ 487.76ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:39 v #18917 > > │ __assert_eq' / actual: 999999999999999999L / expected: 999999999999999999L │ 00:15:39 v #18918 > > │ │ 00:15:39 v #18919 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:39 v #18920 > > 00:15:39 v #18921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #18922 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:39 v #18923 > > │ ### new_guid_from_date_time │ 00:15:39 v #18924 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:39 v #18925 > > 00:15:39 v #18926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #18927 > > inl new_guid_from_date_time (date_time : date_time) = 00:15:39 v #18928 > > inl guid = guid.new_raw_guid () 00:15:39 v #18929 > > date_time_guid_from_date_time guid date_time 00:15:39 v #18930 > > 00:15:39 v #18931 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #18932 > > //// test 00:15:39 v #18933 > > 00:15:39 v #18934 > > utc_now () 00:15:39 v #18935 > > |> new_guid_from_date_time 00:15:39 v #18936 > > |> date_time_from_guid 00:15:39 v #18937 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32 00:15:39 v #18938 > > |> _assert_eq 0 00:15:40 v #18939 > > 00:15:40 v #18940 > > ╭─[ 711.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:40 v #18941 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:15:40 v #18942 > > │ │ 00:15:40 v #18943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:40 v #18944 > > 00:15:40 v #18945 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #18946 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:40 v #18947 > > │ ### new_guid_from_timestamp │ 00:15:40 v #18948 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:40 v #18949 > > 00:15:40 v #18950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #18951 > > inl new_guid_from_timestamp (timestamp : timestamp) = 00:15:40 v #18952 > > inl guid = guid.new_raw_guid () 00:15:40 v #18953 > > timestamp_guid_from_timestamp guid timestamp 00:15:40 v #18954 > > 00:15:40 v #18955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #18956 > > //// test 00:15:40 v #18957 > > 00:15:40 v #18958 > > utc_now () 00:15:40 v #18959 > > |> ticks 00:15:40 v #18960 > > |> new_guid_from_timestamp 00:15:40 v #18961 > > |> timestamp_from_guid 00:15:40 v #18962 > > |> fun (timestamp t) => (convert t - (utc_now () |> ticks |> fun (timestamp x) 00:15:40 v #18963 > > => convert x)) / 100000i64 00:15:40 v #18964 > > |> _assert_eq 0i64 00:15:41 v #18965 > > 00:15:41 v #18966 > > ╭─[ 511.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:41 v #18967 > > │ __assert_eq / actual: 0L / expected: 0L │ 00:15:41 v #18968 > > │ │ 00:15:41 v #18969 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:41 v #18970 > > 00:15:41 v #18971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:41 v #18972 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:41 v #18973 > > │ ## main │ 00:15:41 v #18974 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:41 v #18975 > > 00:15:41 v #18976 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:41 v #18977 > > inl main () = 00:15:41 v #18978 > > $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' : 00:15:41 v #18979 > > () 00:15:41 v #18980 > > $'let date_time_from_guid x = !date_time_from_guid x' : () 00:15:41 v #18981 > > $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' : 00:15:41 v #18982 > > () 00:15:41 v #18983 > > $'let timestamp_from_guid x = !timestamp_from_guid x' : () 00:15:41 v #18984 > > $'let new_guid_from_date_time x = !new_guid_from_date_time x' : () 00:15:41 v #18985 > > $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : () 00:15:41 v #18986 > > $'let format x = !format x' : () 00:15:41 v #18987 > > $'let format_iso8601 x = !format_iso8601 x' : () 00:15:42 v #18988 > 00:01:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 69243 } 00:15:42 v #18989 > 00:01:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:43 v #18990 > 00:01:16 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/date_time.dib.ipynb to html 00:15:43 v #18991 > 00:01:16 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:15:43 v #18992 > 00:01:16 v #7 ! validate(nb) 00:15:44 v #18993 > 00:01:17 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:15:44 v #18994 > 00:01:17 v #9 ! return _pygments_highlight( 00:15:45 v #18995 > 00:01:18 v #10 ! [NbConvertApp] Writing 452325 bytes to c:\home\git\polyglot\lib\spiral\date_time.dib.html 00:15:45 v #18996 > 00:01:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:15:45 v #18997 > 00:01:18 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:15:45 v #18998 > 00:01:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:45 v #18999 > 00:01:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:15:45 v #19000 > 00:01:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:15:45 v #19001 > 00:01:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 70162 } 00:15:45 d #19002 runtime.execute_with_options_async / { exit_code = 0; output_length = 75596 } 00:15:45 d #18 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path date_time.dib --retries 3 00:15:45 d #19003 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path math.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:45 v #19004 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) } 00:15:45 v #19005 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/math.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/math.dib" --output-path "c:/home/git/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:15:47 v #19006 > > 00:15:47 v #19007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:47 v #19008 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:47 v #19009 > > │ # math │ 00:15:47 v #19010 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:50 v #19011 > > 00:15:50 v #19012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:50 v #19013 > > //// test 00:15:50 v #19014 > > 00:15:50 v #19015 > > open testing 00:15:51 v #19016 > > 00:15:51 v #19017 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:51 v #19018 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:51 v #19019 > > │ ## math │ 00:15:51 v #19020 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:51 v #19021 > > 00:15:51 v #19022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:51 v #19023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:51 v #19024 > > │ ### e │ 00:15:51 v #19025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:51 v #19026 > > 00:15:51 v #19027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:51 v #19028 > > inl e () = 00:15:51 v #19029 > > exp 1f64 00:15:52 v #19030 > > 00:15:52 v #19031 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:52 v #19032 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:52 v #19033 > > │ ## square │ 00:15:52 v #19034 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:52 v #19035 > > 00:15:52 v #19036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:52 v #19037 > > inl square x = 00:15:52 v #19038 > > x ** 2 00:15:52 v #19039 > > 00:15:52 v #19040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:52 v #19041 > > //// test 00:15:52 v #19042 > > 00:15:52 v #19043 > > 5f64 00:15:52 v #19044 > > |> sqrt 00:15:52 v #19045 > > |> square 00:15:52 v #19046 > > |> _assert_approx_eq None 5 00:15:53 v #19047 > > 00:15:53 v #19048 > > ╭─[ 961.92ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:53 v #19049 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0 │ 00:15:53 v #19050 > > │ │ 00:15:53 v #19051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:53 v #19052 > > 00:15:53 v #19053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:53 v #19054 > > //// test 00:15:53 v #19055 > > 00:15:53 v #19056 > > e () |> square 00:15:53 v #19057 > > |> _assert_approx_eq None 7.3890560989306495 00:15:53 v #19058 > > 00:15:53 v #19059 > > ╭─[ 437.79ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:53 v #19060 > > │ __assert_approx_eq / actual: 7.389056099 / expected: 7.389056099 │ 00:15:53 v #19061 > > │ │ 00:15:53 v #19062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:53 v #19063 > > 00:15:53 v #19064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:53 v #19065 > > //// test 00:15:53 v #19066 > > 00:15:53 v #19067 > > 2 * 2 / 0.4f64 |> sqrt 00:15:53 v #19068 > > |> _assert_approx_eq None 3.1622776601683795 00:15:54 v #19069 > > 00:15:54 v #19070 > > ╭─[ 406.28ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:54 v #19071 > > │ __assert_approx_eq / actual: 3.16227766 / expected: 3.16227766 │ 00:15:54 v #19072 > > │ │ 00:15:54 v #19073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:54 v #19074 > > 00:15:54 v #19075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:54 v #19076 > > //// test 00:15:54 v #19077 > > 00:15:54 v #19078 > > 2f64 / 3 00:15:54 v #19079 > > |> _assert_approx_eq None 0.6666666666666666 00:15:54 v #19080 > > 00:15:54 v #19081 > > ╭─[ 410.81ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:54 v #19082 > > │ __assert_approx_eq / actual: 0.6666666667 / expected: 0.6666666667 │ 00:15:54 v #19083 > > │ │ 00:15:54 v #19084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:54 v #19085 > > 00:15:54 v #19086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:54 v #19087 > > //// test 00:15:54 v #19088 > > 00:15:54 v #19089 > > 2f64 |> log 00:15:54 v #19090 > > |> _assert_approx_eq None 0.6931471805599453 00:15:55 v #19091 > > 00:15:55 v #19092 > > ╭─[ 452.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:55 v #19093 > > │ __assert_approx_eq / actual: 0.6931471806 / expected: 0.6931471806 │ 00:15:55 v #19094 > > │ │ 00:15:55 v #19095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:55 v #19096 > > 00:15:55 v #19097 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:55 v #19098 > > //// test 00:15:55 v #19099 > > 00:15:55 v #19100 > > pi 00:15:55 v #19101 > > |> _assert_approx_eq None 3.141592653589793f64 00:15:55 v #19102 > > 00:15:55 v #19103 > > ╭─[ 451.70ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:55 v #19104 > > │ __assert_approx_eq / actual: 3.141592654 / expected: 3.141592654 │ 00:15:55 v #19105 > > │ │ 00:15:55 v #19106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:55 v #19107 > > 00:15:55 v #19108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:55 v #19109 > > //// test 00:15:55 v #19110 > > 00:15:55 v #19111 > > pi |> cos 00:15:55 v #19112 > > |> _assert_eq -1f64 00:15:56 v #19113 > > 00:15:56 v #19114 > > ╭─[ 421.35ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:56 v #19115 > > │ __assert_eq / actual: -1.0 / expected: -1.0 │ 00:15:56 v #19116 > > │ │ 00:15:56 v #19117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:56 v #19118 > > 00:15:56 v #19119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:56 v #19120 > > //// test 00:15:56 v #19121 > > 00:15:56 v #19122 > > pi 00:15:56 v #19123 > > |> cos 00:15:56 v #19124 > > |> fun n => n / 2f64 00:15:56 v #19125 > > |> _assert_approx_eq None -0.5 00:15:56 v #19126 > > 00:15:56 v #19127 > > ╭─[ 436.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:56 v #19128 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5 │ 00:15:56 v #19129 > > │ │ 00:15:56 v #19130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:56 v #19131 > > 00:15:56 v #19132 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:56 v #19133 > > //// test 00:15:56 v #19134 > > 00:15:56 v #19135 > > pi / 2 |> cos 00:15:56 v #19136 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64 00:15:56 v #19137 > > 00:15:56 v #19138 > > ╭─[ 405.52ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:56 v #19139 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected: 6.123233996e-17 │ 00:15:56 v #19140 > > │ │ 00:15:56 v #19141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:56 v #19142 > > 00:15:56 v #19143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:56 v #19144 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:56 v #19145 > > │ ## fsharp │ 00:15:56 v #19146 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:56 v #19147 > > 00:15:56 v #19148 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:56 v #19149 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:56 v #19150 > > │ ### atan2 │ 00:15:56 v #19151 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:56 v #19152 > > 00:15:56 v #19153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:56 v #19154 > > inl atan2 (y : f64) (x : f64) : f64 = 00:15:56 v #19155 > > $'System.Math.Atan2 (!y, !x)' 00:15:57 v #19156 > > 00:15:57 v #19157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #19158 > > //// test 00:15:57 v #19159 > > 00:15:57 v #19160 > > 0 |> atan2 1 00:15:57 v #19161 > > |> _assert_eq 1.5707963267948966 00:15:57 v #19162 > > 00:15:57 v #19163 > > ╭─[ 460.65ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:57 v #19164 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327 │ 00:15:57 v #19165 > > │ │ 00:15:57 v #19166 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:57 v #19167 > > 00:15:57 v #19168 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:57 v #19169 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:57 v #19170 > > │ ## floor │ 00:15:57 v #19171 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:57 v #19172 > > 00:15:57 v #19173 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #19174 > > inl floor forall t {float}. (n : t) : t = 00:15:57 v #19175 > > n |> $'floor' 00:15:58 v #19176 > > 00:15:58 v #19177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #19178 > > //// test 00:15:58 v #19179 > > 00:15:58 v #19180 > > 0.6 |> floor 00:15:58 v #19181 > > |> _assert_eq 0f64 00:15:58 v #19182 > > 00:15:58 v #19183 > > ╭─[ 484.44ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:58 v #19184 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:15:58 v #19185 > > │ │ 00:15:58 v #19186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:58 v #19187 > > 00:15:58 v #19188 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #19189 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:58 v #19190 > > │ ## ceil │ 00:15:58 v #19191 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:58 v #19192 > > 00:15:58 v #19193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #19194 > > inl ceil forall t {float}. (n : t) : t = 00:15:58 v #19195 > > n |> $'ceil' 00:15:59 v #19196 > > 00:15:59 v #19197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:59 v #19198 > > //// test 00:15:59 v #19199 > > 00:15:59 v #19200 > > 0.6 |> ceil 00:15:59 v #19201 > > |> _assert_eq 1f64 00:15:59 v #19202 > > 00:15:59 v #19203 > > ╭─[ 451.40ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:59 v #19204 > > │ __assert_eq / actual: 1.0 / expected: 1.0 │ 00:15:59 v #19205 > > │ │ 00:15:59 v #19206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:59 v #19207 > > 00:15:59 v #19208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:59 v #19209 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:59 v #19210 > > │ ## round │ 00:15:59 v #19211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:59 v #19212 > > 00:15:59 v #19213 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:59 v #19214 > > inl round forall t {float}. (n : t) : t = 00:15:59 v #19215 > > n |> $'round' 00:15:59 v #19216 > > 00:15:59 v #19217 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:59 v #19218 > > //// test 00:15:59 v #19219 > > 00:15:59 v #19220 > > 0.5 |> round 00:15:59 v #19221 > > |> _assert_eq 0f64 00:15:59 v #19222 > > 00:15:59 v #19223 > > 1.5 |> round 00:15:59 v #19224 > > |> _assert_eq 2f64 00:15:59 v #19225 > > 00:15:59 v #19226 > > 2.5 |> round 00:15:59 v #19227 > > |> _assert_eq 2f64 00:15:59 v #19228 > > 00:15:59 v #19229 > > 3.5 |> round 00:15:59 v #19230 > > |> _assert_eq 4f64 00:16:00 v #19231 > > 00:16:00 v #19232 > > ╭─[ 484.37ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:00 v #19233 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:16:00 v #19234 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:16:00 v #19235 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:16:00 v #19236 > > │ __assert_eq / actual: 4.0 / expected: 4.0 │ 00:16:00 v #19237 > > │ │ 00:16:00 v #19238 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:00 v #19239 > > 00:16:00 v #19240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:00 v #19241 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:00 v #19242 > > │ ## log_base │ 00:16:00 v #19243 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:00 v #19244 > > 00:16:00 v #19245 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:00 v #19246 > > inl log_base (new_base : f64) (a : f64) : f64 = 00:16:00 v #19247 > > $'System.Math.Log (!a, !new_base)' 00:16:00 v #19248 > > 00:16:00 v #19249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:00 v #19250 > > //// test 00:16:00 v #19251 > > 00:16:00 v #19252 > > 100 |> log_base 10 00:16:00 v #19253 > > |> _assert_eq 2 00:16:01 v #19254 > > 00:16:01 v #19255 > > ╭─[ 484.78ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:01 v #19256 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:16:01 v #19257 > > │ │ 00:16:01 v #19258 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:01 v #19259 > > 00:16:01 v #19260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:01 v #19261 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:01 v #19262 > > │ ## round │ 00:16:01 v #19263 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:01 v #19264 > > 00:16:01 v #19265 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:01 v #19266 > > inl round forall t {float}. (x : t) : t = 00:16:01 v #19267 > > x |> $'round' 00:16:01 v #19268 > > 00:16:01 v #19269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:01 v #19270 > > //// test 00:16:01 v #19271 > > 00:16:01 v #19272 > > 0.5 |> round 00:16:01 v #19273 > > |> _assert_eq 0f64 00:16:02 v #19274 > > 00:16:02 v #19275 > > ╭─[ 465.90ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:02 v #19276 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:16:02 v #19277 > > │ │ 00:16:02 v #19278 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:02 v #19279 > > 00:16:02 v #19280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:02 v #19281 > > //// test 00:16:02 v #19282 > > 00:16:02 v #19283 > > 0.6 |> round 00:16:02 v #19284 > > |> _assert_eq 1f64 00:16:02 v #19285 > > 00:16:02 v #19286 > > ╭─[ 406.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:02 v #19287 > > │ __assert_eq / actual: 1.0 / expected: 1.0 │ 00:16:02 v #19288 > > │ │ 00:16:02 v #19289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:02 v #19290 > 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12563 } 00:16:02 v #19291 > 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:03 v #19292 > 00:00:18 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/math.dib.ipynb to html 00:16:03 v #19293 > 00:00:18 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:03 v #19294 > 00:00:18 v #7 ! validate(nb) 00:16:04 v #19295 > 00:00:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:04 v #19296 > 00:00:18 v #9 ! return _pygments_highlight( 00:16:04 v #19297 > 00:00:19 v #10 ! [NbConvertApp] Writing 304842 bytes to c:\home\git\polyglot\lib\spiral\math.dib.html 00:16:04 v #19298 > 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:16:04 v #19299 > 00:00:19 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:16:04 v #19300 > 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:05 v #19301 > 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:05 v #19302 > 00:00:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:05 v #19303 > 00:00:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13472 } 00:16:05 d #19304 runtime.execute_with_options_async / { exit_code = 0; output_length = 16589 } 00:16:05 d #19 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path math.dib --retries 3 00:16:05 d #19305 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path mapm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:05 v #19306 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) } 00:16:05 v #19307 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/mapm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/mapm.dib" --output-path "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:16:06 v #19308 > > 00:16:06 v #19309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:06 v #19310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:06 v #19311 > > │ # mapm │ 00:16:06 v #19312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:10 v #19313 > > 00:16:10 v #19314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:10 v #19315 > > open rust.rust_operators 00:16:11 v #19316 > > 00:16:11 v #19317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:11 v #19318 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:11 v #19319 > > │ ## rust │ 00:16:11 v #19320 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:11 v #19321 > > 00:16:11 v #19322 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:11 v #19323 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:11 v #19324 > > │ ### hash_map │ 00:16:11 v #19325 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:11 v #19326 > > 00:16:11 v #19327 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:11 v #19328 > > nominal hash_map k v = 00:16:11 v #19329 > > `( 00:16:11 v #19330 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:11 v #19331 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype 00:16:11 v #19332 > > std_collections_HashMap<'K, 'V> = class end" 00:16:11 v #19333 > > $'' : $'std_collections_HashMap<`k, `v>' 00:16:11 v #19334 > > ) 00:16:11 v #19335 > > 00:16:11 v #19336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:11 v #19337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:11 v #19338 > > │ ### b_tree_map │ 00:16:11 v #19339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:11 v #19340 > > 00:16:11 v #19341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:11 v #19342 > > nominal b_tree_map k v = 00:16:11 v #19343 > > `( 00:16:11 v #19344 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:11 v #19345 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype 00:16:11 v #19346 > > std_collections_BTreeMap<'K, 'V> = class end" 00:16:11 v #19347 > > $'' : $'std_collections_BTreeMap<`k, `v>' 00:16:11 v #19348 > > ) 00:16:11 v #19349 > > 00:16:11 v #19350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:11 v #19351 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:11 v #19352 > > │ ### new_hash_map │ 00:16:11 v #19353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:11 v #19354 > > 00:16:11 v #19355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:11 v #19356 > > inl new_hash_map () : hash_map _ _ = 00:16:11 v #19357 > > !\($'"std::collections::HashMap::new()"') 00:16:12 v #19358 > > 00:16:12 v #19359 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:12 v #19360 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:12 v #19361 > > │ ### new_b_tree_map │ 00:16:12 v #19362 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:12 v #19363 > > 00:16:12 v #19364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:12 v #19365 > > inl new_b_tree_map () : b_tree_map _ _ = 00:16:12 v #19366 > > !\($'"std::collections::BTreeMap::new()"') 00:16:12 v #19367 > > 00:16:12 v #19368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:12 v #19369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:12 v #19370 > > │ ### get │ 00:16:12 v #19371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:12 v #19372 > > 00:16:12 v #19373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:12 v #19374 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v = 00:16:12 v #19375 > > inl key = join key 00:16:12 v #19376 > > !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x| 00:16:12 v #19377 > > x).cloned()"') 00:16:13 v #19378 > > 00:16:13 v #19379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:13 v #19380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:13 v #19381 > > │ ### insert │ 00:16:13 v #19382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:13 v #19383 > > 00:16:13 v #19384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:13 v #19385 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) : 00:16:13 v #19386 > > optionm'.option' v = 00:16:13 v #19387 > > inl key = join key 00:16:13 v #19388 > > !\($'"let mut !map = !map"') 00:16:13 v #19389 > > !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"') 00:16:13 v #19390 > > 00:16:13 v #19391 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:13 v #19392 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:13 v #19393 > > │ ### map' │ 00:16:13 v #19394 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:13 v #19395 > > 00:16:13 v #19396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:13 v #19397 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w = 00:16:13 v #19398 > > !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"') 00:16:13 v #19399 > > 00:16:13 v #19400 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:13 v #19401 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:13 v #19402 > > │ ### hash_map_count │ 00:16:13 v #19403 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:13 v #19404 > > 00:16:13 v #19405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:13 v #19406 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 = 00:16:13 v #19407 > > !\\(map, $'"$0.count()"') 00:16:14 v #19408 > > 00:16:14 v #19409 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:14 v #19410 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:14 v #19411 > > │ ### from_vec │ 00:16:14 v #19412 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:14 v #19413 > > 00:16:14 v #19414 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:14 v #19415 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v = 00:16:14 v #19416 > > !\($'"std::collections::HashMap::from_iter(!vec)"') 00:16:14 v #19417 > > 00:16:14 v #19418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:14 v #19419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:14 v #19420 > > │ ### from_vec_pairs │ 00:16:14 v #19421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:14 v #19422 > > 00:16:14 v #19423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:14 v #19424 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v = 00:16:14 v #19425 > > !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x| 00:16:14 v #19426 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:16:15 v #19427 > > 00:16:15 v #19428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:15 v #19429 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:15 v #19430 > > │ ### b_tree_map_from_vec_pairs │ 00:16:15 v #19431 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:15 v #19432 > > 00:16:15 v #19433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:15 v #19434 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : 00:16:15 v #19435 > > b_tree_map k v = 00:16:15 v #19436 > > !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x| 00:16:15 v #19437 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:16:15 v #19438 > > 00:16:15 v #19439 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:15 v #19440 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:15 v #19441 > > │ ### from_array │ 00:16:15 v #19442 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:15 v #19443 > > 00:16:15 v #19444 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:15 v #19445 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v = 00:16:15 v #19446 > > array |> am'.to_vec |> from_vec 00:16:16 v #19447 > > 00:16:16 v #19448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:16 v #19449 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:16 v #19450 > > │ ### from_list │ 00:16:16 v #19451 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:16 v #19452 > > 00:16:16 v #19453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:16 v #19454 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v = 00:16:16 v #19455 > > inl (a list) : _ i32 _ = list |> listm.toArray 00:16:16 v #19456 > > list |> am'.to_vec |> from_vec 00:16:16 v #19457 > > 00:16:16 v #19458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:16 v #19459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:16 v #19460 > > │ ### to_vec │ 00:16:16 v #19461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:16 v #19462 > > 00:16:16 v #19463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:16 v #19464 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) = 00:16:16 v #19465 > > !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"') 00:16:17 v #19466 > > 00:16:17 v #19467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:17 v #19468 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:17 v #19469 > > │ ## fsharp │ 00:16:17 v #19470 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:17 v #19471 > > 00:16:17 v #19472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:17 v #19473 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:17 v #19474 > > │ ### map │ 00:16:17 v #19475 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:17 v #19476 > > 00:16:17 v #19477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:17 v #19478 > > nominal map k v = $'Map<`k, `v>' 00:16:17 v #19479 > > 00:16:17 v #19480 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:17 v #19481 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:17 v #19482 > > │ ### item │ 00:16:17 v #19483 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:17 v #19484 > > 00:16:17 v #19485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:17 v #19486 > > inl item forall k v. (k : k) (map : map k v) : v = 00:16:17 v #19487 > > $'!map.[[!k]]' 00:16:17 v #19488 > > 00:16:17 v #19489 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:17 v #19490 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:17 v #19491 > > │ ### of_array │ 00:16:17 v #19492 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:17 v #19493 > > 00:16:17 v #19494 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:17 v #19495 > > inl of_array forall k v. (array : a _ (k * v)) : map k v = 00:16:17 v #19496 > > $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray' 00:16:18 v #19497 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10516 } 00:16:18 v #19498 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:19 v #19499 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/mapm.dib.ipynb to html 00:16:19 v #19500 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:19 v #19501 > 00:00:14 v #7 ! validate(nb) 00:16:20 v #19502 > 00:00:15 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:20 v #19503 > 00:00:15 v #9 ! return _pygments_highlight( 00:16:20 v #19504 > 00:00:15 v #10 ! [NbConvertApp] Writing 301372 bytes to c:\home\git\polyglot\lib\spiral\mapm.dib.html 00:16:20 v #19505 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:16:20 v #19506 > 00:00:15 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:16:20 v #19507 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:20 v #19508 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:20 v #19509 > 00:00:15 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:20 v #19510 > 00:00:15 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11425 } 00:16:20 d #19511 runtime.execute_with_options_async / { exit_code = 0; output_length = 14352 } 00:16:20 d #20 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path mapm.dib --retries 3 00:16:20 d #19512 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path optionm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:20 v #19513 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) } 00:16:20 v #19514 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/optionm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/optionm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:16:22 v #19515 > > 00:16:22 v #19516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:22 v #19517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:22 v #19518 > > │ # optionm' │ 00:16:22 v #19519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:25 v #19520 > > 00:16:25 v #19521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:25 v #19522 > > open rust 00:16:25 v #19523 > > open rust_operators 00:16:26 v #19524 > > 00:16:26 v #19525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:26 v #19526 > > //// test 00:16:26 v #19527 > > 00:16:26 v #19528 > > open testing 00:16:27 v #19529 > > 00:16:27 v #19530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 v #19531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 v #19532 > > │ ## optionm' │ 00:16:27 v #19533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 v #19534 > > 00:16:27 v #19535 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 v #19536 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 v #19537 > > │ ### default_value │ 00:16:27 v #19538 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 v #19539 > > 00:16:27 v #19540 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 v #19541 > > inl default_value d = 00:16:27 v #19542 > > optionm.defaultWith d 00:16:27 v #19543 > > 00:16:27 v #19544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 v #19545 > > //// test 00:16:27 v #19546 > > 00:16:27 v #19547 > > None 00:16:27 v #19548 > > |> default_value 3i32 00:16:27 v #19549 > > |> _assert_eq 3i32 00:16:28 v #19550 > > 00:16:28 v #19551 > > ╭─[ 965.88ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:28 v #19552 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:16:28 v #19553 > > │ │ 00:16:28 v #19554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:28 v #19555 > > 00:16:28 v #19556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:28 v #19557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:28 v #19558 > > │ ### (/??) │ 00:16:28 v #19559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:28 v #19560 > > 00:16:28 v #19561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:28 v #19562 > > inl (/??) a b = 00:16:28 v #19563 > > a |> default_value b 00:16:29 v #19564 > > 00:16:29 v #19565 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:29 v #19566 > > //// test 00:16:29 v #19567 > > 00:16:29 v #19568 > > None /?? 3i32 00:16:29 v #19569 > > |> _assert_eq 3i32 00:16:29 v #19570 > > 00:16:29 v #19571 > > ╭─[ 465.20ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:29 v #19572 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:16:29 v #19573 > > │ │ 00:16:29 v #19574 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:29 v #19575 > > 00:16:29 v #19576 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:29 v #19577 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:29 v #19578 > > │ ### default_with │ 00:16:29 v #19579 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:29 v #19580 > > 00:16:29 v #19581 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:29 v #19582 > > inl default_with fn = function 00:16:29 v #19583 > > | Some x => x 00:16:29 v #19584 > > | None => fn () 00:16:29 v #19585 > > 00:16:29 v #19586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:29 v #19587 > > //// test 00:16:29 v #19588 > > 00:16:29 v #19589 > > None 00:16:29 v #19590 > > |> default_with fun () => 3i32 00:16:29 v #19591 > > |> _assert_eq 3i32 00:16:30 v #19592 > > 00:16:30 v #19593 > > ╭─[ 422.30ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:30 v #19594 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:16:30 v #19595 > > │ │ 00:16:30 v #19596 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:30 v #19597 > > 00:16:30 v #19598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:30 v #19599 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:30 v #19600 > > │ ### choose │ 00:16:30 v #19601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:30 v #19602 > > 00:16:30 v #19603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:30 v #19604 > > inl choose fn a b = 00:16:30 v #19605 > > match a, b with 00:16:30 v #19606 > > | Some x, Some y => fn x y |> Some 00:16:30 v #19607 > > | _ => None 00:16:30 v #19608 > > 00:16:30 v #19609 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:30 v #19610 > > //// test 00:16:30 v #19611 > > 00:16:30 v #19612 > > (Some 2i32, Some 3) 00:16:30 v #19613 > > ||> choose (+) 00:16:30 v #19614 > > |> _assert_eq (Some 5) 00:16:31 v #19615 > > 00:16:31 v #19616 > > ╭─[ 830.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:31 v #19617 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:16:31 v #19618 > > │ │ 00:16:31 v #19619 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:31 v #19620 > > 00:16:31 v #19621 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:31 v #19622 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:31 v #19623 > > │ ### iter │ 00:16:31 v #19624 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:31 v #19625 > > 00:16:31 v #19626 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:31 v #19627 > > inl iter fn = function 00:16:31 v #19628 > > | Some x => fn x 00:16:31 v #19629 > > | None => () 00:16:31 v #19630 > > 00:16:31 v #19631 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:31 v #19632 > > //// test 00:16:31 v #19633 > > 00:16:31 v #19634 > > inl n = mut 1i32 00:16:31 v #19635 > > inl fn = 00:16:31 v #19636 > > fun n' => 00:16:31 v #19637 > > n <- *n + n' 00:16:31 v #19638 > > Some 1i32 |> iter fn 00:16:31 v #19639 > > None |> iter fn 00:16:31 v #19640 > > *n 00:16:31 v #19641 > > |> _assert_eq 2i32 00:16:32 v #19642 > > 00:16:32 v #19643 > > ╭─[ 585.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:32 v #19644 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:16:32 v #19645 > > │ │ 00:16:32 v #19646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:32 v #19647 > > 00:16:32 v #19648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:32 v #19649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:32 v #19650 > > │ ### flatten │ 00:16:32 v #19651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:32 v #19652 > > 00:16:32 v #19653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:32 v #19654 > > inl flatten x = 00:16:32 v #19655 > > match x with 00:16:32 v #19656 > > | Some (Some x) => Some x 00:16:32 v #19657 > > | _ => None 00:16:32 v #19658 > > 00:16:32 v #19659 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:32 v #19660 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:32 v #19661 > > │ ## fsharp │ 00:16:32 v #19662 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:32 v #19663 > > 00:16:32 v #19664 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:32 v #19665 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:32 v #19666 > > │ ### option' │ 00:16:32 v #19667 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:32 v #19668 > > 00:16:32 v #19669 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:32 v #19670 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })" 00:16:33 v #19671 > > 00:16:33 v #19672 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:33 v #19673 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:33 v #19674 > > │ ### none' │ 00:16:33 v #19675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:33 v #19676 > > 00:16:33 v #19677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:33 v #19678 > > inl none' forall t. () : option' t = 00:16:33 v #19679 > > $'None' 00:16:33 v #19680 > > 00:16:33 v #19681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:33 v #19682 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:33 v #19683 > > │ ### some' │ 00:16:33 v #19684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:33 v #19685 > > 00:16:33 v #19686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:33 v #19687 > > inl some' forall t. (x : t) : option' t = 00:16:33 v #19688 > > backend_switch { 00:16:33 v #19689 > > Fsharp = fun () => $'Some !x ' : option' t 00:16:33 v #19690 > > Python = fun () => $'!x # some\' ' : option' t 00:16:33 v #19691 > > } 00:16:34 v #19692 > > 00:16:34 v #19693 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:34 v #19694 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:34 v #19695 > > │ ### default_value' │ 00:16:34 v #19696 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:34 v #19697 > > 00:16:34 v #19698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:34 v #19699 > > inl default_value' forall t. (value : t) (x : option' t) : t = 00:16:34 v #19700 > > backend_switch { 00:16:34 v #19701 > > Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t 00:16:34 v #19702 > > Python = fun () => $'!x or !value ' : t 00:16:34 v #19703 > > } 00:16:34 v #19704 > > 00:16:34 v #19705 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:34 v #19706 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:34 v #19707 > > │ ### value' │ 00:16:34 v #19708 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:34 v #19709 > > 00:16:34 v #19710 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:34 v #19711 > > inl value' forall t. (x : option' t) : t = 00:16:34 v #19712 > > backend_switch { 00:16:34 v #19713 > > Fsharp = fun () => $'!x |> Option.value' : t 00:16:34 v #19714 > > Python = fun () => $'!x ' : t 00:16:34 v #19715 > > } 00:16:35 v #19716 > > 00:16:35 v #19717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:35 v #19718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:35 v #19719 > > │ ### box │ 00:16:35 v #19720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:35 v #19721 > > 00:16:35 v #19722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:35 v #19723 > > inl box forall t. (x : option t) : option' t = 00:16:35 v #19724 > > // x 00:16:35 v #19725 > > // |> optionm.map some' 00:16:35 v #19726 > > // |> default_with none' 00:16:35 v #19727 > > match x with 00:16:35 v #19728 > > | Some x => some' x 00:16:35 v #19729 > > | None => none' () 00:16:35 v #19730 > > 00:16:35 v #19731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:35 v #19732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:35 v #19733 > > │ ### map │ 00:16:35 v #19734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:35 v #19735 > > 00:16:35 v #19736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:35 v #19737 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u = 00:16:35 v #19738 > > inl x_ () = 00:16:35 v #19739 > > backend_switch { 00:16:35 v #19740 > > Fsharp = fun () => 00:16:35 v #19741 > > inl result : mut (option' u) = none' () |> mut 00:16:35 v #19742 > > inl set_result x = 00:16:35 v #19743 > > result <- x 00:16:35 v #19744 > > inl get_result () = 00:16:35 v #19745 > > *result 00:16:35 v #19746 > > $'match !x with' 00:16:35 v #19747 > > $'| Some x -> (' 00:16:35 v #19748 > > $'(fun () ->' 00:16:35 v #19749 > > $'(fun () ->' 00:16:35 v #19750 > > inl x = dyn $'x' 00:16:35 v #19751 > > x |> fn |> emit_unit 00:16:35 v #19752 > > $')' 00:16:35 v #19753 > > $'|> fun x -> x () |> Some' 00:16:35 v #19754 > > $') () ) | None -> None' 00:16:35 v #19755 > > $'|> fun x -> !set_result x' 00:16:35 v #19756 > > $'!get_result ()' : option' u 00:16:35 v #19757 > > Python = fun () => 00:16:35 v #19758 > > if x =. none' () 00:16:35 v #19759 > > then none' () 00:16:35 v #19760 > > else fn $'!x ' |> fun x => $'!x ' : option' u 00:16:35 v #19761 > > } 00:16:35 v #19762 > > 00:16:35 v #19763 > > backend_switch { 00:16:35 v #19764 > > Fsharp = fun () => 00:16:35 v #19765 > > inl fn = join fn 00:16:35 v #19766 > > $'!x |> Option.map !fn ' : option' u 00:16:35 v #19767 > > Python = fun () => 00:16:35 v #19768 > > if x =. none' () 00:16:35 v #19769 > > then none' () 00:16:35 v #19770 > > else fn $'!x ' |> fun x => $'!x ' : option' u 00:16:35 v #19771 > > } 00:16:36 v #19772 > > 00:16:36 v #19773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:36 v #19774 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:36 v #19775 > > │ ### map'' │ 00:16:36 v #19776 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:36 v #19777 > > 00:16:36 v #19778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:36 v #19779 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:16:36 v #19780 > > x |> map fn 00:16:36 v #19781 > > 00:16:36 v #19782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:36 v #19783 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:36 v #19784 > > │ ### unbox │ 00:16:36 v #19785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:36 v #19786 > > 00:16:36 v #19787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:36 v #19788 > > inl unbox forall t. (x : option' t) : option t = 00:16:36 v #19789 > > x |> map'' Some |> default_value' None 00:16:36 v #19790 > > // inl some x : option t = Some x 00:16:36 v #19791 > > // inl some = join some 00:16:36 v #19792 > > // inl none : option t = None 00:16:36 v #19793 > > // $'!x |> Option.map !some |> Option.defaultValue !none ' 00:16:36 v #19794 > > 00:16:36 v #19795 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:36 v #19796 > > //// test 00:16:36 v #19797 > > ///! fsharp 00:16:36 v #19798 > > ///! cuda 00:16:36 v #19799 > > ///! rust 00:16:36 v #19800 > > ///! typescript 00:16:36 v #19801 > > ///! python 00:16:36 v #19802 > > 00:16:36 v #19803 > > inl x = Some 3i32 00:16:36 v #19804 > > inl y : option i32 = None 00:16:36 v #19805 > > inl x' = x |> box |> unbox 00:16:36 v #19806 > > inl y' = y |> box |> map id |> unbox 00:16:36 v #19807 > > (x', y') |> _assert_eq' (x, y) 00:16:40 v #19808 > > 00:16:40 v #19809 > > ╭─[ 3.88s - return value ]─────────────────────────────────────────────────────╮ 00:16:40 v #19810 > > │ .py output (Cuda): │ 00:16:40 v #19811 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected: (US0_0(v0=3), │ 00:16:40 v #19812 > > │ US0_1()) │ 00:16:40 v #19813 > > │ │ 00:16:40 v #19814 > > │ .rs output: │ 00:16:40 v #19815 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected: (US0_0(3), US0_1) │ 00:16:40 v #19816 > > │ │ 00:16:40 v #19817 > > │ .ts output: │ 00:16:40 v #19818 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0 3,US0_1 │ 00:16:40 v #19819 > > │ │ 00:16:40 v #19820 > > │ .py output: │ 00:16:40 v #19821 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3, US0_1) │ 00:16:40 v #19822 > > │ │ 00:16:40 v #19823 > > │ │ 00:16:40 v #19824 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:40 v #19825 > > 00:16:40 v #19826 > > ╭─[ 3.88s - stdout ]───────────────────────────────────────────────────────────╮ 00:16:40 v #19827 > > │ .fsx output: │ 00:16:40 v #19828 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected: struct (US0_0 3, │ 00:16:40 v #19829 > > │ US0_1) │ 00:16:40 v #19830 > > │ │ 00:16:40 v #19831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:40 v #19832 > > 00:16:40 v #19833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:40 v #19834 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:40 v #19835 > > │ ### of_obj │ 00:16:40 v #19836 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:40 v #19837 > > 00:16:40 v #19838 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:40 v #19839 > > inl of_obj forall t. (x : t) : option' t = 00:16:40 v #19840 > > backend_switch { 00:16:40 v #19841 > > Fsharp = fun () => 00:16:40 v #19842 > > $'let mutable _!x = None' 00:16:40 v #19843 > > $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT' 00:16:40 v #19844 > > ((x |> $'Option.ofObj') : option' t) |> emit_unit 00:16:40 v #19845 > > $'#else' 00:16:40 v #19846 > > $'Some !x ' 00:16:40 v #19847 > > $'#endif' 00:16:40 v #19848 > > $'|> fun x -> _!x <- Some x' 00:16:40 v #19849 > > $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj 00:16:40 v #19850 > > _!x=None"' : option' t 00:16:40 v #19851 > > Python = fun () => 00:16:40 v #19852 > > $'!x ' : option' t 00:16:40 v #19853 > > } 00:16:41 v #19854 > > 00:16:41 v #19855 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:41 v #19856 > > //// test 00:16:41 v #19857 > > ///! fsharp 00:16:41 v #19858 > > ///! cuda 00:16:41 v #19859 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn 00:16:41 v #19860 > > core::any::Any>`, which is invalid 00:16:41 v #19861 > > ///! typescript 00:16:41 v #19862 > > ///! python 00:16:41 v #19863 > > 00:16:41 v #19864 > > null () 00:16:41 v #19865 > > |> of_obj 00:16:41 v #19866 > > |> unbox 00:16:41 v #19867 > > |> _assert_eq (None : option string) 00:16:43 v #19868 > > 00:16:43 v #19869 > > ╭─[ 2.16s - return value ]─────────────────────────────────────────────────────╮ 00:16:43 v #19870 > > │ .py output (Cuda): │ 00:16:43 v #19871 > > │ __assert_eq / actual: US0_1() / expected: US0_1() │ 00:16:43 v #19872 > > │ │ 00:16:43 v #19873 > > │ .ts output: │ 00:16:43 v #19874 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:16:43 v #19875 > > │ │ 00:16:43 v #19876 > > │ .py output: │ 00:16:43 v #19877 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:16:43 v #19878 > > │ │ 00:16:43 v #19879 > > │ │ 00:16:43 v #19880 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 v #19881 > > 00:16:43 v #19882 > > ╭─[ 2.16s - stdout ]───────────────────────────────────────────────────────────╮ 00:16:43 v #19883 > > │ .fsx output: │ 00:16:43 v #19884 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:16:43 v #19885 > > │ │ 00:16:43 v #19886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 v #19887 > > 00:16:43 v #19888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:43 v #19889 > > //// test 00:16:43 v #19890 > > ///! fsharp 00:16:43 v #19891 > > ///! cuda 00:16:43 v #19892 > > ///! rust 00:16:43 v #19893 > > ///! typescript 00:16:43 v #19894 > > ///! python 00:16:43 v #19895 > > 00:16:43 v #19896 > > "" 00:16:43 v #19897 > > |> of_obj 00:16:43 v #19898 > > |> unbox 00:16:43 v #19899 > > |> _assert_eq' (Some "") 00:16:47 v #19900 > > 00:16:47 v #19901 > > ╭─[ 3.58s - return value ]─────────────────────────────────────────────────────╮ 00:16:47 v #19902 > > │ .py output (Cuda): │ 00:16:47 v #19903 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='') │ 00:16:47 v #19904 > > │ │ 00:16:47 v #19905 > > │ .rs output: │ 00:16:47 v #19906 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("") │ 00:16:47 v #19907 > > │ │ 00:16:47 v #19908 > > │ .ts output: │ 00:16:47 v #19909 > > │ __assert_eq' / actual: US0_0 / expected: US0_0 │ 00:16:47 v #19910 > > │ │ 00:16:47 v #19911 > > │ .py output: │ 00:16:47 v #19912 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" │ 00:16:47 v #19913 > > │ │ 00:16:47 v #19914 > > │ │ 00:16:47 v #19915 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19916 > > 00:16:47 v #19917 > > ╭─[ 3.58s - stdout ]───────────────────────────────────────────────────────────╮ 00:16:47 v #19918 > > │ .fsx output: │ 00:16:47 v #19919 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" │ 00:16:47 v #19920 > > │ │ 00:16:47 v #19921 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19922 > > 00:16:47 v #19923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #19924 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:47 v #19925 > > │ ### flatten' │ 00:16:47 v #19926 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19927 > > 00:16:47 v #19928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #19929 > > inl flatten' x = 00:16:47 v #19930 > > x 00:16:47 v #19931 > > |> unbox 00:16:47 v #19932 > > |> optionm.map unbox 00:16:47 v #19933 > > |> flatten 00:16:47 v #19934 > > 00:16:47 v #19935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #19936 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:47 v #19937 > > │ ## rust │ 00:16:47 v #19938 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19939 > > 00:16:47 v #19940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #19941 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:47 v #19942 > > │ ### try' │ 00:16:47 v #19943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19944 > > 00:16:47 v #19945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #19946 > > inl try' forall t. (x : option' t) : t = 00:16:47 v #19947 > > !\\(x, $'"$0?"') 00:16:47 v #19948 > > 00:16:47 v #19949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #19950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:47 v #19951 > > │ ### map' │ 00:16:47 v #19952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:47 v #19953 > > 00:16:47 v #19954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #19955 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:16:47 v #19956 > > (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore 00:16:47 v #19957 > > inl result = fn !\($'"x"') 00:16:47 v #19958 > > (!\\(result, $'"true; $0 })"') : bool) |> ignore 00:16:47 v #19959 > > !\($'"_optionm_map_"') 00:16:48 v #19960 > > 00:16:48 v #19961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #19962 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:48 v #19963 > > │ ### unwrap │ 00:16:48 v #19964 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:48 v #19965 > > 00:16:48 v #19966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #19967 > > inl unwrap forall t. (x : option' t) : t = 00:16:48 v #19968 > > !\\(x, $'"$0.unwrap()"') 00:16:48 v #19969 > > 00:16:48 v #19970 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #19971 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:48 v #19972 > > │ ### take │ 00:16:48 v #19973 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:48 v #19974 > > 00:16:48 v #19975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #19976 > > inl take forall t. (x : option' t) : option' t = 00:16:48 v #19977 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:16:48 v #19978 > > !\\(x, $'"Option::take(&mut $0)"') 00:16:49 v #19979 > > 00:16:49 v #19980 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 v #19981 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 v #19982 > > │ ### take_ref │ 00:16:49 v #19983 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 v #19984 > > 00:16:49 v #19985 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 v #19986 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t = 00:16:49 v #19987 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:16:49 v #19988 > > !\\(x, $'"Option::take(&mut $0)"') 00:16:49 v #19989 > > 00:16:49 v #19990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 v #19991 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 v #19992 > > │ ### take_ref_mut │ 00:16:49 v #19993 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 v #19994 > > 00:16:49 v #19995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 v #19996 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t = 00:16:49 v #19997 > > !\\(x, $'"Option::take($0)"') 00:16:50 v #19998 > > 00:16:50 v #19999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 v #20000 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 v #20001 > > │ ### cloned │ 00:16:50 v #20002 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 v #20003 > > 00:16:50 v #20004 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 v #20005 > > inl cloned forall t. (x : option' (rust.ref t)) : option' t = 00:16:50 v #20006 > > !\\(x, $'"$0.cloned()"') 00:16:50 v #20007 > > 00:16:50 v #20008 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 v #20009 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 v #20010 > > │ ### as_ref │ 00:16:50 v #20011 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 v #20012 > > 00:16:50 v #20013 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 v #20014 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) = 00:16:50 v #20015 > > !\\(x, $'"$0.as_ref()"') 00:16:50 v #20016 > > 00:16:50 v #20017 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 v #20018 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 v #20019 > > │ ### as_mut │ 00:16:50 v #20020 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 v #20021 > > 00:16:50 v #20022 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 v #20023 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref 00:16:50 v #20024 > > (rust.mut' t)) = 00:16:50 v #20025 > > !\\(x, $'"$0.as_mut()"') 00:16:51 v #20026 > > 00:16:51 v #20027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 v #20028 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 v #20029 > > │ ### unwrap_or │ 00:16:51 v #20030 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 v #20031 > > 00:16:51 v #20032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 v #20033 > > inl unwrap_or forall t. (def : t) (x : option' t) : t = 00:16:51 v #20034 > > !\($'"!x.unwrap_or(!def)"') 00:16:51 v #20035 > > 00:16:51 v #20036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 v #20037 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 v #20038 > > │ ### and_then │ 00:16:51 v #20039 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 v #20040 > > 00:16:51 v #20041 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 v #20042 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u = 00:16:51 v #20043 > > !\\((x, fn), $'"$0.and_then(|x| $1(x))"') 00:16:52 v #20044 > > 00:16:52 v #20045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 v #20046 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 v #20047 > > │ ### rc_upgrade │ 00:16:52 v #20048 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 v #20049 > > 00:16:52 v #20050 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 v #20051 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) = 00:16:52 v #20052 > > !\\(x, $'"std::rc::Weak::upgrade(&$0)"') 00:16:52 v #20053 > > 00:16:52 v #20054 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 v #20055 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 v #20056 > > │ ### rc_into_inner │ 00:16:52 v #20057 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 v #20058 > > 00:16:52 v #20059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 v #20060 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t = 00:16:52 v #20061 > > !\\(x, $'"std::rc::Rc::into_inner($0)"') 00:16:53 v #20062 > > 00:16:53 v #20063 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 v #20064 > > //// test 00:16:53 v #20065 > > ///! rust 00:16:53 v #20066 > > 00:16:53 v #20067 > > rust.new_rc 0i32 00:16:53 v #20068 > > |> rc_into_inner 00:16:53 v #20069 > > |> unbox 00:16:53 v #20070 > > |> _assert_eq' (Some 0i32) 00:16:55 v #20071 > > 00:16:55 v #20072 > > ╭─[ 2.47s - return value ]─────────────────────────────────────────────────────╮ 00:16:55 v #20073 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0) │ 00:16:55 v #20074 > > │ │ 00:16:55 v #20075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 v #20076 > 00:00:34 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27117 } 00:16:55 v #20077 > 00:00:34 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:56 v #20078 > 00:00:35 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/optionm'.dib.ipynb to html 00:16:56 v #20079 > 00:00:35 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:56 v #20080 > 00:00:35 v #7 ! validate(nb) 00:16:57 v #20081 > 00:00:36 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:57 v #20082 > 00:00:36 v #9 ! return _pygments_highlight( 00:16:58 v #20083 > 00:00:37 v #10 ! [NbConvertApp] Writing 347031 bytes to c:\home\git\polyglot\lib\spiral\optionm'.dib.html 00:16:58 v #20084 > 00:00:37 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 } 00:16:58 v #20085 > 00:00:37 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 } 00:16:58 v #20086 > 00:00:37 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:58 v #20087 > 00:00:37 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:58 v #20088 > 00:00:37 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:58 v #20089 > 00:00:37 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 28034 } 00:16:58 d #20090 runtime.execute_with_options_async / { exit_code = 0; output_length = 31743 } 00:16:58 d #21 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path optionm'.dib --retries 3 00:16:58 d #20091 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path listm'.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:58 v #20092 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) } 00:16:58 v #20093 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/listm'.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/listm'.dib" --output-path "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:00 v #20094 > > 00:17:00 v #20095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 v #20096 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 v #20097 > > │ # listm' │ 00:17:00 v #20098 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 v #20099 > > 00:17:03 v #20100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 v #20101 > > //// test 00:17:03 v #20102 > > 00:17:03 v #20103 > > open testing 00:17:04 v #20104 > > 00:17:04 v #20105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 v #20106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 v #20107 > > │ ## listm' │ 00:17:04 v #20108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 v #20109 > > 00:17:04 v #20110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 v #20111 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 v #20112 > > │ ### append │ 00:17:04 v #20113 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 v #20114 > > 00:17:04 v #20115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 v #20116 > > instance append list t = 00:17:04 v #20117 > > listm.append 00:17:04 v #20118 > > 00:17:04 v #20119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 v #20120 > > //// test 00:17:04 v #20121 > > 00:17:04 v #20122 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]] 00:17:04 v #20123 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]] 00:17:06 v #20124 > > 00:17:06 v #20125 > > ╭─[ 1.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:06 v #20126 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d", │ 00:17:06 v #20127 > > │ UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d", │ 00:17:06 v #20128 > > │ UH0_0)))) │ 00:17:06 v #20129 > > │ │ 00:17:06 v #20130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 v #20131 > > 00:17:06 v #20132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 v #20133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 v #20134 > > │ ### collect │ 00:17:06 v #20135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 v #20136 > > 00:17:06 v #20137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 v #20138 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r = 00:17:06 v #20139 > > items 00:17:06 v #20140 > > |> listm.map fn 00:17:06 v #20141 > > |> listm.fold (++) [[]] 00:17:06 v #20142 > > 00:17:06 v #20143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 v #20144 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 v #20145 > > │ ### init_series │ 00:17:06 v #20146 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 v #20147 > > 00:17:06 v #20148 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 v #20149 > > inl init_series start end inc = 00:17:06 v #20150 > > inl total : f64 = conv ((end - start) / inc) + 1 00:17:06 v #20151 > > listm.init total (conv >> (*) inc >> (+) start) 00:17:07 v #20152 > > 00:17:07 v #20153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 v #20154 > > //// test 00:17:07 v #20155 > > 00:17:07 v #20156 > > init_series 0 1 0.5 00:17:07 v #20157 > > |> _assert_eq [[ 0f64; 0.5; 1 ]] 00:17:07 v #20158 > > 00:17:07 v #20159 > > ╭─[ 514.31ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:07 v #20160 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) / │ 00:17:07 v #20161 > > │ expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) │ 00:17:07 v #20162 > > │ │ 00:17:07 v #20163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 v #20164 > > 00:17:07 v #20165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 v #20166 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 v #20167 > > │ ### try_item │ 00:17:07 v #20168 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 v #20169 > > 00:17:07 v #20170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 v #20171 > > inl rec try_item i = function 00:17:07 v #20172 > > | Cons (x, _) when i = 0 => Some x 00:17:07 v #20173 > > | Cons (_, xs) => try_item (i - 1) xs 00:17:07 v #20174 > > | Nil => None 00:17:07 v #20175 > > 00:17:07 v #20176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 v #20177 > > //// test 00:17:07 v #20178 > > 00:17:07 v #20179 > > listm.init 10i32 id 00:17:07 v #20180 > > |> try_item 9i32 00:17:07 v #20181 > > |> _assert_eq (Some 9) 00:17:08 v #20182 > > 00:17:08 v #20183 > > ╭─[ 494.25ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:08 v #20184 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9 │ 00:17:08 v #20185 > > │ │ 00:17:08 v #20186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 v #20187 > > 00:17:08 v #20188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 v #20189 > > //// test 00:17:08 v #20190 > > 00:17:08 v #20191 > > listm.init 10i32 id 00:17:08 v #20192 > > |> try_item 10i32 00:17:08 v #20193 > > |> _assert_eq None 00:17:08 v #20194 > > 00:17:08 v #20195 > > ╭─[ 429.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:08 v #20196 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:17:08 v #20197 > > │ │ 00:17:08 v #20198 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 v #20199 > > 00:17:08 v #20200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 v #20201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 v #20202 > > │ ### item │ 00:17:08 v #20203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 v #20204 > > 00:17:08 v #20205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 v #20206 > > inl item i = 00:17:08 v #20207 > > try_item i >> optionm.value 00:17:09 v #20208 > > 00:17:09 v #20209 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 v #20210 > > //// test 00:17:09 v #20211 > > 00:17:09 v #20212 > > listm.init 10i32 id 00:17:09 v #20213 > > |> item 9i32 00:17:09 v #20214 > > |> _assert_eq 9 00:17:09 v #20215 > > 00:17:09 v #20216 > > ╭─[ 430.04ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:09 v #20217 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:17:09 v #20218 > > │ │ 00:17:09 v #20219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 v #20220 > > 00:17:09 v #20221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 v #20222 > > //// test 00:17:09 v #20223 > > 00:17:09 v #20224 > > fun () => 00:17:09 v #20225 > > listm.init 10i32 id 00:17:09 v #20226 > > |> item 10i32 00:17:09 v #20227 > > |> ignore 00:17:09 v #20228 > > |> _throws 00:17:09 v #20229 > > |> optionm.map sm'.format_exception 00:17:09 v #20230 > > |> _assert_eq (Some "System.Exception: Option does not have a value.") 00:17:10 v #20231 > > 00:17:10 v #20232 > > ╭─[ 596.90ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:10 v #20233 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does not have a │ 00:17:10 v #20234 > > │ value." / expected: US1_0 "System.Exception: Option does not have a value." │ 00:17:10 v #20235 > > │ │ 00:17:10 v #20236 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:10 v #20237 > > 00:17:10 v #20238 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:10 v #20239 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:10 v #20240 > > │ ### try_item_ │ 00:17:10 v #20241 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:10 v #20242 > > 00:17:10 v #20243 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:10 v #20244 > > let rec try_item_ i = function 00:17:10 v #20245 > > | Cons (x, _) when i = 0 => Some x 00:17:10 v #20246 > > | Cons (_, xs) => try_item_ (i - 1) xs 00:17:10 v #20247 > > | Nil => None 00:17:10 v #20248 > > 00:17:10 v #20249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:10 v #20250 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:10 v #20251 > > │ ### item_ │ 00:17:10 v #20252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:10 v #20253 > > 00:17:10 v #20254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:10 v #20255 > > inl item_ i = 00:17:10 v #20256 > > try_item_ i >> optionm.value 00:17:11 v #20257 > > 00:17:11 v #20258 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:11 v #20259 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:11 v #20260 > > │ ### sum │ 00:17:11 v #20261 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:11 v #20262 > > 00:17:11 v #20263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:11 v #20264 > > inl sum list = 00:17:11 v #20265 > > list |> listm.fold (+) 0 00:17:11 v #20266 > > 00:17:11 v #20267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:11 v #20268 > > //// test 00:17:11 v #20269 > > 00:17:11 v #20270 > > listm.init 10i32 id 00:17:11 v #20271 > > |> sum 00:17:11 v #20272 > > |> _assert_eq 45 00:17:12 v #20273 > > 00:17:12 v #20274 > > ╭─[ 443.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:12 v #20275 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:12 v #20276 > > │ │ 00:17:12 v #20277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:12 v #20278 > > 00:17:12 v #20279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:12 v #20280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:12 v #20281 > > │ ### unzip │ 00:17:12 v #20282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:12 v #20283 > > 00:17:12 v #20284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:12 v #20285 > > inl unzip list = 00:17:12 v #20286 > > (([[]], [[]]), list) 00:17:12 v #20287 > > ||> listm.fold fun (acc_x, acc_y) (x, y) => 00:17:12 v #20288 > > x :: acc_x, y :: acc_y 00:17:12 v #20289 > > |> fun x, y => 00:17:12 v #20290 > > x |> listm.rev, y |> listm.rev 00:17:12 v #20291 > > 00:17:12 v #20292 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:12 v #20293 > > //// test 00:17:12 v #20294 > > 00:17:12 v #20295 > > listm.init 10i32 id 00:17:12 v #20296 > > |> listm.map (fun x => x, x) 00:17:12 v #20297 > > |> unzip 00:17:12 v #20298 > > |> fun x, y => 00:17:12 v #20299 > > x |> sum 00:17:12 v #20300 > > |> _assert_eq 45 00:17:12 v #20301 > > 00:17:12 v #20302 > > y |> sum 00:17:12 v #20303 > > |> _assert_eq 45 00:17:12 v #20304 > > 00:17:12 v #20305 > > ╭─[ 430.81ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:12 v #20306 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:12 v #20307 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:12 v #20308 > > │ │ 00:17:12 v #20309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:12 v #20310 > > 00:17:12 v #20311 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:12 v #20312 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:12 v #20313 > > │ ### try_index_of │ 00:17:12 v #20314 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:12 v #20315 > > 00:17:12 v #20316 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:12 v #20317 > > inl try_index_of item list = 00:17:12 v #20318 > > inl rec loop i = function 00:17:12 v #20319 > > | [[]] => None 00:17:12 v #20320 > > | x :: xs => 00:17:12 v #20321 > > if x = item 00:17:12 v #20322 > > then Some i 00:17:12 v #20323 > > else loop (i + 1) xs 00:17:12 v #20324 > > loop 0 list 00:17:12 v #20325 > > 00:17:12 v #20326 > > inl index_of item = 00:17:12 v #20327 > > try_index_of item >> optionm.value 00:17:12 v #20328 > > 00:17:12 v #20329 > > inl try_index_of_ item list = 00:17:12 v #20330 > > let rec loop i = function 00:17:12 v #20331 > > | [[]] => None 00:17:12 v #20332 > > | x :: xs => 00:17:12 v #20333 > > if x = item 00:17:12 v #20334 > > then Some i 00:17:12 v #20335 > > else loop (i + 1) xs 00:17:12 v #20336 > > loop 0 list 00:17:12 v #20337 > > 00:17:12 v #20338 > > inl index_of_ item = 00:17:12 v #20339 > > try_index_of_ item >> optionm.value 00:17:12 v #20340 > > 00:17:12 v #20341 > > inl try_index_of__ item list = 00:17:12 v #20342 > > inl i = mut 0 00:17:12 v #20343 > > inl list = mut list 00:17:12 v #20344 > > inl result = mut None 00:17:12 v #20345 > > let rec loop () = 00:17:12 v #20346 > > match *list with 00:17:12 v #20347 > > | [[]] => result <- None 00:17:12 v #20348 > > | x :: xs => 00:17:12 v #20349 > > if x = item 00:17:12 v #20350 > > then result <- Some *i 00:17:12 v #20351 > > else 00:17:12 v #20352 > > i <- *i + 1 00:17:12 v #20353 > > list <- xs 00:17:12 v #20354 > > loop () 00:17:12 v #20355 > > loop () 00:17:12 v #20356 > > *result 00:17:12 v #20357 > > 00:17:12 v #20358 > > inl index_of__ item = 00:17:12 v #20359 > > try_index_of__ item >> optionm.value 00:17:13 v #20360 > > 00:17:13 v #20361 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:13 v #20362 > > //// test 00:17:13 v #20363 > > 00:17:13 v #20364 > > listm.init 10i32 id 00:17:13 v #20365 > > |> index_of 5i32 00:17:13 v #20366 > > |> _assert_eq 5i32 00:17:13 v #20367 > > 00:17:13 v #20368 > > ╭─[ 445.20ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:13 v #20369 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:17:13 v #20370 > > │ │ 00:17:13 v #20371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:13 v #20372 > > 00:17:13 v #20373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:13 v #20374 > > //// test 00:17:13 v #20375 > > 00:17:13 v #20376 > > listm.init 10i32 id 00:17:13 v #20377 > > |> try_index_of 10i32 00:17:13 v #20378 > > |> _assert_eq (None : option i32) 00:17:14 v #20379 > > 00:17:14 v #20380 > > ╭─[ 491.16ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:14 v #20381 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:17:14 v #20382 > > │ │ 00:17:14 v #20383 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:14 v #20384 > > 00:17:14 v #20385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:14 v #20386 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:14 v #20387 > > │ ### try_find │ 00:17:14 v #20388 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:14 v #20389 > > 00:17:14 v #20390 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:14 v #20391 > > inl try_find fn list = 00:17:14 v #20392 > > inl rec loop = function 00:17:14 v #20393 > > | [[]] => None 00:17:14 v #20394 > > | x :: xs => 00:17:14 v #20395 > > if fn x 00:17:14 v #20396 > > then Some x 00:17:14 v #20397 > > else loop xs 00:17:14 v #20398 > > loop list 00:17:14 v #20399 > > 00:17:14 v #20400 > > inl try_find_ fn list = 00:17:14 v #20401 > > let rec loop = function 00:17:14 v #20402 > > | [[]] => None 00:17:14 v #20403 > > | x :: xs => 00:17:14 v #20404 > > if fn x 00:17:14 v #20405 > > then Some x 00:17:14 v #20406 > > else loop xs 00:17:14 v #20407 > > loop list 00:17:14 v #20408 > > 00:17:14 v #20409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:14 v #20410 > > //// test 00:17:14 v #20411 > > 00:17:14 v #20412 > > listm.init 10i32 id 00:17:14 v #20413 > > |> try_find ((=) 5i32) 00:17:14 v #20414 > > |> _assert_eq (Some 5i32) 00:17:15 v #20415 > > 00:17:15 v #20416 > > ╭─[ 499.66ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:15 v #20417 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:17:15 v #20418 > > │ │ 00:17:15 v #20419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:15 v #20420 > > 00:17:15 v #20421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #20422 > > inl find x = 00:17:15 v #20423 > > try_find x >> optionm.value 00:17:15 v #20424 > > 00:17:15 v #20425 > > inl find_ x = 00:17:15 v #20426 > > try_find_ x >> optionm.value 00:17:15 v #20427 > > 00:17:15 v #20428 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #20429 > > //// test 00:17:15 v #20430 > > 00:17:15 v #20431 > > listm.init 10i32 id 00:17:15 v #20432 > > |> find ((=) 5i32) 00:17:15 v #20433 > > |> _assert_eq 5i32 00:17:16 v #20434 > > 00:17:16 v #20435 > > ╭─[ 424.54ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:16 v #20436 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:17:16 v #20437 > > │ │ 00:17:16 v #20438 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:16 v #20439 > > 00:17:16 v #20440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:16 v #20441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:16 v #20442 > > │ ### choose │ 00:17:16 v #20443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:16 v #20444 > > 00:17:16 v #20445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #20446 > > inl choose f l = 00:17:16 v #20447 > > (l, [[]]) 00:17:16 v #20448 > > ||> listm.foldBack fun x acc => 00:17:16 v #20449 > > match f x with 00:17:16 v #20450 > > | Some y => y :: acc 00:17:16 v #20451 > > | None => acc 00:17:16 v #20452 > > 00:17:16 v #20453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #20454 > > //// test 00:17:16 v #20455 > > 00:17:16 v #20456 > > listm.init 10i32 id 00:17:16 v #20457 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:17:16 v #20458 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]] 00:17:17 v #20459 > > 00:17:17 v #20460 > > ╭─[ 459.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:17 v #20461 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, │ 00:17:17 v #20462 > > │ UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, │ 00:17:17 v #20463 > > │ UH0_0))))) │ 00:17:17 v #20464 > > │ │ 00:17:17 v #20465 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:17 v #20466 > > 00:17:17 v #20467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:17 v #20468 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:17 v #20469 > > │ ### filter │ 00:17:17 v #20470 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:17 v #20471 > > 00:17:17 v #20472 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #20473 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t = 00:17:17 v #20474 > > (list, Nil) 00:17:17 v #20475 > > ||> listm.foldBack fun x acc => 00:17:17 v #20476 > > if fn x then x :: acc else acc 00:17:17 v #20477 > > 00:17:17 v #20478 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:17 v #20479 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:17 v #20480 > > │ ### zip_with │ 00:17:17 v #20481 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:17 v #20482 > > 00:17:17 v #20483 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #20484 > > inl zip_with fn xs ys = 00:17:17 v #20485 > > inl rec loop acc xs ys = 00:17:17 v #20486 > > match xs, ys with 00:17:17 v #20487 > > | Cons (x, xs), Cons (y, ys) => 00:17:17 v #20488 > > loop (fn x y :: acc) xs ys 00:17:17 v #20489 > > | _ => listm.rev acc 00:17:17 v #20490 > > loop [[]] xs ys 00:17:17 v #20491 > > 00:17:17 v #20492 > > inl zip_with_ fn xs ys = 00:17:17 v #20493 > > let rec loop acc xs ys = 00:17:17 v #20494 > > match xs, ys with 00:17:17 v #20495 > > | Cons (x, xs), Cons (y, ys) => 00:17:17 v #20496 > > loop (fn x y :: acc) xs ys 00:17:17 v #20497 > > | _ => listm.rev acc 00:17:17 v #20498 > > loop [[]] xs ys 00:17:17 v #20499 > > 00:17:17 v #20500 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #20501 > > //// test 00:17:17 v #20502 > > 00:17:17 v #20503 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]]) 00:17:17 v #20504 > > ||> zip_with (+) 00:17:17 v #20505 > > |> _assert_eq [[ 5; 7; 9 ]] 00:17:18 v #20506 > > 00:17:18 v #20507 > > ╭─[ 481.01ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:18 v #20508 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) / expected: │ 00:17:18 v #20509 > > │ UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) │ 00:17:18 v #20510 > > │ │ 00:17:18 v #20511 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:18 v #20512 > > 00:17:18 v #20513 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:18 v #20514 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:18 v #20515 > > │ ### zip │ 00:17:18 v #20516 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:18 v #20517 > > 00:17:18 v #20518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:18 v #20519 > > inl zip xs ys = 00:17:18 v #20520 > > zip_with pair xs ys 00:17:18 v #20521 > > 00:17:18 v #20522 > > inl zip_ xs ys = 00:17:18 v #20523 > > zip_with_ pair xs ys 00:17:18 v #20524 > > 00:17:18 v #20525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:18 v #20526 > > //// test 00:17:18 v #20527 > > 00:17:18 v #20528 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]]) 00:17:18 v #20529 > > ||> zip 00:17:18 v #20530 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]] 00:17:19 v #20531 > > 00:17:19 v #20532 > > ╭─[ 489.63ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:19 v #20533 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) / │ 00:17:19 v #20534 > > │ expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) │ 00:17:19 v #20535 > > │ │ 00:17:19 v #20536 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:19 v #20537 > > 00:17:19 v #20538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:19 v #20539 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:19 v #20540 > > │ ### indexed │ 00:17:19 v #20541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:19 v #20542 > > 00:17:19 v #20543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:19 v #20544 > > inl indexed list = 00:17:19 v #20545 > > (([[]], 0), list) 00:17:19 v #20546 > > ||> listm.fold fun (acc, i) x => 00:17:19 v #20547 > > (i, x) :: acc, i + 1 00:17:19 v #20548 > > |> fst 00:17:19 v #20549 > > |> listm.rev 00:17:19 v #20550 > > 00:17:19 v #20551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:19 v #20552 > > //// test 00:17:19 v #20553 > > 00:17:19 v #20554 > > listm.init 5i32 ((*) 2) 00:17:19 v #20555 > > |> indexed 00:17:19 v #20556 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]] 00:17:20 v #20557 > > 00:17:20 v #20558 > > ╭─[ 443.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:20 v #20559 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, UH0_1 (3, 6, │ 00:17:20 v #20560 > > │ UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, │ 00:17:20 v #20561 > > │ UH0_1 (3, 6, UH0_1 (4, 8, UH0_0))))) │ 00:17:20 v #20562 > > │ │ 00:17:20 v #20563 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:20 v #20564 > > 00:17:20 v #20565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:20 v #20566 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:20 v #20567 > > │ ### group_by │ 00:17:20 v #20568 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:20 v #20569 > > 00:17:20 v #20570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:20 v #20571 > > inl group_by fn list = 00:17:20 v #20572 > > (list, [[]]) 00:17:20 v #20573 > > ||> listm.foldBack fun x acc => 00:17:20 v #20574 > > inl xk = fn x 00:17:20 v #20575 > > inl found, new_acc = 00:17:20 v #20576 > > ((false, [[]]), acc) 00:17:20 v #20577 > > ||> listm.fold fun (found, acc') (k, xs) => 00:17:20 v #20578 > > if k = xk 00:17:20 v #20579 > > then true, (k, x :: xs) :: acc' 00:17:20 v #20580 > > else found, (k, xs) :: acc' 00:17:20 v #20581 > > if found 00:17:20 v #20582 > > then new_acc 00:17:20 v #20583 > > else (xk, [[ x ]]) :: new_acc 00:17:20 v #20584 > > 00:17:20 v #20585 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:20 v #20586 > > //// test 00:17:20 v #20587 > > 00:17:20 v #20588 > > listm.init 10i32 id 00:17:20 v #20589 > > |> group_by (fun x => x % 2 = 0) 00:17:20 v #20590 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]] 00:17:21 v #20591 > > 00:17:21 v #20592 > > ╭─[ 545.67ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:21 v #20593 > > │ __assert_eq / actual: UH1_1 │ 00:17:21 v #20594 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))), │ 00:17:21 v #20595 > > │ UH1_1 │ 00:17:21 v #20596 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))), │ 00:17:21 v #20597 > > │ UH1_0)) / expected: UH1_1 │ 00:17:21 v #20598 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))), │ 00:17:21 v #20599 > > │ UH1_1 │ 00:17:21 v #20600 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))), │ 00:17:21 v #20601 > > │ UH1_0)) │ 00:17:21 v #20602 > > │ │ 00:17:21 v #20603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:21 v #20604 > > 00:17:21 v #20605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:21 v #20606 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:21 v #20607 > > │ ### forall' │ 00:17:21 v #20608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:21 v #20609 > > 00:17:21 v #20610 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:21 v #20611 > > inl forall' fn (head :: tail) = 00:17:21 v #20612 > > (true, tail) 00:17:21 v #20613 > > ||> listm.fold fun acc x => 00:17:21 v #20614 > > acc && x = head 00:17:21 v #20615 > > 00:17:21 v #20616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:21 v #20617 > > //// test 00:17:21 v #20618 > > 00:17:21 v #20619 > > [[ 1i32; 1; 1; 1; 1 ]] 00:17:21 v #20620 > > |> forall' ((=) 1i32) 00:17:21 v #20621 > > |> _assert_eq true 00:17:22 v #20622 > > 00:17:22 v #20623 > > ╭─[ 470.85ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:22 v #20624 > > │ __assert_eq / actual: true / expected: true │ 00:17:22 v #20625 > > │ │ 00:17:22 v #20626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:22 v #20627 > > 00:17:22 v #20628 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:22 v #20629 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:22 v #20630 > > │ ### last │ 00:17:22 v #20631 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:22 v #20632 > > 00:17:22 v #20633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:22 v #20634 > > inl last list = 00:17:22 v #20635 > > list 00:17:22 v #20636 > > |> listm.rev 00:17:22 v #20637 > > |> item 0i32 00:17:22 v #20638 > > 00:17:22 v #20639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:22 v #20640 > > //// test 00:17:22 v #20641 > > 00:17:22 v #20642 > > listm.init 10i32 id 00:17:22 v #20643 > > |> last 00:17:22 v #20644 > > |> _assert_eq 9 00:17:22 v #20645 > > 00:17:22 v #20646 > > ╭─[ 466.46ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:22 v #20647 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:17:22 v #20648 > > │ │ 00:17:22 v #20649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:22 v #20650 > > 00:17:22 v #20651 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:22 v #20652 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:22 v #20653 > > │ ### try_pick │ 00:17:22 v #20654 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:22 v #20655 > > 00:17:22 v #20656 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:22 v #20657 > > inl try_pick fn list = 00:17:22 v #20658 > > inl rec body fn = function 00:17:22 v #20659 > > | [[]] => None 00:17:22 v #20660 > > | x :: xs => 00:17:22 v #20661 > > match fn x with 00:17:22 v #20662 > > | Some y => Some y 00:17:22 v #20663 > > | None => loop xs 00:17:22 v #20664 > > and inl loop list = 00:17:22 v #20665 > > if var_is list |> not 00:17:22 v #20666 > > then body fn list 00:17:22 v #20667 > > else 00:17:22 v #20668 > > inl fn = join fn 00:17:22 v #20669 > > inl list = dyn list 00:17:22 v #20670 > > join body fn list 00:17:22 v #20671 > > loop list 00:17:23 v #20672 > > 00:17:23 v #20673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:23 v #20674 > > //// test 00:17:23 v #20675 > > 00:17:23 v #20676 > > listm.init 10i32 id 00:17:23 v #20677 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:17:23 v #20678 > > |> _assert_eq (Some 5i32) 00:17:23 v #20679 > > 00:17:23 v #20680 > > ╭─[ 458.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:23 v #20681 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:17:23 v #20682 > > │ │ 00:17:23 v #20683 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:23 v #20684 > > 00:17:23 v #20685 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:23 v #20686 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:23 v #20687 > > │ ### exists' │ 00:17:23 v #20688 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:23 v #20689 > > 00:17:23 v #20690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:23 v #20691 > > inl exists' f x = 00:17:23 v #20692 > > inl length_x : i64 = x |> listm.length 00:17:23 v #20693 > > let rec loop i = 00:17:23 v #20694 > > if i >= length_x 00:17:23 v #20695 > > then false 00:17:23 v #20696 > > elif x |> item i |> f 00:17:23 v #20697 > > then true 00:17:23 v #20698 > > else loop (i + 1) 00:17:23 v #20699 > > loop 0 00:17:24 v #20700 > > 00:17:24 v #20701 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 v #20702 > > //// test 00:17:24 v #20703 > > 00:17:24 v #20704 > > [[ 'a'; 'b'; 'c' ]] 00:17:24 v #20705 > > |> exists' fun x => x = 'b' 00:17:24 v #20706 > > |> _assert_eq true 00:17:24 v #20707 > > 00:17:24 v #20708 > > [[ 'a'; 'b' ]] 00:17:24 v #20709 > > |> exists' fun x => x = 'c' 00:17:24 v #20710 > > |> _assert_eq false 00:17:24 v #20711 > > 00:17:24 v #20712 > > [[]] 00:17:24 v #20713 > > |> exists' fun x => x = 'a' 00:17:24 v #20714 > > |> _assert_eq false 00:17:24 v #20715 > > 00:17:24 v #20716 > > ╭─[ 545.37ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:24 v #20717 > > │ __assert_eq / actual: true / expected: true │ 00:17:24 v #20718 > > │ __assert_eq / actual: false / expected: false │ 00:17:24 v #20719 > > │ __assert_eq / actual: false / expected: false │ 00:17:24 v #20720 > > │ │ 00:17:24 v #20721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 v #20722 > > 00:17:24 v #20723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 v #20724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 v #20725 > > │ ## fsharp │ 00:17:24 v #20726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 v #20727 > > 00:17:24 v #20728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 v #20729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 v #20730 > > │ ### list' │ 00:17:24 v #20731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 v #20732 > > 00:17:24 v #20733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 v #20734 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python : $'list' })" 00:17:25 v #20735 > > 00:17:25 v #20736 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 v #20737 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:25 v #20738 > > │ ### empty' │ 00:17:25 v #20739 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:25 v #20740 > > 00:17:25 v #20741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 v #20742 > > inl empty' forall t. () : list' t = 00:17:25 v #20743 > > $'[[]]' 00:17:25 v #20744 > > 00:17:25 v #20745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 v #20746 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:25 v #20747 > > │ ### cons' │ 00:17:25 v #20748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:25 v #20749 > > 00:17:25 v #20750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 v #20751 > > inl cons' forall t. (head : t) (tail : list' t) : list' t = 00:17:25 v #20752 > > backend_switch { 00:17:25 v #20753 > > Fsharp = fun () => $'!head :: !tail ' : list' t 00:17:25 v #20754 > > Python = fun () => 00:17:25 v #20755 > > $'!tail.insert(0, !head)' 00:17:25 v #20756 > > $'!tail ' : list' t 00:17:25 v #20757 > > } 00:17:26 v #20758 > > 00:17:26 v #20759 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:26 v #20760 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:26 v #20761 > > │ ### rev' │ 00:17:26 v #20762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:26 v #20763 > > 00:17:26 v #20764 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #20765 > > inl rev' forall t. (items : list' t) : list' t = 00:17:26 v #20766 > > backend_switch { 00:17:26 v #20767 > > Fsharp = fun () => items |> $'List.rev' : list' t 00:17:26 v #20768 > > Python = fun () => $'list(reversed(!items))' : list' t 00:17:26 v #20769 > > } 00:17:26 v #20770 > > 00:17:26 v #20771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:26 v #20772 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:26 v #20773 > > │ ### box │ 00:17:26 v #20774 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:26 v #20775 > > 00:17:26 v #20776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #20777 > > inl box forall t. (list : list t) : list' t = 00:17:26 v #20778 > > (list, empty' ()) 00:17:26 v #20779 > > ||> listm.foldBack fun x acc => 00:17:26 v #20780 > > acc |> cons' x 00:17:27 v #20781 > > 00:17:27 v #20782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #20783 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:27 v #20784 > > │ ### fold' │ 00:17:27 v #20785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:27 v #20786 > > 00:17:27 v #20787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #20788 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u = 00:17:27 v #20789 > > backend_switch { 00:17:27 v #20790 > > Fsharp = fun () => 00:17:27 v #20791 > > (init, list) 00:17:27 v #20792 > > ||> $'List.fold' join fun acc x => Cons (fn x, acc) 00:17:27 v #20793 > > : list u 00:17:27 v #20794 > > Python = fun () => 00:17:27 v #20795 > > inl init = init |> box 00:17:27 v #20796 > > $'r = !init ' 00:17:27 v #20797 > > inl list = list |> rev' 00:17:27 v #20798 > > $'for x in !list: r = [[!fn(x)]] + r' 00:17:27 v #20799 > > inl init : list u = Nil 00:17:27 v #20800 > > inl cons (a : u) b = Cons (a, b) 00:17:27 v #20801 > > $'r_ = !init ' 00:17:27 v #20802 > > $'for x in r: r_ = !cons (x)(r_)' 00:17:27 v #20803 > > $'r_' : list u 00:17:27 v #20804 > > } 00:17:27 v #20805 > > 00:17:27 v #20806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #20807 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:27 v #20808 > > │ ### fold_back' │ 00:17:27 v #20809 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:27 v #20810 > > 00:17:27 v #20811 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #20812 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list 00:17:27 v #20813 > > u = 00:17:27 v #20814 > > backend_switch { 00:17:27 v #20815 > > Fsharp = fun () => 00:17:27 v #20816 > > (list, init) 00:17:27 v #20817 > > ||> $'List.foldBack' join fun x acc => Cons (fn x, acc) 00:17:27 v #20818 > > : list u 00:17:27 v #20819 > > Python = fun () => 00:17:27 v #20820 > > list 00:17:27 v #20821 > > |> rev' 00:17:27 v #20822 > > |> fold' fn init 00:17:27 v #20823 > > } 00:17:27 v #20824 > > 00:17:27 v #20825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #20826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:27 v #20827 > > │ ### filter' │ 00:17:27 v #20828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:27 v #20829 > > 00:17:27 v #20830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #20831 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t = 00:17:27 v #20832 > > backend_switch { 00:17:27 v #20833 > > Fsharp = fun () => list |> $'"List.filter !fn"' : list' t 00:17:27 v #20834 > > Python = fun () => $'list(filter(!fn, !list))' : list' t 00:17:27 v #20835 > > } 00:17:28 v #20836 > > 00:17:28 v #20837 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:28 v #20838 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:28 v #20839 > > │ ### map │ 00:17:28 v #20840 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:28 v #20841 > > 00:17:28 v #20842 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #20843 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u = 00:17:28 v #20844 > > backend_switch { 00:17:28 v #20845 > > Fsharp = fun () => list |> $'List.map' fn : list' u 00:17:28 v #20846 > > Python = fun () => $'list(map(!fn, !list))' : list' u 00:17:28 v #20847 > > } 00:17:28 v #20848 > > 00:17:28 v #20849 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:28 v #20850 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:28 v #20851 > > │ ### unbox │ 00:17:28 v #20852 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:28 v #20853 > > 00:17:28 v #20854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #20855 > > inl unbox forall t. (list : list' t) : list t = 00:17:28 v #20856 > > (list, Nil) 00:17:28 v #20857 > > ||> fold_back' id 00:17:29 v #20858 > > 00:17:29 v #20859 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:29 v #20860 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:29 v #20861 > > │ ### distinct' │ 00:17:29 v #20862 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:29 v #20863 > > 00:17:29 v #20864 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:29 v #20865 > > // preserve order 00:17:29 v #20866 > > inl distinct' forall t. (list : list' t) : list' t = 00:17:29 v #20867 > > backend_switch { 00:17:29 v #20868 > > Fsharp = fun () => list |> $'List.distinct' : list' t 00:17:29 v #20869 > > Python = fun () => 00:17:29 v #20870 > > $'x = list(set(!list))' 00:17:29 v #20871 > > $'x.sort(key=!list.index)' 00:17:29 v #20872 > > $'x' : list' t 00:17:29 v #20873 > > } 00:17:29 v #20874 > > 00:17:29 v #20875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:29 v #20876 > > //// test 00:17:29 v #20877 > > ///! fsharp 00:17:29 v #20878 > > ///! cuda 00:17:29 v #20879 > > 00:17:29 v #20880 > > [[ "1"; "2"; "2"; "3" ]] 00:17:29 v #20881 > > |> box 00:17:29 v #20882 > > |> distinct' 00:17:29 v #20883 > > |> unbox 00:17:29 v #20884 > > |> _assert_eq [[ "1"; "2"; "3" ]] 00:17:31 v #20885 > > 00:17:31 v #20886 > > ╭─[ 1.29s - return value ]─────────────────────────────────────────────────────╮ 00:17:31 v #20887 > > │ .py output (Cuda): │ 00:17:31 v #20888 > > │ __assert_eq / actual: UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3', │ 00:17:31 v #20889 > > │ v1=UH0_0()))) / expected: UH0_1(v0='1', v1=UH0_1(v0='2', v1=UH0_1(v0='3', │ 00:17:31 v #20890 > > │ v1=UH0_0()))) │ 00:17:31 v #20891 > > │ │ 00:17:31 v #20892 > > │ │ 00:17:31 v #20893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:31 v #20894 > > 00:17:31 v #20895 > > ╭─[ 1.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:31 v #20896 > > │ .fsx output: │ 00:17:31 v #20897 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) / │ 00:17:31 v #20898 > > │ expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) │ 00:17:31 v #20899 > > │ │ 00:17:31 v #20900 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:31 v #20901 > > 00:17:31 v #20902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:31 v #20903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:31 v #20904 > > │ ### to_array' │ 00:17:31 v #20905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:31 v #20906 > > 00:17:31 v #20907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:31 v #20908 > > inl to_array' forall t. (items : list' t) : array_base t = 00:17:31 v #20909 > > backend_switch { 00:17:31 v #20910 > > Fsharp = fun () => items |> $'List.toArray' : array_base t 00:17:31 v #20911 > > Python = fun () => $'(cp if cuda else np).array(!items)' : array_base t 00:17:31 v #20912 > > } 00:17:31 v #20913 > 00:00:32 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35299 } 00:17:31 v #20914 > 00:00:32 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:32 v #20915 > 00:00:34 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/listm'.dib.ipynb to html 00:17:32 v #20916 > 00:00:34 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:32 v #20917 > 00:00:34 v #7 ! validate(nb) 00:17:33 v #20918 > 00:00:34 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:33 v #20919 > 00:00:34 v #9 ! return _pygments_highlight( 00:17:33 v #20920 > 00:00:35 v #10 ! [NbConvertApp] Writing 385194 bytes to c:\home\git\polyglot\lib\spiral\listm'.dib.html 00:17:34 v #20921 > 00:00:35 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:17:34 v #20922 > 00:00:35 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:17:34 v #20923 > 00:00:35 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:34 v #20924 > 00:00:35 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:34 v #20925 > 00:00:35 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:34 v #20926 > 00:00:35 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36212 } 00:17:34 d #20927 runtime.execute_with_options_async / { exit_code = 0; output_length = 40419 } 00:17:34 d #22 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path listm'.dib --retries 3 00:17:34 d #20928 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path reflection.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:34 v #20929 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) } 00:17:34 v #20930 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/reflection.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/reflection.dib" --output-path "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:36 v #20931 > > 00:17:36 v #20932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #20933 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 v #20934 > > │ # reflection │ 00:17:36 v #20935 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:39 v #20936 > > 00:17:39 v #20937 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:39 v #20938 > > //// test 00:17:39 v #20939 > > 00:17:39 v #20940 > > open testing 00:17:40 v #20941 > > 00:17:40 v #20942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:40 v #20943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:40 v #20944 > > │ ## reflection │ 00:17:40 v #20945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:40 v #20946 > > 00:17:40 v #20947 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:40 v #20948 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:40 v #20949 > > │ ### get_union_fields │ 00:17:40 v #20950 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:40 v #20951 > > 00:17:40 v #20952 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:40 v #20953 > > inl get_union_fields forall union_type. () : list (string * union_type) = 00:17:40 v #20954 > > real 00:17:40 v #20955 > > real_core.union_to_record 00:17:40 v #20956 > > `union_type 00:17:40 v #20957 > > forall union_record_type. => 00:17:40 v #20958 > > real_core.record_type_fold 00:17:40 v #20959 > > fun acc key => 00:17:40 v #20960 > > forall value. => 00:17:40 v #20961 > > inl value = 00:17:40 v #20962 > > typecase value with 00:17:40 v #20963 > > | () => $'' : value 00:17:40 v #20964 > > | _ => 00:17:40 v #20965 > > backend_switch `value `({}) { 00:17:40 v #20966 > > Fsharp = 00:17:40 v #20967 > > (fun () => 00:17:40 v #20968 > > $'Unchecked.defaultof<_>' : 00:17:40 v #20969 > > value 00:17:40 v #20970 > > ) : () -> value 00:17:40 v #20971 > > Python = 00:17:40 v #20972 > > (fun () => 00:17:40 v #20973 > > $'None' : value 00:17:40 v #20974 > > ) : () -> value 00:17:40 v #20975 > > } 00:17:40 v #20976 > > inl item = real_core.nominal_create `union_type 00:17:40 v #20977 > > (key, value) 00:17:40 v #20978 > > inl key' = sm'_real.symbol_to_string `(`key) 00:17:40 v #20979 > > (::) `(string * union_type) (key', item) acc 00:17:40 v #20980 > > (Nil `(string * union_type)) 00:17:40 v #20981 > > `union_record_type 00:17:40 v #20982 > > 00:17:40 v #20983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:40 v #20984 > > //// test 00:17:40 v #20985 > > ///! fsharp 00:17:40 v #20986 > > ///! rust 00:17:40 v #20987 > > ///! typescript 00:17:40 v #20988 > > ///! python 00:17:40 v #20989 > > 00:17:40 v #20990 > > get_union_fields () 00:17:40 v #20991 > > |> listm'.box 00:17:40 v #20992 > > |> listm'.to_array' 00:17:40 v #20993 > > |> a 00:17:40 v #20994 > > |> am'.sort_by snd 00:17:40 v #20995 > > |> fun (a x : _ int _) => x 00:17:40 v #20996 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:17:45 v #20997 > > 00:17:45 v #20998 > > ╭─[ 4.43s - return value ]─────────────────────────────────────────────────────╮ 00:17:45 v #20999 > > │ .rs output: │ 00:17:45 v #21000 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0), ("Wasm", US0_1), │ 00:17:45 v #21001 > > │ ("Contract", US0_2)])) / expected: Array(MutCell([("Native", US0_0), │ 00:17:45 v #21002 > > │ ("Wasm", US0_1), ("Contract", US0_2)])) │ 00:17:45 v #21003 > > │ │ 00:17:45 v #21004 > > │ .ts output: │ 00:17:45 v #21005 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2 / expected: │ 00:17:45 v #21006 > > │ Native,US0_0,Wasm,US0_1,Contract,US0_2 │ 00:17:45 v #21007 > > │ │ 00:17:45 v #21008 > > │ .py output: │ 00:17:45 v #21009 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1), ('Contract', │ 00:17:45 v #21010 > > │ US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1), ('Contract', │ 00:17:45 v #21011 > > │ US0_2)] │ 00:17:45 v #21012 > > │ │ 00:17:45 v #21013 > > │ │ 00:17:45 v #21014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:45 v #21015 > > 00:17:45 v #21016 > > ╭─[ 4.44s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:45 v #21017 > > │ .fsx output: │ 00:17:45 v #21018 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct ("Wasm", US0_1); │ 00:17:45 v #21019 > > │ struct ("Contract", US0_2)|] / expected: [|struct ("Native", US0_0); struct │ 00:17:45 v #21020 > > │ ("Wasm", US0_1); struct ("Contract", US0_2)|] │ 00:17:45 v #21021 > > │ │ 00:17:45 v #21022 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:45 v #21023 > > 00:17:45 v #21024 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:45 v #21025 > > //// test 00:17:45 v #21026 > > ///! fsharp 00:17:45 v #21027 > > ///! rust 00:17:45 v #21028 > > ///! typescript 00:17:45 v #21029 > > ///! python 00:17:45 v #21030 > > 00:17:45 v #21031 > > get_union_fields () 00:17:45 v #21032 > > |> listm'.box 00:17:45 v #21033 > > |> listm'.to_array' 00:17:45 v #21034 > > |> a 00:17:45 v #21035 > > |> am'.sort_by snd 00:17:45 v #21036 > > |> fun (a x : _ int _) => x 00:17:45 v #21037 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]] 00:17:48 v #21038 > > 00:17:48 v #21039 > > ╭─[ 3.26s - return value ]─────────────────────────────────────────────────────╮ 00:17:48 v #21040 > > │ .rs output: │ 00:17:48 v #21041 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │ 00:17:48 v #21042 > > │ / expected: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │ 00:17:48 v #21043 > > │ │ 00:17:48 v #21044 > > │ .ts output: │ 00:17:48 v #21045 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected: Some,US0_0 │ 00:17:48 v #21046 > > │ 0,None,US0_1 │ 00:17:48 v #21047 > > │ │ 00:17:48 v #21048 > > │ .py output: │ 00:17:48 v #21049 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)] / expected: [ │ 00:17:48 v #21050 > > │ ('Some', US0_0 0), ('None', US0_1)] │ 00:17:48 v #21051 > > │ │ 00:17:48 v #21052 > > │ │ 00:17:48 v #21053 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:48 v #21054 > > 00:17:48 v #21055 > > ╭─[ 3.26s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:48 v #21056 > > │ .fsx output: │ 00:17:48 v #21057 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct ("None", US0_1)|] │ 00:17:48 v #21058 > > │ / expected: [|struct ("Some", US0_0 0); struct ("None", US0_1)|] │ 00:17:48 v #21059 > > │ │ 00:17:48 v #21060 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:48 v #21061 > > 00:17:48 v #21062 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #21063 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:48 v #21064 > > │ ### get_union_fields_untag │ 00:17:48 v #21065 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:48 v #21066 > > 00:17:48 v #21067 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #21068 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) = 00:17:48 v #21069 > > real 00:17:48 v #21070 > > real_core.union_to_record 00:17:48 v #21071 > > `union_type 00:17:48 v #21072 > > forall union_record_type. => 00:17:48 v #21073 > > inl result = 00:17:48 v #21074 > > real_core.record_type_fold_back 00:17:48 v #21075 > > fun _key => 00:17:48 v #21076 > > forall value. (acc, (i : i32)) => 00:17:48 v #21077 > > inl key, item : (string * union_type) = 00:17:48 v #21078 > > real_core.union_untag `union_type i 00:17:48 v #21079 > > (fun key => forall value. => 00:17:48 v #21080 > > inl key' = sm'_real.symbol_to_string 00:17:48 v #21081 > > `(`key) 00:17:48 v #21082 > > inl value = 00:17:48 v #21083 > > typecase value with 00:17:48 v #21084 > > | () => $'' : value 00:17:48 v #21085 > > | _ => 00:17:48 v #21086 > > backend_switch `value `({}) 00:17:48 v #21087 > > { 00:17:48 v #21088 > > Fsharp = 00:17:48 v #21089 > > (fun () => 00:17:48 v #21090 > > 00:17:48 v #21091 > > $'Unchecked.defaultof<_>' : value 00:17:48 v #21092 > > ) : () -> value 00:17:48 v #21093 > > Python = 00:17:48 v #21094 > > (fun () => 00:17:48 v #21095 > > $'None' : value 00:17:48 v #21096 > > ) : () -> value 00:17:48 v #21097 > > } 00:17:48 v #21098 > > inl item = real_core.nominal_create 00:17:48 v #21099 > > `union_type (key, value) 00:17:48 v #21100 > > key', item 00:17:48 v #21101 > > ) 00:17:48 v #21102 > > (fun _ => 00:17:48 v #21103 > > failwith 00:17:48 v #21104 > > `(string * union_type) 00:17:48 v #21105 > > 00:17:48 v #21106 > > "reflection.get_union_fields_untag / invalid tag" 00:17:48 v #21107 > > ) 00:17:48 v #21108 > > (::) `(string * union_type) (key, item) acc, (+) 00:17:48 v #21109 > > `i32 i 1 00:17:48 v #21110 > > `union_record_type 00:17:48 v #21111 > > (Nil `(string * union_type), 0i32) 00:17:48 v #21112 > > inl result = fst `(list (string * union_type)) `i32 result 00:17:48 v #21113 > > listm.rev `(string * union_type) result 00:17:48 v #21114 > > 00:17:48 v #21115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #21116 > > //// test 00:17:48 v #21117 > > ///! fsharp 00:17:48 v #21118 > > ///! cuda 00:17:48 v #21119 > > ///! rust 00:17:48 v #21120 > > ///! typescript 00:17:48 v #21121 > > ///! python 00:17:48 v #21122 > > 00:17:48 v #21123 > > get_union_fields_untag () 00:17:48 v #21124 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:17:52 v #21125 > > 00:17:52 v #21126 > > ╭─[ 3.56s - return value ]─────────────────────────────────────────────────────╮ 00:17:52 v #21127 > > │ .py output (Cuda): │ 00:17:52 v #21128 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', │ 00:17:52 v #21129 > > │ v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) / expected: │ 00:17:52 v #21130 > > │ UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', v1=US0_1(), │ 00:17:52 v #21131 > > │ v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) │ 00:17:52 v #21132 > > │ │ 00:17:52 v #21133 > > │ .rs output: │ 00:17:52 v #21134 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm", US0_1, │ 00:17:52 v #21135 > > │ UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0, │ 00:17:52 v #21136 > > │ UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0))) │ 00:17:52 v #21137 > > │ │ 00:17:52 v #21138 > > │ .ts output: │ 00:17:52 v #21139 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm, US0_1, UH0_1 │ 00:17:52 v #21140 > > │ (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1 (Wasm, │ 00:17:52 v #21141 > > │ US0_1, UH0_1 (Contract, US0_2, UH0_0))) │ 00:17:52 v #21142 > > │ │ 00:17:52 v #21143 > > │ .py output: │ 00:17:52 v #21144 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1 │ 00:17:52 v #21145 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1 │ 00:17:52 v #21146 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) │ 00:17:52 v #21147 > > │ │ 00:17:52 v #21148 > > │ │ 00:17:52 v #21149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 v #21150 > > 00:17:52 v #21151 > > ╭─[ 3.57s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:52 v #21152 > > │ .fsx output: │ 00:17:52 v #21153 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1 │ 00:17:52 v #21154 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1 │ 00:17:52 v #21155 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) │ 00:17:52 v #21156 > > │ │ 00:17:52 v #21157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 v #21158 > > 00:17:52 v #21159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 v #21160 > > //// test 00:17:52 v #21161 > > ///! fsharp 00:17:52 v #21162 > > ///! cuda 00:17:52 v #21163 > > ///! rust 00:17:52 v #21164 > > ///! typescript 00:17:52 v #21165 > > ///! python 00:17:52 v #21166 > > 00:17:52 v #21167 > > get_union_fields_untag () 00:17:52 v #21168 > > |> _assert_eq' [[ "Some", Some (); "None", None ]] 00:17:55 v #21169 > > 00:17:55 v #21170 > > ╭─[ 3.43s - return value ]─────────────────────────────────────────────────────╮ 00:17:55 v #21171 > > │ .py output (Cuda): │ 00:17:55 v #21172 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(), v2=UH0_1(v0='None', │ 00:17:55 v #21173 > > │ v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some', v1=US0_0(), │ 00:17:55 v #21174 > > │ v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0())) │ 00:17:55 v #21175 > > │ │ 00:17:55 v #21176 > > │ .rs output: │ 00:17:55 v #21177 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) / │ 00:17:55 v #21178 > > │ expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) │ 00:17:55 v #21179 > > │ │ 00:17:55 v #21180 > > │ .ts output: │ 00:17:55 v #21181 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) / │ 00:17:55 v #21182 > > │ expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) │ 00:17:55 v #21183 > > │ │ 00:17:55 v #21184 > > │ .py output: │ 00:17:55 v #21185 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │ 00:17:55 v #21186 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) │ 00:17:55 v #21187 > > │ │ 00:17:55 v #21188 > > │ │ 00:17:55 v #21189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 v #21190 > > 00:17:55 v #21191 > > ╭─[ 3.43s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:55 v #21192 > > │ .fsx output: │ 00:17:55 v #21193 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │ 00:17:55 v #21194 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) │ 00:17:55 v #21195 > > │ │ 00:17:55 v #21196 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 v #21197 > > 00:17:55 v #21198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:55 v #21199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:55 v #21200 > > │ ### union_try_pick │ 00:17:55 v #21201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 v #21202 > > 00:17:55 v #21203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:55 v #21204 > > inl union_try_pick forall t. (key : string) : option t = 00:17:55 v #21205 > > real get_union_fields_untag `t () 00:17:55 v #21206 > > |> listm'.try_pick fun key', x => 00:17:55 v #21207 > > if key' = key 00:17:55 v #21208 > > then Some x 00:17:55 v #21209 > > else None 00:17:56 v #21210 > > 00:17:56 v #21211 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:56 v #21212 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:56 v #21213 > > │ ### union_to_string │ 00:17:56 v #21214 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:56 v #21215 > > 00:17:56 v #21216 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 v #21217 > > inl union_to_string forall t. (x : t) : string = 00:17:56 v #21218 > > real get_union_fields_untag `t () 00:17:56 v #21219 > > |> listm'.try_pick fun key, x' => 00:17:56 v #21220 > > if x' = x 00:17:56 v #21221 > > then Some key 00:17:56 v #21222 > > else 00:17:56 v #21223 > > inl has_case = 00:17:56 v #21224 > > real 00:17:56 v #21225 > > real_core.union_to_record 00:17:56 v #21226 > > `t 00:17:56 v #21227 > > forall union_record_type. => 00:17:56 v #21228 > > real_core.record_type_fold_back 00:17:56 v #21229 > > fun _key => 00:17:56 v #21230 > > forall value. acc => 00:17:56 v #21231 > > if acc 00:17:56 v #21232 > > then acc 00:17:56 v #21233 > > else 00:17:56 v #21234 > > typecase value with 00:17:56 v #21235 > > | () => false 00:17:56 v #21236 > > | _ => true 00:17:56 v #21237 > > `union_record_type 00:17:56 v #21238 > > false 00:17:56 v #21239 > > if has_case |> not 00:17:56 v #21240 > > then None 00:17:56 v #21241 > > else 00:17:56 v #21242 > > inl separator = 00:17:56 v #21243 > > backend_switch { 00:17:56 v #21244 > > Fsharp = fun () => 00:17:56 v #21245 > > run_target function 00:17:56 v #21246 > > | Rust _ => fun () => join "(" 00:17:56 v #21247 > > | _ => fun () => join " " 00:17:56 v #21248 > > Python = fun () => "(" 00:17:56 v #21249 > > } 00:17:56 v #21250 > > inl x' = x' |> sm'.format |> sm'.split separator |> 00:17:56 v #21251 > > am'.index_base 0 00:17:56 v #21252 > > if x |> sm'.format |> sm'.starts_with x' 00:17:56 v #21253 > > then Some key 00:17:56 v #21254 > > else None 00:17:56 v #21255 > > |> optionm.value 00:17:56 v #21256 > > 00:17:56 v #21257 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 v #21258 > > //// test 00:17:56 v #21259 > > ///! fsharp 00:17:56 v #21260 > > ///! cuda 00:17:56 v #21261 > > ///! rust 00:17:56 v #21262 > > ///! typescript 00:17:56 v #21263 > > ///! python 00:17:56 v #21264 > > 00:17:56 v #21265 > > Some true 00:17:56 v #21266 > > |> union_to_string 00:17:56 v #21267 > > |> _assert_eq' "Some" 00:18:00 v #21268 > > 00:18:00 v #21269 > > ╭─[ 3.73s - return value ]─────────────────────────────────────────────────────╮ 00:18:00 v #21270 > > │ .py output (Cuda): │ 00:18:00 v #21271 > > │ __assert_eq' / actual: Some / expected: Some │ 00:18:00 v #21272 > > │ │ 00:18:00 v #21273 > > │ .rs output: │ 00:18:00 v #21274 > > │ __assert_eq' / actual: "Some" / expected: "Some" │ 00:18:00 v #21275 > > │ │ 00:18:00 v #21276 > > │ .ts output: │ 00:18:00 v #21277 > > │ __assert_eq' / actual: Some / expected: Some │ 00:18:00 v #21278 > > │ │ 00:18:00 v #21279 > > │ .py output: │ 00:18:00 v #21280 > > │ __assert_eq' / actual: Some / expected: Some │ 00:18:00 v #21281 > > │ │ 00:18:00 v #21282 > > │ │ 00:18:00 v #21283 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 v #21284 > > 00:18:00 v #21285 > > ╭─[ 3.73s - stdout ]───────────────────────────────────────────────────────────╮ 00:18:00 v #21286 > > │ .fsx output: │ 00:18:00 v #21287 > > │ __assert_eq' / actual: "Some" / expected: "Some" │ 00:18:00 v #21288 > > │ │ 00:18:00 v #21289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 v #21290 > > 00:18:00 v #21291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:00 v #21292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:00 v #21293 > > │ ### nameof │ 00:18:00 v #21294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 v #21295 > > 00:18:00 v #21296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 v #21297 > > inl nameof forall t. (x : t) : string = 00:18:00 v #21298 > > real 00:18:00 v #21299 > > real_core.record_type_fold_back 00:18:00 v #21300 > > fun key => 00:18:00 v #21301 > > forall value. _ => 00:18:00 v #21302 > > sm'_real.symbol_to_string `(`key) 00:18:00 v #21303 > > `t 00:18:00 v #21304 > > "" 00:18:00 v #21305 > > 00:18:00 v #21306 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 v #21307 > > //// test 00:18:00 v #21308 > > 00:18:00 v #21309 > > { test1 = ""; test2 = "" } 00:18:00 v #21310 > > |> nameof 00:18:00 v #21311 > > |> _assert_eq' "test1" 00:18:01 v #21312 > > 00:18:01 v #21313 > > ╭─[ 443.03ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:01 v #21314 > > │ __assert_eq' / actual: "test1" / expected: "test1" │ 00:18:01 v #21315 > > │ │ 00:18:01 v #21316 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:01 v #21317 > > 00:18:01 v #21318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:01 v #21319 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:01 v #21320 > > │ ### get_record_fields │ 00:18:01 v #21321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:01 v #21322 > > 00:18:01 v #21323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:01 v #21324 > > inl get_record_fields forall t u. (x : t) : list (string * u) = 00:18:01 v #21325 > > real 00:18:01 v #21326 > > real_core.record_type_fold_back 00:18:01 v #21327 > > fun key => 00:18:01 v #21328 > > forall u'. acc => 00:18:01 v #21329 > > inl k = sm'_real.symbol_to_string `(`key) 00:18:01 v #21330 > > inl v = x key 00:18:01 v #21331 > > (::) `(string * u') (k, v) acc 00:18:01 v #21332 > > `t 00:18:01 v #21333 > > (Nil `(string * u)) 00:18:01 v #21334 > > 00:18:01 v #21335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:01 v #21336 > > //// test 00:18:01 v #21337 > > 00:18:01 v #21338 > > { a = "1"; b = "2" } 00:18:01 v #21339 > > |> get_record_fields 00:18:01 v #21340 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]] 00:18:02 v #21341 > > 00:18:02 v #21342 > > ╭─[ 480.42ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:02 v #21343 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) / expected: │ 00:18:02 v #21344 > > │ UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) │ 00:18:02 v #21345 > > │ │ 00:18:02 v #21346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:02 v #21347 > > 00:18:02 v #21348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:02 v #21349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:02 v #21350 > > │ ### get_functions_types │ 00:18:02 v #21351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:02 v #21352 > > 00:18:02 v #21353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:02 v #21354 > > inl get_functions_types forall t {record}. (fns : t) = 00:18:02 v #21355 > > real 00:18:02 v #21356 > > inl get_function_type forall t. = 00:18:02 v #21357 > > inl args forall t {record}. : list (string * string) = 00:18:02 v #21358 > > real_core.record_type_fold_back 00:18:02 v #21359 > > fun key => 00:18:02 v #21360 > > forall v. acc => 00:18:02 v #21361 > > inl k = sm'_real.symbol_to_string `(`key) 00:18:02 v #21362 > > inl v = $'"`v"' : string 00:18:02 v #21363 > > (::) `(string * string) (k, v) acc 00:18:02 v #21364 > > `t 00:18:02 v #21365 > > (Nil `(string * string)) 00:18:02 v #21366 > > 00:18:02 v #21367 > > typecase t with 00:18:02 v #21368 > > | ~t -> ~u => args `t, ($'"`u"' : string) 00:18:02 v #21369 > > 00:18:02 v #21370 > > real_core.record_type_fold_back 00:18:02 v #21371 > > fun key => 00:18:02 v #21372 > > forall v. acc => 00:18:02 v #21373 > > inl k = sm'_real.symbol_to_string `(`key) 00:18:02 v #21374 > > inl args, result = get_function_type `v 00:18:02 v #21375 > > (::) `(string * (list (string * string) * string)) (k, 00:18:02 v #21376 > > (args, result)) acc 00:18:02 v #21377 > > `(`fns) 00:18:02 v #21378 > > (Nil `(string * (list (string * string) * string))) 00:18:02 v #21379 > > |> fun x => x : list (string * (list (string * string) * string)) 00:18:02 v #21380 > > 00:18:02 v #21381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:02 v #21382 > > //// test 00:18:02 v #21383 > > 00:18:02 v #21384 > > inl one ({ a } : { a : i32 }) : i32 = a + 1 00:18:02 v #21385 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2 00:18:02 v #21386 > > inl fns = { one two } 00:18:02 v #21387 > > 00:18:02 v #21388 > > fns 00:18:02 v #21389 > > |> get_functions_types 00:18:02 v #21390 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:18:02 v #21391 > > listm'.to_array', result) 00:18:02 v #21392 > > |> listm'.box 00:18:02 v #21393 > > |> listm'.to_array' 00:18:02 v #21394 > > |> sm'.format 00:18:02 v #21395 > > |> _assert_eq' ( 00:18:02 v #21396 > > [[ 00:18:02 v #21397 > > "one", [["a", "int32"]], "int32" 00:18:02 v #21398 > > "two", [["a", "int32"; "b", "int32"]], "int32" 00:18:02 v #21399 > > ]] 00:18:02 v #21400 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:18:02 v #21401 > > listm'.to_array', result) 00:18:02 v #21402 > > |> listm'.box 00:18:02 v #21403 > > |> listm'.to_array' 00:18:02 v #21404 > > |> sm'.format 00:18:02 v #21405 > > ) 00:18:03 v #21406 > > 00:18:03 v #21407 > > ╭─[ 616.14ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:03 v #21408 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a", "int32")|], │ 00:18:03 v #21409 > > │ "int32"); │ 00:18:03 v #21410 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|], │ 00:18:03 v #21411 > > │ "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|], │ 00:18:03 v #21412 > > │ "int32"); │ 00:18:03 v #21413 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|], │ 00:18:03 v #21414 > > │ "int32")|]" │ 00:18:03 v #21415 > > │ │ 00:18:03 v #21416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:03 v #21417 > 00:00:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24693 } 00:18:03 v #21418 > 00:00:28 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:04 v #21419 > 00:00:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/reflection.dib.ipynb to html 00:18:04 v #21420 > 00:00:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:04 v #21421 > 00:00:30 v #7 ! validate(nb) 00:18:05 v #21422 > 00:00:30 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:05 v #21423 > 00:00:30 v #9 ! return _pygments_highlight( 00:18:05 v #21424 > 00:00:31 v #10 ! [NbConvertApp] Writing 326982 bytes to c:\home\git\polyglot\lib\spiral\reflection.dib.html 00:18:05 v #21425 > 00:00:31 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 } 00:18:05 v #21426 > 00:00:31 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 } 00:18:05 v #21427 > 00:00:31 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:06 v #21428 > 00:00:31 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:06 v #21429 > 00:00:31 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:06 v #21430 > 00:00:31 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25614 } 00:18:06 d #21431 runtime.execute_with_options_async / { exit_code = 0; output_length = 29189 } 00:18:06 d #23 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path reflection.dib --retries 3 00:18:06 d #21432 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path iter.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:06 v #21433 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) } 00:18:06 v #21434 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/iter.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/iter.dib" --output-path "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:07 v #21435 > > 00:18:07 v #21436 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:07 v #21437 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:07 v #21438 > > │ # iter │ 00:18:07 v #21439 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 v #21440 > > 00:18:11 v #21441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 v #21442 > > open rust 00:18:11 v #21443 > > open rust_operators 00:18:12 v #21444 > > 00:18:12 v #21445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 v #21446 > > //// test 00:18:12 v #21447 > > 00:18:12 v #21448 > > open testing 00:18:12 v #21449 > > 00:18:12 v #21450 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 v #21451 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 v #21452 > > │ ## rust │ 00:18:12 v #21453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 v #21454 > > 00:18:12 v #21455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 v #21456 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 v #21457 > > │ ### enumerate │ 00:18:12 v #21458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 v #21459 > > 00:18:12 v #21460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 v #21461 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair 00:18:12 v #21462 > > unativeint t) = 00:18:12 v #21463 > > !\($'"!iter.enumerate().map(std::sync::Arc::new)"') 00:18:13 v #21464 > > 00:18:13 v #21465 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #21466 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:13 v #21467 > > │ ### into_iter │ 00:18:13 v #21468 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:13 v #21469 > > 00:18:13 v #21470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #21471 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:18:13 v #21472 > > !\($'"!x.into_iter()"') 00:18:13 v #21473 > > 00:18:13 v #21474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #21475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:13 v #21476 > > │ ### iter │ 00:18:13 v #21477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:13 v #21478 > > 00:18:13 v #21479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #21480 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:18:13 v #21481 > > !\\(x, $'"$0.iter()"') 00:18:13 v #21482 > > 00:18:13 v #21483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #21484 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:13 v #21485 > > │ ### iter_ref │ 00:18:13 v #21486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:13 v #21487 > > 00:18:13 v #21488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #21489 > > inl iter_ref forall (t : * -> *) u. (x : t u) : into_iterator (rust.ref u) = 00:18:13 v #21490 > > !\\(x, $'"$0.iter()"') 00:18:14 v #21491 > > 00:18:14 v #21492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #21493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:14 v #21494 > > │ ### iter_ref' │ 00:18:14 v #21495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:14 v #21496 > > 00:18:14 v #21497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #21498 > > inl iter_ref' forall (t : * -> *) u. (x : rust.ref (t u)) : into_iterator 00:18:14 v #21499 > > (rust.ref u) = 00:18:14 v #21500 > > !\\(x, $'"$0.iter()"') 00:18:14 v #21501 > > 00:18:14 v #21502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #21503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:14 v #21504 > > │ ### iter_ref'' │ 00:18:14 v #21505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:14 v #21506 > > 00:18:14 v #21507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #21508 > > inl iter_ref'' forall (t : * -> *) u (v : * -> *). (x : v (t u)) : into_iterator 00:18:14 v #21509 > > (rust.ref u) = 00:18:14 v #21510 > > !\\(x, $'"$0.iter()"') 00:18:15 v #21511 > > 00:18:15 v #21512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:15 v #21513 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:15 v #21514 > > │ ### iter_ref''' │ 00:18:15 v #21515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:15 v #21516 > > 00:18:15 v #21517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #21518 > > inl iter_ref''' forall (t : * -> *) u (v : * -> *) (w : * -> *). (x : w (v (t 00:18:15 v #21519 > > u))) : into_iterator (rust.ref u) = 00:18:15 v #21520 > > !\\(x, $'"$0.iter()"') 00:18:15 v #21521 > > 00:18:15 v #21522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:15 v #21523 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:15 v #21524 > > │ ### map │ 00:18:15 v #21525 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:15 v #21526 > > 00:18:15 v #21527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #21528 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u = 00:18:15 v #21529 > > !\\(fn, $'"!iter.map(|x| $0(x))"') 00:18:16 v #21530 > > 00:18:16 v #21531 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:16 v #21532 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:16 v #21533 > > │ ### cloned │ 00:18:16 v #21534 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:16 v #21535 > > 00:18:16 v #21536 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:16 v #21537 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t = 00:18:16 v #21538 > > !\($'"!iter.cloned()"') 00:18:16 v #21539 > > 00:18:16 v #21540 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:16 v #21541 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:16 v #21542 > > │ ### for_each │ 00:18:16 v #21543 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:16 v #21544 > > 00:18:16 v #21545 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:16 v #21546 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () = 00:18:16 v #21547 > > (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore 00:18:16 v #21548 > > 00:18:16 v #21549 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:16 v #21550 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:16 v #21551 > > │ ### try_for_each │ 00:18:16 v #21552 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:16 v #21553 > > 00:18:16 v #21554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:16 v #21555 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string 00:18:16 v #21556 > > = 00:18:16 v #21557 > > (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| { 00:18:16 v #21558 > > //"') : bool) |> ignore 00:18:16 v #21559 > > (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore 00:18:16 v #21560 > > !\($'"_iter_try_for_each.map_err(|x| x.into())"') 00:18:17 v #21561 > > 00:18:17 v #21562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:17 v #21563 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:17 v #21564 > > │ ### all │ 00:18:17 v #21565 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:17 v #21566 > > 00:18:17 v #21567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:17 v #21568 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool = 00:18:17 v #21569 > > x |> rust.to_mut 00:18:17 v #21570 > > !\\(fn, $'$"!x.all(|x| $0(x))"') 00:18:17 v #21571 > > 00:18:17 v #21572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:17 v #21573 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:17 v #21574 > > │ ### enumerate │ 00:18:17 v #21575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:17 v #21576 > > 00:18:17 v #21577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:17 v #21578 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint * 00:18:17 v #21579 > > t) = 00:18:17 v #21580 > > inl (a ar) = ar 00:18:17 v #21581 > > ar 00:18:17 v #21582 > > |> am'.to_vec 00:18:17 v #21583 > > |> into_iter 00:18:17 v #21584 > > |> enumerate 00:18:17 v #21585 > > |> iter_collect 00:18:17 v #21586 > > |> am'.vec_map' from_pair 00:18:17 v #21587 > > |> am'.from_vec 00:18:18 v #21588 > > 00:18:18 v #21589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:18 v #21590 > > //// test 00:18:18 v #21591 > > ///! rust 00:18:18 v #21592 > > 00:18:18 v #21593 > > am'.init_series 0i32 2 1 00:18:18 v #21594 > > |> fun x => a x : _ int _ 00:18:18 v #21595 > > |> enumerate 00:18:18 v #21596 > > |> fun (a x : _ int _) => x 00:18:18 v #21597 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]] 00:18:21 v #21598 > > 00:18:21 v #21599 > > ╭─[ 2.99s - return value ]─────────────────────────────────────────────────────╮ 00:18:21 v #21600 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2, 2)])) / expected: │ 00:18:21 v #21601 > > │ Array(MutCell([(0, 0), (1, 1), (2, 2)])) │ 00:18:21 v #21602 > > │ │ 00:18:21 v #21603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 v #21604 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8683 } 00:18:21 v #21605 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:22 v #21606 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/iter.dib.ipynb to html 00:18:22 v #21607 > 00:00:16 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:22 v #21608 > 00:00:16 v #7 ! validate(nb) 00:18:23 v #21609 > 00:00:17 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:23 v #21610 > 00:00:17 v #9 ! return _pygments_highlight( 00:18:23 v #21611 > 00:00:17 v #10 ! [NbConvertApp] Writing 299004 bytes to c:\home\git\polyglot\lib\spiral\iter.dib.html 00:18:23 v #21612 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:18:23 v #21613 > 00:00:17 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:18:23 v #21614 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:23 v #21615 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:23 v #21616 > 00:00:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:23 v #21617 > 00:00:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9592 } 00:18:23 d #21618 runtime.execute_with_options_async / { exit_code = 0; output_length = 12477 } 00:18:23 d #24 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path iter.dib --retries 3 00:18:23 d #21619 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path wasm.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:23 v #21620 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) } 00:18:23 v #21621 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/wasm.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/wasm.dib" --output-path "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:25 v #21622 > > 00:18:25 v #21623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:25 v #21624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:25 v #21625 > > │ # wasm │ 00:18:25 v #21626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:28 v #21627 > > 00:18:28 v #21628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:28 v #21629 > > open rust 00:18:28 v #21630 > > open rust_operators 00:18:29 v #21631 > > 00:18:29 v #21632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:29 v #21633 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:29 v #21634 > > │ ### rexie │ 00:18:29 v #21635 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:29 v #21636 > > 00:18:29 v #21637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #21638 > > nominal rexie = 00:18:29 v #21639 > > `( 00:18:29 v #21640 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:29 v #21641 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end" 00:18:29 v #21642 > > $'' : $'rexie_Rexie' 00:18:29 v #21643 > > ) 00:18:30 v #21644 > > 00:18:30 v #21645 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 v #21646 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:30 v #21647 > > │ ### rexie_store │ 00:18:30 v #21648 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:30 v #21649 > > 00:18:30 v #21650 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #21651 > > nominal rexie_store = 00:18:30 v #21652 > > `( 00:18:30 v #21653 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:30 v #21654 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end" 00:18:30 v #21655 > > $'' : $'rexie_Store' 00:18:30 v #21656 > > ) 00:18:30 v #21657 > > 00:18:30 v #21658 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 v #21659 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:30 v #21660 > > │ ### rexie_transaction │ 00:18:30 v #21661 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:30 v #21662 > > 00:18:30 v #21663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #21664 > > nominal rexie_transaction = 00:18:30 v #21665 > > `( 00:18:30 v #21666 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:30 v #21667 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction = 00:18:30 v #21668 > > class end" 00:18:30 v #21669 > > $'' : $'rexie_Transaction' 00:18:30 v #21670 > > ) 00:18:31 v #21671 > > 00:18:31 v #21672 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:31 v #21673 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:31 v #21674 > > │ ### rexie_error │ 00:18:31 v #21675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:31 v #21676 > > 00:18:31 v #21677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #21678 > > nominal rexie_error = 00:18:31 v #21679 > > `( 00:18:31 v #21680 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:31 v #21681 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end" 00:18:31 v #21682 > > $'' : $'rexie_Error' 00:18:31 v #21683 > > ) 00:18:31 v #21684 > > 00:18:31 v #21685 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:31 v #21686 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:31 v #21687 > > │ ### js_value │ 00:18:31 v #21688 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:31 v #21689 > > 00:18:31 v #21690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #21691 > > nominal js_value = 00:18:31 v #21692 > > `( 00:18:31 v #21693 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:31 v #21694 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue 00:18:31 v #21695 > > = class end" 00:18:31 v #21696 > > $'' : $'wasm_bindgen_JsValue' 00:18:31 v #21697 > > ) 00:18:32 v #21698 > > 00:18:32 v #21699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:32 v #21700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:32 v #21701 > > │ ### closure │ 00:18:32 v #21702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:32 v #21703 > > 00:18:32 v #21704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #21705 > > nominal closure t = 00:18:32 v #21706 > > `( 00:18:32 v #21707 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:32 v #21708 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype 00:18:32 v #21709 > > wasm_bindgen_closure_Closure<'T> = class end" 00:18:32 v #21710 > > $'' : $'wasm_bindgen_closure_Closure<`t>' 00:18:32 v #21711 > > ) 00:18:32 v #21712 > > 00:18:32 v #21713 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:32 v #21714 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:32 v #21715 > > │ ### js_function │ 00:18:32 v #21716 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:32 v #21717 > > 00:18:32 v #21718 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #21719 > > nominal js_function = 00:18:32 v #21720 > > `( 00:18:32 v #21721 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:32 v #21722 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class 00:18:32 v #21723 > > end" 00:18:32 v #21724 > > $'' : $'js_sys_Function' 00:18:32 v #21725 > > ) 00:18:32 v #21726 > > 00:18:32 v #21727 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:32 v #21728 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:32 v #21729 > > │ ### window │ 00:18:32 v #21730 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:32 v #21731 > > 00:18:32 v #21732 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #21733 > > nominal window = 00:18:32 v #21734 > > `( 00:18:32 v #21735 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:32 v #21736 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class 00:18:32 v #21737 > > end" 00:18:32 v #21738 > > $'' : $'web_sys_Window' 00:18:32 v #21739 > > ) 00:18:33 v #21740 > > 00:18:33 v #21741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:33 v #21742 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:33 v #21743 > > │ ### document │ 00:18:33 v #21744 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:33 v #21745 > > 00:18:33 v #21746 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #21747 > > nominal document = 00:18:33 v #21748 > > `( 00:18:33 v #21749 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:33 v #21750 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class 00:18:33 v #21751 > > end" 00:18:33 v #21752 > > $'' : $'web_sys_Document' 00:18:33 v #21753 > > ) 00:18:33 v #21754 > > 00:18:33 v #21755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:33 v #21756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:33 v #21757 > > │ ### html_element │ 00:18:33 v #21758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:33 v #21759 > > 00:18:33 v #21760 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #21761 > > nominal html_element = 00:18:33 v #21762 > > `( 00:18:33 v #21763 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:33 v #21764 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement = 00:18:33 v #21765 > > class end" 00:18:33 v #21766 > > $'' : $'web_sys_HtmlElement' 00:18:33 v #21767 > > ) 00:18:34 v #21768 > > 00:18:34 v #21769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:34 v #21770 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:34 v #21771 > > │ ### storage │ 00:18:34 v #21772 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:34 v #21773 > > 00:18:34 v #21774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #21775 > > nominal storage = 00:18:34 v #21776 > > `( 00:18:34 v #21777 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:34 v #21778 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class 00:18:34 v #21779 > > end" 00:18:34 v #21780 > > $'' : $'web_sys_Storage' 00:18:34 v #21781 > > ) 00:18:34 v #21782 > > 00:18:34 v #21783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:34 v #21784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:34 v #21785 > > │ ### closure_wrap │ 00:18:34 v #21786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:34 v #21787 > > 00:18:34 v #21788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #21789 > > inl closure_wrap forall t. (x : rust.box t) : closure t = 00:18:34 v #21790 > > inl x = join x 00:18:34 v #21791 > > !\($'"wasm_bindgen::closure::Closure::wrap(!x)"') 00:18:35 v #21792 > > 00:18:35 v #21793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #21794 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:35 v #21795 > > │ ### closure_forget │ 00:18:35 v #21796 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:35 v #21797 > > 00:18:35 v #21798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #21799 > > inl closure_forget forall t. (closure : closure t) = 00:18:35 v #21800 > > !\($'"!closure.forget()"') : () 00:18:35 v #21801 > > 00:18:35 v #21802 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #21803 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:35 v #21804 > > │ ### closure_as_ref │ 00:18:35 v #21805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:35 v #21806 > > 00:18:35 v #21807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #21808 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value = 00:18:35 v #21809 > > !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"') 00:18:35 v #21810 > > 00:18:35 v #21811 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #21812 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:35 v #21813 > > │ ### unchecked_ref │ 00:18:35 v #21814 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:35 v #21815 > > 00:18:35 v #21816 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #21817 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function = 00:18:35 v #21818 > > !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"') 00:18:36 v #21819 > > 00:18:36 v #21820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #21821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:36 v #21822 > > │ ### set_inner_html │ 00:18:36 v #21823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:36 v #21824 > > 00:18:36 v #21825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #21826 > > inl set_inner_html (html : string) (el : html_element) = 00:18:36 v #21827 > > inl html = join html 00:18:36 v #21828 > > inl html = html |> sm'.as_str 00:18:36 v #21829 > > inl el = join el 00:18:36 v #21830 > > !\\(html, $'"!el.set_inner_html($0)"') 00:18:36 v #21831 > > 00:18:36 v #21832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #21833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:36 v #21834 > > │ ### from_js_value │ 00:18:36 v #21835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:36 v #21836 > > 00:18:36 v #21837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #21838 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option' 00:18:36 v #21839 > > sm'.json_value) sm'.std_string = 00:18:36 v #21840 > > inl value = join value 00:18:36 v #21841 > > !\($'"serde_wasm_bindgen::from_value(!value)"') 00:18:36 v #21842 > > |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |> 00:18:36 v #21843 > > sm'.format' 00:18:37 v #21844 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10635 } 00:18:37 v #21845 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:38 v #21846 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/wasm.dib.ipynb to html 00:18:38 v #21847 > 00:00:14 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:38 v #21848 > 00:00:14 v #7 ! validate(nb) 00:18:39 v #21849 > 00:00:15 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:39 v #21850 > 00:00:15 v #9 ! return _pygments_highlight( 00:18:39 v #21851 > 00:00:15 v #10 ! [NbConvertApp] Writing 302376 bytes to c:\home\git\polyglot\lib\spiral\wasm.dib.html 00:18:39 v #21852 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:18:39 v #21853 > 00:00:15 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:18:39 v #21854 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:40 v #21855 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:40 v #21856 > 00:00:16 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:40 v #21857 > 00:00:16 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11544 } 00:18:40 d #21858 runtime.execute_with_options_async / { exit_code = 0; output_length = 14537 } 00:18:40 d #25 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path wasm.dib --retries 3 00:18:40 d #21859 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path leptos/leptos.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:40 v #21860 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) } 00:18:40 v #21861 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib" --output-path "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:41 v #21862 > > 00:18:41 v #21863 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:41 v #21864 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:41 v #21865 > > │ # leptos │ 00:18:41 v #21866 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:44 v #21867 > > 00:18:44 v #21868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:44 v #21869 > > open rust.rust_operators 00:18:44 v #21870 > > open rust 00:18:44 v #21871 > > open sm'_operators 00:18:45 v #21872 > > 00:18:45 v #21873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:45 v #21874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:45 v #21875 > > │ ### a' │ 00:18:45 v #21876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 v #21877 > > 00:18:45 v #21878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 v #21879 > > nominal a' = 00:18:45 v #21880 > > `( 00:18:45 v #21881 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:45 v #21882 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end" 00:18:45 v #21883 > > $'' : $'leptos_html_A' 00:18:45 v #21884 > > ) 00:18:46 v #21885 > > 00:18:46 v #21886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:46 v #21887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:46 v #21888 > > │ ### event │ 00:18:46 v #21889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 v #21890 > > 00:18:46 v #21891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 v #21892 > > nominal event = 00:18:46 v #21893 > > `( 00:18:46 v #21894 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:46 v #21895 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class 00:18:46 v #21896 > > end" 00:18:46 v #21897 > > $'' : $'leptos_ev_Event' 00:18:46 v #21898 > > ) 00:18:46 v #21899 > > 00:18:46 v #21900 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:46 v #21901 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:46 v #21902 > > │ ### mouse_event │ 00:18:46 v #21903 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 v #21904 > > 00:18:46 v #21905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 v #21906 > > nominal mouse_event = 00:18:46 v #21907 > > `( 00:18:46 v #21908 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:46 v #21909 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype 00:18:46 v #21910 > > leptos_ev_MouseEvent = class end" 00:18:46 v #21911 > > $'' : $'leptos_ev_MouseEvent' 00:18:46 v #21912 > > ) 00:18:47 v #21913 > > 00:18:47 v #21914 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:47 v #21915 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:47 v #21916 > > │ ### button │ 00:18:47 v #21917 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 v #21918 > > 00:18:47 v #21919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 v #21920 > > nominal button = 00:18:47 v #21921 > > `( 00:18:47 v #21922 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:47 v #21923 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button = 00:18:47 v #21924 > > class end" 00:18:47 v #21925 > > $'' : $'leptos_html_Button' 00:18:47 v #21926 > > ) 00:18:47 v #21927 > > 00:18:47 v #21928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:47 v #21929 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:47 v #21930 > > │ ### details │ 00:18:47 v #21931 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 v #21932 > > 00:18:47 v #21933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 v #21934 > > nominal details = 00:18:47 v #21935 > > `( 00:18:47 v #21936 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:47 v #21937 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details 00:18:47 v #21938 > > = class end" 00:18:47 v #21939 > > $'' : $'leptos_html_Details' 00:18:47 v #21940 > > ) 00:18:48 v #21941 > > 00:18:48 v #21942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 v #21943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 v #21944 > > │ ### dd │ 00:18:48 v #21945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 v #21946 > > 00:18:48 v #21947 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 v #21948 > > nominal dd = 00:18:48 v #21949 > > `( 00:18:48 v #21950 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:48 v #21951 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class 00:18:48 v #21952 > > end" 00:18:48 v #21953 > > $'' : $'leptos_html_Dd' 00:18:48 v #21954 > > ) 00:18:48 v #21955 > > 00:18:48 v #21956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 v #21957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 v #21958 > > │ ### div │ 00:18:48 v #21959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 v #21960 > > 00:18:48 v #21961 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 v #21962 > > nominal div = 00:18:48 v #21963 > > `( 00:18:48 v #21964 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:48 v #21965 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class 00:18:48 v #21966 > > end" 00:18:48 v #21967 > > $'' : $'leptos_html_Div' 00:18:48 v #21968 > > ) 00:18:48 v #21969 > > 00:18:48 v #21970 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 v #21971 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 v #21972 > > │ ### dl │ 00:18:48 v #21973 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 v #21974 > > 00:18:48 v #21975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 v #21976 > > nominal dl = 00:18:48 v #21977 > > `( 00:18:48 v #21978 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:48 v #21979 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class 00:18:48 v #21980 > > end" 00:18:48 v #21981 > > $'' : $'leptos_html_Dl' 00:18:48 v #21982 > > ) 00:18:49 v #21983 > > 00:18:49 v #21984 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 v #21985 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 v #21986 > > │ ### dt │ 00:18:49 v #21987 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 v #21988 > > 00:18:49 v #21989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 v #21990 > > nominal dt = 00:18:49 v #21991 > > `( 00:18:49 v #21992 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:49 v #21993 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class 00:18:49 v #21994 > > end" 00:18:49 v #21995 > > $'' : $'leptos_html_Dt' 00:18:49 v #21996 > > ) 00:18:49 v #21997 > > 00:18:49 v #21998 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 v #21999 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 v #22000 > > │ ### footer │ 00:18:49 v #22001 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 v #22002 > > 00:18:49 v #22003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 v #22004 > > nominal footer = 00:18:49 v #22005 > > `( 00:18:49 v #22006 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:49 v #22007 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer = 00:18:49 v #22008 > > class end" 00:18:49 v #22009 > > $'' : $'leptos_html_Footer' 00:18:49 v #22010 > > ) 00:18:50 v #22011 > > 00:18:50 v #22012 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 v #22013 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 v #22014 > > │ ### header │ 00:18:50 v #22015 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 v #22016 > > 00:18:50 v #22017 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 v #22018 > > nominal header = 00:18:50 v #22019 > > `( 00:18:50 v #22020 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:50 v #22021 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header = 00:18:50 v #22022 > > class end" 00:18:50 v #22023 > > $'' : $'leptos_html_Header' 00:18:50 v #22024 > > ) 00:18:50 v #22025 > > 00:18:50 v #22026 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 v #22027 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 v #22028 > > │ ### input │ 00:18:50 v #22029 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 v #22030 > > 00:18:50 v #22031 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 v #22032 > > nominal input = 00:18:50 v #22033 > > `( 00:18:50 v #22034 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:50 v #22035 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input = 00:18:50 v #22036 > > class end" 00:18:50 v #22037 > > $'' : $'leptos_html_Input' 00:18:50 v #22038 > > ) 00:18:51 v #22039 > > 00:18:51 v #22040 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:51 v #22041 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:51 v #22042 > > │ ### label │ 00:18:51 v #22043 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 v #22044 > > 00:18:51 v #22045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 v #22046 > > nominal label = 00:18:51 v #22047 > > `( 00:18:51 v #22048 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:51 v #22049 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label = 00:18:51 v #22050 > > class end" 00:18:51 v #22051 > > $'' : $'leptos_html_Label' 00:18:51 v #22052 > > ) 00:18:51 v #22053 > > 00:18:51 v #22054 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:51 v #22055 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:51 v #22056 > > │ ### main │ 00:18:51 v #22057 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 v #22058 > > 00:18:51 v #22059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 v #22060 > > nominal main = 00:18:51 v #22061 > > `( 00:18:51 v #22062 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:51 v #22063 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main = 00:18:51 v #22064 > > class end" 00:18:51 v #22065 > > $'' : $'leptos_html_Main' 00:18:51 v #22066 > > ) 00:18:52 v #22067 > > 00:18:52 v #22068 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 v #22069 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 v #22070 > > │ ### nav │ 00:18:52 v #22071 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 v #22072 > > 00:18:52 v #22073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 v #22074 > > nominal nav = 00:18:52 v #22075 > > `( 00:18:52 v #22076 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:52 v #22077 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class 00:18:52 v #22078 > > end" 00:18:52 v #22079 > > $'' : $'leptos_html_Nav' 00:18:52 v #22080 > > ) 00:18:52 v #22081 > > 00:18:52 v #22082 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 v #22083 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 v #22084 > > │ ### option' │ 00:18:52 v #22085 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 v #22086 > > 00:18:52 v #22087 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 v #22088 > > nominal option' = 00:18:52 v #22089 > > `( 00:18:52 v #22090 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:52 v #22091 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option = 00:18:52 v #22092 > > class end" 00:18:52 v #22093 > > $'' : $'leptos_html_Option' 00:18:52 v #22094 > > ) 00:18:52 v #22095 > > 00:18:52 v #22096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 v #22097 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 v #22098 > > │ ### pre │ 00:18:52 v #22099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 v #22100 > > 00:18:52 v #22101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 v #22102 > > nominal pre = 00:18:52 v #22103 > > `( 00:18:52 v #22104 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:52 v #22105 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class 00:18:52 v #22106 > > end" 00:18:52 v #22107 > > $'' : $'leptos_html_Pre' 00:18:52 v #22108 > > ) 00:18:53 v #22109 > > 00:18:53 v #22110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:53 v #22111 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:53 v #22112 > > │ ### select │ 00:18:53 v #22113 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:53 v #22114 > > 00:18:53 v #22115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:53 v #22116 > > nominal select = 00:18:53 v #22117 > > `( 00:18:53 v #22118 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:53 v #22119 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select = 00:18:53 v #22120 > > class end" 00:18:53 v #22121 > > $'' : $'leptos_html_Select' 00:18:53 v #22122 > > ) 00:18:53 v #22123 > > 00:18:53 v #22124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:53 v #22125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:53 v #22126 > > │ ### span │ 00:18:53 v #22127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:53 v #22128 > > 00:18:53 v #22129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:53 v #22130 > > nominal span = 00:18:53 v #22131 > > `( 00:18:53 v #22132 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:53 v #22133 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span = 00:18:53 v #22134 > > class end" 00:18:53 v #22135 > > $'' : $'leptos_html_Span' 00:18:53 v #22136 > > ) 00:18:54 v #22137 > > 00:18:54 v #22138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:54 v #22139 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:54 v #22140 > > │ ### summary │ 00:18:54 v #22141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 v #22142 > > 00:18:54 v #22143 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 v #22144 > > nominal summary = 00:18:54 v #22145 > > `( 00:18:54 v #22146 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:54 v #22147 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary 00:18:54 v #22148 > > = class end" 00:18:54 v #22149 > > $'' : $'leptos_html_Summary' 00:18:54 v #22150 > > ) 00:18:54 v #22151 > > 00:18:54 v #22152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:54 v #22153 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:54 v #22154 > > │ ### table │ 00:18:54 v #22155 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 v #22156 > > 00:18:54 v #22157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 v #22158 > > nominal table = 00:18:54 v #22159 > > `( 00:18:54 v #22160 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:54 v #22161 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table = 00:18:54 v #22162 > > class end" 00:18:54 v #22163 > > $'' : $'leptos_html_Table' 00:18:54 v #22164 > > ) 00:18:55 v #22165 > > 00:18:55 v #22166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:55 v #22167 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:55 v #22168 > > │ ### thead │ 00:18:55 v #22169 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:55 v #22170 > > 00:18:55 v #22171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:55 v #22172 > > nominal thead = 00:18:55 v #22173 > > `( 00:18:55 v #22174 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:55 v #22175 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead = 00:18:55 v #22176 > > class end" 00:18:55 v #22177 > > $'' : $'leptos_html_Thead' 00:18:55 v #22178 > > ) 00:18:55 v #22179 > > 00:18:55 v #22180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:55 v #22181 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:55 v #22182 > > │ ### tbody │ 00:18:55 v #22183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:55 v #22184 > > 00:18:55 v #22185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:55 v #22186 > > nominal tbody = 00:18:55 v #22187 > > `( 00:18:55 v #22188 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:55 v #22189 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody = 00:18:55 v #22190 > > class end" 00:18:55 v #22191 > > $'' : $'leptos_html_Tbody' 00:18:55 v #22192 > > ) 00:18:55 v #22193 > > 00:18:55 v #22194 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:55 v #22195 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:55 v #22196 > > │ ### tr │ 00:18:55 v #22197 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:55 v #22198 > > 00:18:55 v #22199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:55 v #22200 > > nominal tr = 00:18:55 v #22201 > > `( 00:18:55 v #22202 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:55 v #22203 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class 00:18:55 v #22204 > > end" 00:18:55 v #22205 > > $'' : $'leptos_html_Tr' 00:18:55 v #22206 > > ) 00:18:56 v #22207 > > 00:18:56 v #22208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:56 v #22209 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:56 v #22210 > > │ ### th │ 00:18:56 v #22211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 v #22212 > > 00:18:56 v #22213 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:56 v #22214 > > nominal th = 00:18:56 v #22215 > > `( 00:18:56 v #22216 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:56 v #22217 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class 00:18:56 v #22218 > > end" 00:18:56 v #22219 > > $'' : $'leptos_html_Th' 00:18:56 v #22220 > > ) 00:18:56 v #22221 > > 00:18:56 v #22222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:56 v #22223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:56 v #22224 > > │ ### td │ 00:18:56 v #22225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 v #22226 > > 00:18:56 v #22227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:56 v #22228 > > nominal td = 00:18:56 v #22229 > > `( 00:18:56 v #22230 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:56 v #22231 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class 00:18:56 v #22232 > > end" 00:18:56 v #22233 > > $'' : $'leptos_html_Td' 00:18:56 v #22234 > > ) 00:18:57 v #22235 > > 00:18:57 v #22236 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:57 v #22237 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:57 v #22238 > > │ ### svg │ 00:18:57 v #22239 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:57 v #22240 > > 00:18:57 v #22241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:57 v #22242 > > nominal svg = 00:18:57 v #22243 > > `( 00:18:57 v #22244 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:57 v #22245 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class 00:18:57 v #22246 > > end" 00:18:57 v #22247 > > $'' : $'leptos_svg_Svg' 00:18:57 v #22248 > > ) 00:18:57 v #22249 > > 00:18:57 v #22250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:57 v #22251 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:57 v #22252 > > │ ### path │ 00:18:57 v #22253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:57 v #22254 > > 00:18:57 v #22255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:57 v #22256 > > nominal path = 00:18:57 v #22257 > > `( 00:18:57 v #22258 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:57 v #22259 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class 00:18:57 v #22260 > > end" 00:18:57 v #22261 > > $'' : $'leptos_svg_Path' 00:18:57 v #22262 > > ) 00:18:58 v #22263 > > 00:18:58 v #22264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:58 v #22265 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:58 v #22266 > > │ ### circle │ 00:18:58 v #22267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:58 v #22268 > > 00:18:58 v #22269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:58 v #22270 > > nominal circle = 00:18:58 v #22271 > > `( 00:18:58 v #22272 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:58 v #22273 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle = 00:18:58 v #22274 > > class end" 00:18:58 v #22275 > > $'' : $'leptos_svg_Circle' 00:18:58 v #22276 > > ) 00:18:58 v #22277 > > 00:18:58 v #22278 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:58 v #22279 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:58 v #22280 > > │ ### rect │ 00:18:58 v #22281 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:58 v #22282 > > 00:18:58 v #22283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:58 v #22284 > > nominal rect = 00:18:58 v #22285 > > `( 00:18:58 v #22286 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:58 v #22287 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class 00:18:58 v #22288 > > end" 00:18:58 v #22289 > > $'' : $'leptos_svg_Rect' 00:18:58 v #22290 > > ) 00:18:58 v #22291 > > 00:18:58 v #22292 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:58 v #22293 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:58 v #22294 > > │ ### animate │ 00:18:58 v #22295 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:58 v #22296 > > 00:18:58 v #22297 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:58 v #22298 > > nominal animate = 00:18:58 v #22299 > > `( 00:18:58 v #22300 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:58 v #22301 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate = 00:18:58 v #22302 > > class end" 00:18:58 v #22303 > > $'' : $'leptos_svg_Animate' 00:18:58 v #22304 > > ) 00:18:59 v #22305 > > 00:18:59 v #22306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:59 v #22307 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:59 v #22308 > > │ ### action │ 00:18:59 v #22309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:59 v #22310 > > 00:18:59 v #22311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:59 v #22312 > > nominal action t u = 00:18:59 v #22313 > > `( 00:18:59 v #22314 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:59 v #22315 > > Fable.Core.Emit(\"leptos::prelude::Action<$0, $1>\")>]]\n#endif\ntype 00:18:59 v #22316 > > leptos_prelude_Action<'T, 'U> = class end" 00:18:59 v #22317 > > $'' : $'leptos_prelude_Action<`t, `u>' 00:18:59 v #22318 > > ) 00:18:59 v #22319 > > 00:18:59 v #22320 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:59 v #22321 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:59 v #22322 > > │ ### arc_action │ 00:18:59 v #22323 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:59 v #22324 > > 00:18:59 v #22325 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:59 v #22326 > > nominal arc_action t u = 00:18:59 v #22327 > > `( 00:18:59 v #22328 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:59 v #22329 > > Fable.Core.Emit(\"leptos::prelude::ArcAction<$0, $1>\")>]]\n#endif\ntype 00:18:59 v #22330 > > leptos_prelude_ArcAction<'T, 'U> = class end" 00:18:59 v #22331 > > $'' : $'leptos_prelude_ArcAction<`t, `u>' 00:18:59 v #22332 > > ) 00:19:00 v #22333 > > 00:19:00 v #22334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:00 v #22335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:00 v #22336 > > │ ### for │ 00:19:00 v #22337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:00 v #22338 > > 00:19:00 v #22339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:00 v #22340 > > nominal for = 00:19:00 v #22341 > > `( 00:19:00 v #22342 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:00 v #22343 > > Fable.Core.Emit(\"leptos::prelude::For\")>]]\n#endif\ntype leptos_prelude_For = 00:19:00 v #22344 > > class end" 00:19:00 v #22345 > > $'' : $'leptos_prelude_For' 00:19:00 v #22346 > > ) 00:19:00 v #22347 > > 00:19:00 v #22348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:00 v #22349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:00 v #22350 > > │ ### show │ 00:19:00 v #22351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:00 v #22352 > > 00:19:00 v #22353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:00 v #22354 > > nominal show = 00:19:00 v #22355 > > `( 00:19:00 v #22356 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:00 v #22357 > > Fable.Core.Emit(\"leptos::prelude::Show\")>]]\n#endif\ntype leptos_prelude_Show 00:19:00 v #22358 > > = class end" 00:19:00 v #22359 > > $'' : $'leptos_prelude_Show' 00:19:00 v #22360 > > ) 00:19:01 v #22361 > > 00:19:01 v #22362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:01 v #22363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:01 v #22364 > > │ ### fragment │ 00:19:01 v #22365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:01 v #22366 > > 00:19:01 v #22367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:01 v #22368 > > nominal fragment = 00:19:01 v #22369 > > `( 00:19:01 v #22370 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:01 v #22371 > > Fable.Core.Emit(\"leptos::prelude::Fragment\")>]]\n#endif\ntype 00:19:01 v #22372 > > leptos_dom_Fragment = class end" 00:19:01 v #22373 > > $'' : $'leptos_dom_Fragment' 00:19:01 v #22374 > > ) 00:19:01 v #22375 > > 00:19:01 v #22376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:01 v #22377 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:01 v #22378 > > │ ### interval_handle │ 00:19:01 v #22379 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:01 v #22380 > > 00:19:01 v #22381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:01 v #22382 > > nominal interval_handle = 00:19:01 v #22383 > > `( 00:19:01 v #22384 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:01 v #22385 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp 00:19:01 v #22386 > > e leptos_dom_IntervalHandle = class end" 00:19:01 v #22387 > > $'' : $'leptos_dom_IntervalHandle' 00:19:01 v #22388 > > ) 00:19:01 v #22389 > > 00:19:01 v #22390 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:01 v #22391 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:01 v #22392 > > │ ### text │ 00:19:01 v #22393 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:01 v #22394 > > 00:19:01 v #22395 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:01 v #22396 > > nominal text = 00:19:01 v #22397 > > `( 00:19:01 v #22398 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:01 v #22399 > > Fable.Core.Emit(\"leptos::tachys::renderer::dom::Text\")>]]\n#endif\ntype 00:19:01 v #22400 > > leptos_dom_Text = class end" 00:19:01 v #22401 > > $'' : $'leptos_dom_Text' 00:19:01 v #22402 > > ) 00:19:02 v #22403 > > 00:19:02 v #22404 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:02 v #22405 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:02 v #22406 > > │ ### transparent │ 00:19:02 v #22407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:02 v #22408 > > 00:19:02 v #22409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:02 v #22410 > > nominal transparent = 00:19:02 v #22411 > > `( 00:19:02 v #22412 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:02 v #22413 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype 00:19:02 v #22414 > > leptos_dom_Transparent = class end" 00:19:02 v #22415 > > $'' : $'leptos_dom_Transparent' 00:19:02 v #22416 > > ) 00:19:02 v #22417 > > 00:19:02 v #22418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:02 v #22419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:02 v #22420 > > │ ### route │ 00:19:02 v #22421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:02 v #22422 > > 00:19:02 v #22423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:02 v #22424 > > nominal route = 00:19:02 v #22425 > > `( 00:19:02 v #22426 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:02 v #22427 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route = 00:19:02 v #22428 > > class end" 00:19:02 v #22429 > > $'' : $'leptos_router_Route' 00:19:02 v #22430 > > ) 00:19:03 v #22431 > > 00:19:03 v #22432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:03 v #22433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:03 v #22434 > > │ ### nested_route │ 00:19:03 v #22435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:03 v #22436 > > 00:19:03 v #22437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:03 v #22438 > > nominal nested_route = 00:19:03 v #22439 > > `( 00:19:03 v #22440 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:03 v #22441 > > Fable.Core.Emit(\"leptos_router::NestedRoute<_, _, _, _>\")>]]\n#endif\ntype 00:19:03 v #22442 > > leptos_router_NestedRoute = class end" 00:19:03 v #22443 > > $'' : $'leptos_router_NestedRoute' 00:19:03 v #22444 > > ) 00:19:03 v #22445 > > 00:19:03 v #22446 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:03 v #22447 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:03 v #22448 > > │ ### route_definition │ 00:19:03 v #22449 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:03 v #22450 > > 00:19:03 v #22451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:03 v #22452 > > nominal route_definition = 00:19:03 v #22453 > > `( 00:19:03 v #22454 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:03 v #22455 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype 00:19:03 v #22456 > > leptos_router_RouteDefinition = class end" 00:19:03 v #22457 > > $'' : $'leptos_router_RouteDefinition' 00:19:03 v #22458 > > ) 00:19:03 v #22459 > > 00:19:03 v #22460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:03 v #22461 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:03 v #22462 > > │ ### router │ 00:19:03 v #22463 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:03 v #22464 > > 00:19:03 v #22465 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:03 v #22466 > > nominal router = 00:19:03 v #22467 > > `( 00:19:03 v #22468 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:03 v #22469 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router 00:19:03 v #22470 > > = class end" 00:19:03 v #22471 > > $'' : $'leptos_router_Router' 00:19:03 v #22472 > > ) 00:19:04 v #22473 > > 00:19:04 v #22474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:04 v #22475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:04 v #22476 > > │ ### routes │ 00:19:04 v #22477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:04 v #22478 > > 00:19:04 v #22479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:04 v #22480 > > nominal routes = 00:19:04 v #22481 > > `( 00:19:04 v #22482 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:04 v #22483 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes 00:19:04 v #22484 > > = class end" 00:19:04 v #22485 > > $'' : $'leptos_router_Routes' 00:19:04 v #22486 > > ) 00:19:04 v #22487 > > 00:19:04 v #22488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:04 v #22489 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:04 v #22490 > > │ ### html_element │ 00:19:04 v #22491 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:04 v #22492 > > 00:19:04 v #22493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:04 v #22494 > > nominal html_element t = 00:19:04 v #22495 > > `( 00:19:04 v #22496 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:04 v #22497 > > Fable.Core.Emit(\"leptos::html::HtmlElement<$0, _, _>\")>]]\n#endif\ntype 00:19:04 v #22498 > > leptos_dom_html_HtmlElement<'T> = class end" 00:19:04 v #22499 > > $'' : $'leptos_dom_html_HtmlElement<`t>' 00:19:04 v #22500 > > ) 00:19:05 v #22501 > > 00:19:05 v #22502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:05 v #22503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:05 v #22504 > > │ ### into_view │ 00:19:05 v #22505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:05 v #22506 > > 00:19:05 v #22507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:05 v #22508 > > nominal into_view = 00:19:05 v #22509 > > `( 00:19:05 v #22510 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:05 v #22511 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class 00:19:05 v #22512 > > end" 00:19:05 v #22513 > > $'' : $'leptos_IntoView' 00:19:05 v #22514 > > ) 00:19:05 v #22515 > > 00:19:05 v #22516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:05 v #22517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:05 v #22518 > > │ ### location │ 00:19:05 v #22519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:05 v #22520 > > 00:19:05 v #22521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:05 v #22522 > > nominal location = 00:19:05 v #22523 > > `( 00:19:05 v #22524 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:05 v #22525 > > Fable.Core.Emit(\"leptos_router::location::Location\")>]]\n#endif\ntype 00:19:05 v #22526 > > leptos_router_location_Location = class end" 00:19:05 v #22527 > > $'' : $'leptos_router_location_Location' 00:19:05 v #22528 > > ) 00:19:05 v #22529 > > 00:19:05 v #22530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:05 v #22531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:05 v #22532 > > │ ### navigate_options │ 00:19:05 v #22533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:05 v #22534 > > 00:19:05 v #22535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:05 v #22536 > > nominal navigate_options = 00:19:05 v #22537 > > `( 00:19:05 v #22538 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:05 v #22539 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype 00:19:05 v #22540 > > leptos_router_NavigateOptions = class end" 00:19:05 v #22541 > > $'' : $'leptos_router_NavigateOptions' 00:19:05 v #22542 > > ) 00:19:06 v #22543 > > 00:19:06 v #22544 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:06 v #22545 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:06 v #22546 > > │ ### url │ 00:19:06 v #22547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:06 v #22548 > > 00:19:06 v #22549 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:06 v #22550 > > nominal url = 00:19:06 v #22551 > > `( 00:19:06 v #22552 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:06 v #22553 > > Fable.Core.Emit(\"leptos_router::location::Url\")>]]\n#endif\ntype 00:19:06 v #22554 > > leptos_router_Url = class end" 00:19:06 v #22555 > > $'' : $'leptos_router_Url' 00:19:06 v #22556 > > ) 00:19:06 v #22557 > > 00:19:06 v #22558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:06 v #22559 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:06 v #22560 > > │ ### memo │ 00:19:06 v #22561 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:06 v #22562 > > 00:19:06 v #22563 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:06 v #22564 > > nominal memo t = 00:19:06 v #22565 > > `( 00:19:06 v #22566 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:06 v #22567 > > Fable.Core.Emit(\"leptos::prelude::Memo<$0>\")>]]\n#endif\ntype 00:19:06 v #22568 > > leptos_prelude_Memo<'T> = class end" 00:19:06 v #22569 > > $'' : $'leptos_prelude_Memo<`t>' 00:19:06 v #22570 > > ) 00:19:07 v #22571 > > 00:19:07 v #22572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:07 v #22573 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:07 v #22574 > > │ ### arc_memo │ 00:19:07 v #22575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:07 v #22576 > > 00:19:07 v #22577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:07 v #22578 > > nominal arc_memo t = 00:19:07 v #22579 > > `( 00:19:07 v #22580 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:07 v #22581 > > Fable.Core.Emit(\"leptos::prelude::ArcMemo<$0>\")>]]\n#endif\ntype 00:19:07 v #22582 > > leptos_prelude_ArcMemo<'T> = class end" 00:19:07 v #22583 > > $'' : $'leptos_prelude_ArcMemo<`t>' 00:19:07 v #22584 > > ) 00:19:07 v #22585 > > 00:19:07 v #22586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:07 v #22587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:07 v #22588 > > │ ### rw_signal │ 00:19:07 v #22589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:07 v #22590 > > 00:19:07 v #22591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:07 v #22592 > > nominal rw_signal t = 00:19:07 v #22593 > > `( 00:19:07 v #22594 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:07 v #22595 > > Fable.Core.Emit(\"leptos::prelude::RwSignal<$0>\")>]]\n#endif\ntype 00:19:07 v #22596 > > leptos_prelude_RwSignal<'T> = class end" 00:19:07 v #22597 > > $'' : $'leptos_prelude_RwSignal<`t>' 00:19:07 v #22598 > > ) 00:19:08 v #22599 > > 00:19:08 v #22600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:08 v #22601 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:08 v #22602 > > │ ### arc_rw_signal │ 00:19:08 v #22603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:08 v #22604 > > 00:19:08 v #22605 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:08 v #22606 > > nominal arc_rw_signal t = 00:19:08 v #22607 > > `( 00:19:08 v #22608 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:08 v #22609 > > Fable.Core.Emit(\"leptos::prelude::ArcRwSignal<$0>\")>]]\n#endif\ntype 00:19:08 v #22610 > > leptos_prelude_ArcRwSignal<'T> = class end" 00:19:08 v #22611 > > $'' : $'leptos_prelude_ArcRwSignal<`t>' 00:19:08 v #22612 > > ) 00:19:08 v #22613 > > 00:19:08 v #22614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:08 v #22615 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:08 v #22616 > > │ ### signal │ 00:19:08 v #22617 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:08 v #22618 > > 00:19:08 v #22619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:08 v #22620 > > nominal signal t = 00:19:08 v #22621 > > `( 00:19:08 v #22622 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:08 v #22623 > > Fable.Core.Emit(\"leptos::prelude::Signal<$0>\")>]]\n#endif\ntype 00:19:08 v #22624 > > leptos_prelude_Signal<'T> = class end" 00:19:08 v #22625 > > $'' : $'leptos_prelude_Signal<`t>' 00:19:08 v #22626 > > ) 00:19:08 v #22627 > > 00:19:08 v #22628 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:08 v #22629 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:08 v #22630 > > │ ### arc_signal │ 00:19:08 v #22631 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:08 v #22632 > > 00:19:08 v #22633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:08 v #22634 > > nominal arc_signal t = 00:19:08 v #22635 > > `( 00:19:08 v #22636 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:08 v #22637 > > Fable.Core.Emit(\"leptos::prelude::ArcSignal<$0>\")>]]\n#endif\ntype 00:19:08 v #22638 > > leptos_prelude_ArcSignal<'T> = class end" 00:19:08 v #22639 > > $'' : $'leptos_prelude_ArcSignal<`t>' 00:19:08 v #22640 > > ) 00:19:09 v #22641 > > 00:19:09 v #22642 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:09 v #22643 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:09 v #22644 > > │ ### read_signal │ 00:19:09 v #22645 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:09 v #22646 > > 00:19:09 v #22647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:09 v #22648 > > nominal read_signal t = 00:19:09 v #22649 > > `( 00:19:09 v #22650 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:09 v #22651 > > Fable.Core.Emit(\"leptos::prelude::ReadSignal<$0>\")>]]\n#endif\ntype 00:19:09 v #22652 > > leptos_prelude_ReadSignal<'T> = class end" 00:19:09 v #22653 > > $'' : $'leptos_prelude_ReadSignal<`t>' 00:19:09 v #22654 > > ) 00:19:09 v #22655 > > 00:19:09 v #22656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:09 v #22657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:09 v #22658 > > │ ### arc_read_signal │ 00:19:09 v #22659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:09 v #22660 > > 00:19:09 v #22661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:09 v #22662 > > nominal arc_read_signal t = 00:19:09 v #22663 > > `( 00:19:09 v #22664 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:09 v #22665 > > Fable.Core.Emit(\"leptos::prelude::ArcReadSignal<$0>\")>]]\n#endif\ntype 00:19:09 v #22666 > > leptos_prelude_ArcReadSignal<'T> = class end" 00:19:09 v #22667 > > $'' : $'leptos_prelude_ArcReadSignal<`t>' 00:19:09 v #22668 > > ) 00:19:10 v #22669 > > 00:19:10 v #22670 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:10 v #22671 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:10 v #22672 > > │ ### write_signal │ 00:19:10 v #22673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:10 v #22674 > > 00:19:10 v #22675 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:10 v #22676 > > nominal write_signal t = 00:19:10 v #22677 > > `( 00:19:10 v #22678 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:10 v #22679 > > Fable.Core.Emit(\"leptos::prelude::WriteSignal<$0>\")>]]\n#endif\ntype 00:19:10 v #22680 > > leptos_prelude_WriteSignal<'T> = class end" 00:19:10 v #22681 > > $'' : $'leptos_prelude_WriteSignal<`t>' 00:19:10 v #22682 > > ) 00:19:10 v #22683 > > 00:19:10 v #22684 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:10 v #22685 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:10 v #22686 > > │ ### arc_write_signal │ 00:19:10 v #22687 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:10 v #22688 > > 00:19:10 v #22689 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:10 v #22690 > > nominal arc_write_signal t = 00:19:10 v #22691 > > `( 00:19:10 v #22692 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:10 v #22693 > > Fable.Core.Emit(\"leptos::prelude::ArcWriteSignal<$0>\")>]]\n#endif\ntype 00:19:10 v #22694 > > leptos_prelude_ArcWriteSignal<'T> = class end" 00:19:10 v #22695 > > $'' : $'leptos_prelude_ArcWriteSignal<`t>' 00:19:10 v #22696 > > ) 00:19:11 v #22697 > > 00:19:11 v #22698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 v #22699 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 v #22700 > > │ ### resource │ 00:19:11 v #22701 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 v #22702 > > 00:19:11 v #22703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 v #22704 > > nominal resource t u = 00:19:11 v #22705 > > `( 00:19:11 v #22706 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:11 v #22707 > > Fable.Core.Emit(\"leptos::prelude::Resource<$0, $1>\")>]]\n#endif\ntype 00:19:11 v #22708 > > leptos_prelude_Resource<'T, 'U> = class end" 00:19:11 v #22709 > > $'' : $'leptos_prelude_Resource<`t, `u>' 00:19:11 v #22710 > > ) 00:19:11 v #22711 > > 00:19:11 v #22712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 v #22713 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 v #22714 > > │ ### arc_resource │ 00:19:11 v #22715 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 v #22716 > > 00:19:11 v #22717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 v #22718 > > nominal arc_resource t u = 00:19:11 v #22719 > > `( 00:19:11 v #22720 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:11 v #22721 > > Fable.Core.Emit(\"leptos::prelude::ArcResource<$0, $1>\")>]]\n#endif\ntype 00:19:11 v #22722 > > leptos_prelude_ArcResource<'T, 'U> = class end" 00:19:11 v #22723 > > $'' : $'leptos_prelude_ArcResource<`t, `u>' 00:19:11 v #22724 > > ) 00:19:11 v #22725 > > 00:19:11 v #22726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 v #22727 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 v #22728 > > │ ### local_resource │ 00:19:11 v #22729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 v #22730 > > 00:19:11 v #22731 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 v #22732 > > nominal local_resource t u = 00:19:11 v #22733 > > `( 00:19:11 v #22734 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:11 v #22735 > > Fable.Core.Emit(\"leptos::prelude::LocalResource<$0, $1>\")>]]\n#endif\ntype 00:19:11 v #22736 > > leptos_prelude_LocalResource<'T, 'U> = class end" 00:19:11 v #22737 > > $'' : $'leptos_prelude_LocalResource<`t, `u>' 00:19:11 v #22738 > > ) 00:19:12 v #22739 > > 00:19:12 v #22740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:12 v #22741 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:12 v #22742 > > │ ### arc_local_resource │ 00:19:12 v #22743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 v #22744 > > 00:19:12 v #22745 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 v #22746 > > nominal arc_local_resource t = 00:19:12 v #22747 > > `( 00:19:12 v #22748 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:12 v #22749 > > Fable.Core.Emit(\"leptos::prelude::ArcLocalResource<$0>\")>]]\n#endif\ntype 00:19:12 v #22750 > > leptos_prelude_ArcLocalResource<'T> = class end" 00:19:12 v #22751 > > $'' : $'leptos_prelude_ArcLocalResource<`t>' 00:19:12 v #22752 > > ) 00:19:12 v #22753 > > 00:19:12 v #22754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:12 v #22755 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:12 v #22756 > > │ ### any_view │ 00:19:12 v #22757 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 v #22758 > > 00:19:12 v #22759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 v #22760 > > nominal any_view = 00:19:12 v #22761 > > `( 00:19:12 v #22762 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:12 v #22763 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype 00:19:12 v #22764 > > leptos_prelude_AnyView = class end" 00:19:12 v #22765 > > $'' : $'leptos_prelude_AnyView' 00:19:12 v #22766 > > ) 00:19:13 v #22767 > > 00:19:13 v #22768 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 v #22769 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 v #22770 > > │ ### view' │ 00:19:13 v #22771 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 v #22772 > > 00:19:13 v #22773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 v #22774 > > nominal view' t = 00:19:13 v #22775 > > `( 00:19:13 v #22776 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:13 v #22777 > > Fable.Core.Emit(\"leptos::prelude::View<$0>\")>]]\n#endif\ntype 00:19:13 v #22778 > > leptos_prelude_View<'T> = class end" 00:19:13 v #22779 > > $'' : $'leptos_prelude_View<`t>' 00:19:13 v #22780 > > ) 00:19:13 v #22781 > > 00:19:13 v #22782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 v #22783 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 v #22784 > > │ ### view │ 00:19:13 v #22785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 v #22786 > > 00:19:13 v #22787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 v #22788 > > nominal view = 00:19:13 v #22789 > > `( 00:19:13 v #22790 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:13 v #22791 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype 00:19:13 v #22792 > > leptos_prelude_AnyView_ = class end" 00:19:13 v #22793 > > $'' : $'leptos_prelude_AnyView_' 00:19:13 v #22794 > > ) 00:19:14 v #22795 > > 00:19:14 v #22796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:14 v #22797 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:14 v #22798 > > │ ### signal_get │ 00:19:14 v #22799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 v #22800 > > 00:19:14 v #22801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 v #22802 > > prototype signal_get signal t : signal t -> t 00:19:14 v #22803 > > 00:19:14 v #22804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:14 v #22805 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:14 v #22806 > > │ ### signal_get_untracked │ 00:19:14 v #22807 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 v #22808 > > 00:19:14 v #22809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 v #22810 > > prototype signal_get_untracked signal t : signal t -> t 00:19:14 v #22811 > > 00:19:14 v #22812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:14 v #22813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:14 v #22814 > > │ ### signal_update │ 00:19:14 v #22815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 v #22816 > > 00:19:14 v #22817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 v #22818 > > prototype signal_update signal t : (t -> t) -> signal t -> () 00:19:15 v #22819 > > 00:19:15 v #22820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:15 v #22821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:15 v #22822 > > │ ### signal_set │ 00:19:15 v #22823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 v #22824 > > 00:19:15 v #22825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 v #22826 > > prototype signal_set signal t : t -> signal t -> () 00:19:15 v #22827 > > 00:19:15 v #22828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:15 v #22829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:15 v #22830 > > │ ### log_string │ 00:19:15 v #22831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 v #22832 > > 00:19:15 v #22833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 v #22834 > > inl log_string (text : string) = 00:19:15 v #22835 > > (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |> 00:19:15 v #22836 > > ignore 00:19:16 v #22837 > > 00:19:16 v #22838 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:16 v #22839 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:16 v #22840 > > │ ### log │ 00:19:16 v #22841 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 v #22842 > > 00:19:16 v #22843 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 v #22844 > > inl log (text : string) = 00:19:16 v #22845 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |> 00:19:16 v #22846 > > ignore 00:19:16 v #22847 > > 00:19:16 v #22848 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:16 v #22849 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:16 v #22850 > > │ ### log_debug │ 00:19:16 v #22851 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 v #22852 > > 00:19:16 v #22853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 v #22854 > > inl log_debug (text : string) = 00:19:16 v #22855 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |> 00:19:16 v #22856 > > ignore 00:19:17 v #22857 > > 00:19:17 v #22858 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 v #22859 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 v #22860 > > │ ### log_pretty │ 00:19:17 v #22861 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 v #22862 > > 00:19:17 v #22863 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 v #22864 > > inl log_pretty (text : string) = 00:19:17 v #22865 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |> 00:19:17 v #22866 > > ignore 00:19:17 v #22867 > > 00:19:17 v #22868 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 v #22869 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 v #22870 > > │ ### log_format │ 00:19:17 v #22871 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 v #22872 > > 00:19:17 v #22873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 v #22874 > > inl log_format fn obj = 00:19:17 v #22875 > > inl obj_log = obj |> sm'.format_debug 00:19:17 v #22876 > > inl text = fn obj_log |> sm'.ellipsis_end 200 00:19:17 v #22877 > > log text 00:19:17 v #22878 > > obj 00:19:17 v #22879 > > 00:19:17 v #22880 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 v #22881 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 v #22882 > > │ ### mount_to_body │ 00:19:17 v #22883 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 v #22884 > > 00:19:17 v #22885 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 v #22886 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () = 00:19:17 v #22887 > > (!\\(view_fn, $'"true; leptos::prelude::mount_to_body(|| $0()); //"') : 00:19:17 v #22888 > > bool) |> ignore 00:19:18 v #22889 > > 00:19:18 v #22890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 v #22891 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 v #22892 > > │ ### view_vec_to_fragment │ 00:19:18 v #22893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 v #22894 > > 00:19:18 v #22895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 v #22896 > > inl view_vec_to_fragment (view : am'.vec view) : fragment = 00:19:18 v #22897 > > !\\(view, $'"leptos::prelude::Fragment::new($0)"') 00:19:18 v #22898 > > 00:19:18 v #22899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 v #22900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 v #22901 > > │ ### view_list_to_fragment │ 00:19:18 v #22902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 v #22903 > > 00:19:18 v #22904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 v #22905 > > inl view_list_to_fragment (view : list view) : fragment = 00:19:18 v #22906 > > view 00:19:18 v #22907 > > |> am'.new_vec 00:19:18 v #22908 > > |> view_vec_to_fragment 00:19:19 v #22909 > > 00:19:19 v #22910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:19 v #22911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:19 v #22912 > > │ ### element_to_view │ 00:19:19 v #22913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:19 v #22914 > > 00:19:19 v #22915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:19 v #22916 > > inl element_to_view (view : view' (html_element _)) : view = 00:19:19 v #22917 > > !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"') 00:19:19 v #22918 > > 00:19:19 v #22919 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:19 v #22920 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:19 v #22921 > > │ ### view_to_fragment │ 00:19:19 v #22922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:19 v #22923 > > 00:19:19 v #22924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:19 v #22925 > > inl view_to_fragment (view : view) : fragment = 00:19:19 v #22926 > > [[ view ]] 00:19:19 v #22927 > > |> view_list_to_fragment 00:19:19 v #22928 > > 00:19:19 v #22929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:19 v #22930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:19 v #22931 > > │ ### fragment_to_view │ 00:19:19 v #22932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:19 v #22933 > > 00:19:19 v #22934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:19 v #22935 > > inl fragment_to_view (fragment : fragment) : view = 00:19:19 v #22936 > > !\\(fragment, $'"leptos::prelude::AnyView::from($0)"') 00:19:20 v #22937 > > 00:19:20 v #22938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:20 v #22939 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:20 v #22940 > > │ ### element_to_fragment │ 00:19:20 v #22941 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:20 v #22942 > > 00:19:20 v #22943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:20 v #22944 > > inl element_to_fragment (view : view' (html_element _)) : fragment = 00:19:20 v #22945 > > view 00:19:20 v #22946 > > |> element_to_view 00:19:20 v #22947 > > |> view_to_fragment 00:19:20 v #22948 > > 00:19:20 v #22949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:20 v #22950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:20 v #22951 > > │ ### (~:>) fragment │ 00:19:20 v #22952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:20 v #22953 > > 00:19:20 v #22954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:20 v #22955 > > instance (~:>) fragment = fun x => 00:19:20 v #22956 > > real 00:19:20 v #22957 > > typecase t with 00:19:20 v #22958 > > | array_base (view' (html_element ~el)) => 00:19:20 v #22959 > > inl x = a x 00:19:20 v #22960 > > inl x = am.toList `a `int `(view' (html_element el)) x 00:19:20 v #22961 > > inl x = listm.map `(view' (html_element el)) `view (element_to_view 00:19:20 v #22962 > > `el) x 00:19:20 v #22963 > > view_list_to_fragment x 00:19:20 v #22964 > > | list (view' (html_element ~el)) => 00:19:20 v #22965 > > inl x = listm.map `(view' (html_element el)) `view (element_to_view 00:19:20 v #22966 > > `el) x 00:19:20 v #22967 > > view_list_to_fragment x 00:19:20 v #22968 > > | list view => 00:19:20 v #22969 > > view_list_to_fragment x 00:19:20 v #22970 > > | _ => x 00:19:21 v #22971 > > 00:19:21 v #22972 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:21 v #22973 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:21 v #22974 > > │ ### (~:>) view │ 00:19:21 v #22975 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:21 v #22976 > > 00:19:21 v #22977 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:21 v #22978 > > instance (~:>) view = fun x => 00:19:21 v #22979 > > real 00:19:21 v #22980 > > typecase t with 00:19:21 v #22981 > > | view' (html_element _) => element_to_view x 00:19:21 v #22982 > > | _ => x 00:19:21 v #22983 > > 00:19:21 v #22984 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:21 v #22985 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:21 v #22986 > > │ ### view_trait_to_element │ 00:19:21 v #22987 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:21 v #22988 > > 00:19:21 v #22989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:21 v #22990 > > inl view_trait_to_element (view : rust.impl into_view) : view' (html_element _) 00:19:21 v #22991 > > = 00:19:21 v #22992 > > $'!view |> unbox' 00:19:22 v #22993 > > 00:19:22 v #22994 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 v #22995 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 v #22996 > > │ ### view_trait_to_route_definition │ 00:19:22 v #22997 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:22 v #22998 > > 00:19:22 v #22999 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:22 v #23000 > > inl view_trait_to_route_definition (view : rust.impl into_view) : 00:19:22 v #23001 > > route_definition = 00:19:22 v #23002 > > $'!view |> unbox' 00:19:22 v #23003 > > 00:19:22 v #23004 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 v #23005 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 v #23006 > > │ ### to_element_view │ 00:19:22 v #23007 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:22 v #23008 > > 00:19:22 v #23009 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:22 v #23010 > > inl to_element_view (view : view' (html_element _)) : rust.impl into_view = 00:19:22 v #23011 > > $'!view |> unbox' 00:19:22 v #23012 > > 00:19:22 v #23013 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 v #23014 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 v #23015 > > │ ### to_view_trait │ 00:19:22 v #23016 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:22 v #23017 > > 00:19:22 v #23018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:22 v #23019 > > inl to_view_trait (view : view) : rust.impl into_view = 00:19:22 v #23020 > > $'!view |> unbox' 00:19:23 v #23021 > > 00:19:23 v #23022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:23 v #23023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:23 v #23024 > > │ ### to_fragment_unbox │ 00:19:23 v #23025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:23 v #23026 > > 00:19:23 v #23027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:23 v #23028 > > inl to_fragment_unbox view : fragment = 00:19:23 v #23029 > > $'!view |> unbox' 00:19:23 v #23030 > > 00:19:23 v #23031 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:23 v #23032 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:23 v #23033 > > │ ### from_fragment_unbox │ 00:19:23 v #23034 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:23 v #23035 > > 00:19:23 v #23036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:23 v #23037 > > inl from_fragment_unbox (fragment : fragment) = 00:19:23 v #23038 > > $'!fragment |> unbox' 00:19:24 v #23039 > > 00:19:24 v #23040 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:24 v #23041 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:24 v #23042 > > │ ### element_to_view_trait │ 00:19:24 v #23043 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:24 v #23044 > > 00:19:24 v #23045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:24 v #23046 > > inl element_to_view_trait (macro : view' (html_element _)) : rust.impl into_view 00:19:24 v #23047 > > = 00:19:24 v #23048 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:24 v #23049 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:24 v #23050 > > !\($'"leptos::prelude::view\! { {!macro} }"') 00:19:24 v #23051 > > 00:19:24 v #23052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:24 v #23053 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:24 v #23054 > > │ ### macro_to_view_trait │ 00:19:24 v #23055 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:24 v #23056 > > 00:19:24 v #23057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:24 v #23058 > > inl macro_to_view_trait (macro : string) : rust.impl into_view = 00:19:24 v #23059 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:24 v #23060 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:24 v #23061 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:24 v #23062 > > leptos::prelude::ClassAttribute;\n//\"\n#endif" 00:19:24 v #23063 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:19:25 v #23064 > > 00:19:25 v #23065 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 v #23066 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 v #23067 > > │ ### macro_to_fragment │ 00:19:25 v #23068 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 v #23069 > > 00:19:25 v #23070 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 v #23071 > > inl macro_to_fragment (macro : string) : fragment = 00:19:25 v #23072 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:25 v #23073 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:25 v #23074 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:19:25 v #23075 > > 00:19:25 v #23076 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 v #23077 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 v #23078 > > │ ### new_transparent │ 00:19:25 v #23079 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 v #23080 > > 00:19:25 v #23081 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 v #23082 > > inl new_transparent x : transparent = 00:19:25 v #23083 > > !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"') 00:19:25 v #23084 > > 00:19:25 v #23085 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 v #23086 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 v #23087 > > │ ### closure_to_view │ 00:19:25 v #23088 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 v #23089 > > 00:19:25 v #23090 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 v #23091 > > inl closure_to_view (closure : rust.func0 view) : view = 00:19:25 v #23092 > > !\($'"leptos::prelude::IntoAny::into_any(move || !closure())"') 00:19:26 v #23093 > > 00:19:26 v #23094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:26 v #23095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:26 v #23096 > > │ ### vec_to_view │ 00:19:26 v #23097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:26 v #23098 > > 00:19:26 v #23099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:26 v #23100 > > inl vec_to_view (views : am'.vec view) : view = 00:19:26 v #23101 > > !\\(views, $'"leptos::prelude::IntoAny::into_any($0)"') 00:19:26 v #23102 > > 00:19:26 v #23103 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:26 v #23104 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:26 v #23105 > > │ ### view_list_to_view │ 00:19:26 v #23106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:26 v #23107 > > 00:19:26 v #23108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:26 v #23109 > > inl view_list_to_view (views : list view) : view = 00:19:26 v #23110 > > views 00:19:26 v #23111 > > |> am'.new_vec 00:19:26 v #23112 > > |> vec_to_view 00:19:27 v #23113 > > 00:19:27 v #23114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:27 v #23115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:27 v #23116 > > │ ### to_fragment │ 00:19:27 v #23117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:27 v #23118 > > 00:19:27 v #23119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:27 v #23120 > > inl to_fragment x : fragment = 00:19:27 v #23121 > > $'!x |> unbox' 00:19:27 v #23122 > > 00:19:27 v #23123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:27 v #23124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:27 v #23125 > > │ ### text_to_view │ 00:19:27 v #23126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:27 v #23127 > > 00:19:27 v #23128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:27 v #23129 > > inl text_to_view (text : string) : view = 00:19:27 v #23130 > > inl text = text |> sm'.to_std_string 00:19:27 v #23131 > > !\\(text, 00:19:27 v #23132 > > $'"leptos::prelude::IntoAny::into_any(leptos::prelude::IntoView::into_view($0))" 00:19:27 v #23133 > > ') 00:19:28 v #23134 > > 00:19:28 v #23135 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:28 v #23136 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:28 v #23137 > > │ ### text_to_fragment │ 00:19:28 v #23138 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:28 v #23139 > > 00:19:28 v #23140 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:28 v #23141 > > inl text_to_fragment (text : string) : fragment = 00:19:28 v #23142 > > text 00:19:28 v #23143 > > |> text_to_view 00:19:28 v #23144 > > |> view_to_fragment 00:19:28 v #23145 > > 00:19:28 v #23146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:28 v #23147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:28 v #23148 > > │ ### macro_to_view │ 00:19:28 v #23149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:28 v #23150 > > 00:19:28 v #23151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:28 v #23152 > > inl macro_to_view (macro : string) : view = 00:19:28 v #23153 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:28 v #23154 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:28 v #23155 > > !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " + 00:19:28 v #23156 > > !macro + " })"') 00:19:29 v #23157 > > 00:19:29 v #23158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:29 v #23159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:29 v #23160 > > │ ### macro_to_view' │ 00:19:29 v #23161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:29 v #23162 > > 00:19:29 v #23163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:29 v #23164 > > inl macro_to_view' (macro : string) : view' infer = 00:19:29 v #23165 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:29 v #23166 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:29 v #23167 > > !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + " 00:19:29 v #23168 > > })"') 00:19:29 v #23169 > > 00:19:29 v #23170 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:29 v #23171 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:29 v #23172 > > │ ### macro_to_view'' │ 00:19:29 v #23173 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:29 v #23174 > > 00:19:29 v #23175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:29 v #23176 > > inl macro_to_view'' (macro : string) : view' infer = 00:19:29 v #23177 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:29 v #23178 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:29 v #23179 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:19:29 v #23180 > > 00:19:29 v #23181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:29 v #23182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:29 v #23183 > > │ ### macro_to_view''' │ 00:19:29 v #23184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:29 v #23185 > > 00:19:29 v #23186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:29 v #23187 > > inl macro_to_view''' (macro : string) : view' _ = 00:19:29 v #23188 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:29 v #23189 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:19:29 v #23190 > > !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + " 00:19:29 v #23191 > > })"') 00:19:30 v #23192 > > 00:19:30 v #23193 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:30 v #23194 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:30 v #23195 > > │ ### into_any_view │ 00:19:30 v #23196 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:30 v #23197 > > 00:19:30 v #23198 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #23199 > > inl into_any_view (view : view' _) : view = 00:19:30 v #23200 > > !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"') 00:19:30 v #23201 > > 00:19:30 v #23202 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:30 v #23203 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:30 v #23204 > > │ ### into_any_view' │ 00:19:30 v #23205 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:30 v #23206 > > 00:19:30 v #23207 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #23208 > > inl into_any_view' (view : view' _) : view = 00:19:30 v #23209 > > !\\(view, $'"&leptos::prelude::IntoAny::into_any($0)"') 00:19:31 v #23210 > > 00:19:31 v #23211 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:31 v #23212 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:31 v #23213 > > │ ### transparent_to_view │ 00:19:31 v #23214 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:31 v #23215 > > 00:19:31 v #23216 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:31 v #23217 > > inl transparent_to_view (transparent : transparent) : view = 00:19:31 v #23218 > > !\\(transparent, $'"leptos::prelude::IntoAny::into_any($0)"') 00:19:31 v #23219 > > 00:19:31 v #23220 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:31 v #23221 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:31 v #23222 > > │ ### transparent_to_fragment │ 00:19:31 v #23223 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:31 v #23224 > > 00:19:31 v #23225 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:31 v #23226 > > inl transparent_to_fragment (transparent : transparent) : fragment = 00:19:31 v #23227 > > transparent 00:19:31 v #23228 > > |> transparent_to_view 00:19:31 v #23229 > > |> view_to_fragment 00:19:32 v #23230 > > 00:19:32 v #23231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 v #23232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 v #23233 > > │ ### macro_to_element │ 00:19:32 v #23234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 v #23235 > > 00:19:32 v #23236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 v #23237 > > inl macro_to_element (view : string) : view' (html_element _) = 00:19:32 v #23238 > > view |> macro_to_view_trait |> view_trait_to_element 00:19:32 v #23239 > > 00:19:32 v #23240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 v #23241 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 v #23242 > > │ ### transparents_fragment │ 00:19:32 v #23243 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 v #23244 > > 00:19:32 v #23245 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 v #23246 > > inl transparents_fragment (items : array_base transparent) : fragment = 00:19:32 v #23247 > > inl items = items |> am'.to_vec 00:19:32 v #23248 > > !\\((items, transparent_to_view), $'"$0.iter().map(|x| 00:19:32 v #23249 > > $1(x.clone())).collect::<Fragment>()"') 00:19:33 v #23250 > > 00:19:33 v #23251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:33 v #23252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:33 v #23253 > > │ ### new_text │ 00:19:33 v #23254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:33 v #23255 > > 00:19:33 v #23256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:33 v #23257 > > inl new_text (text : string) : text = 00:19:33 v #23258 > > !\\(text, $'"leptos::tachys::renderer::dom::Dom::create_text_node(&*$0)"') 00:19:33 v #23259 > > 00:19:33 v #23260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:33 v #23261 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:33 v #23262 > > │ ### text_view │ 00:19:33 v #23263 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:33 v #23264 > > 00:19:33 v #23265 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:33 v #23266 > > inl text_view (text : string) : view = 00:19:33 v #23267 > > text 00:19:33 v #23268 > > |> text_to_view 00:19:33 v #23269 > > 00:19:33 v #23270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:33 v #23271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:33 v #23272 > > │ ### text_fragment │ 00:19:33 v #23273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:33 v #23274 > > 00:19:33 v #23275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:33 v #23276 > > inl text_fragment (text : string) : fragment = 00:19:33 v #23277 > > text 00:19:33 v #23278 > > |> text_view 00:19:33 v #23279 > > |> view_to_fragment 00:19:34 v #23280 > > 00:19:34 v #23281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:34 v #23282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:34 v #23283 > > │ ### provide_meta_context │ 00:19:34 v #23284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:34 v #23285 > > 00:19:34 v #23286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:34 v #23287 > > inl provide_meta_context () = 00:19:34 v #23288 > > (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore 00:19:34 v #23289 > > 00:19:34 v #23290 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:34 v #23291 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:34 v #23292 > > │ ### provide_context │ 00:19:34 v #23293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:34 v #23294 > > 00:19:34 v #23295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:34 v #23296 > > inl provide_context forall t. (x : t) = 00:19:34 v #23297 > > (!\\(x, $'$"true; 00:19:34 v #23298 > > leptos::context::provide_context::<std::sync::Arc<`t>>($0)"') : bool) |> ignore 00:19:35 v #23299 > > 00:19:35 v #23300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:35 v #23301 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:35 v #23302 > > │ ### create_signal │ 00:19:35 v #23303 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:35 v #23304 > > 00:19:35 v #23305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:35 v #23306 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t = 00:19:35 v #23307 > > !\\(value, $'$"leptos::prelude::signal($0)"') 00:19:35 v #23308 > > 00:19:35 v #23309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:35 v #23310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:35 v #23311 > > │ ### new_rw_signal │ 00:19:35 v #23312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:35 v #23313 > > 00:19:35 v #23314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:35 v #23315 > > inl new_rw_signal forall t. (value : t) : rw_signal t = 00:19:35 v #23316 > > !\\(value, $'$"leptos::prelude::RwSignal::new($0)"') 00:19:36 v #23317 > > 00:19:36 v #23318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:36 v #23319 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:36 v #23320 > > │ ### new_arc_rw_signal │ 00:19:36 v #23321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:36 v #23322 > > 00:19:36 v #23323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:36 v #23324 > > inl new_arc_rw_signal forall t. (value : t) : arc_rw_signal t = 00:19:36 v #23325 > > !\\(value, $'$"leptos::prelude::ArcRwSignal::new($0)"') 00:19:36 v #23326 > > 00:19:36 v #23327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:36 v #23328 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:36 v #23329 > > │ ### read_only │ 00:19:36 v #23330 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:36 v #23331 > > 00:19:36 v #23332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:36 v #23333 > > inl read_only forall t. (value : rw_signal t) : read_signal t = 00:19:36 v #23334 > > !\\(value, $'$"leptos::prelude::RwSignal::read_only(&$0)"') 00:19:36 v #23335 > > 00:19:36 v #23336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:36 v #23337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:36 v #23338 > > │ ### write_only │ 00:19:36 v #23339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:36 v #23340 > > 00:19:36 v #23341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:36 v #23342 > > inl write_only forall t. (value : rw_signal t) : write_signal t = 00:19:36 v #23343 > > !\\(value, $'$"leptos::prelude::RwSignal::write_only(&$0)"') 00:19:37 v #23344 > > 00:19:37 v #23345 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:37 v #23346 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:37 v #23347 > > │ ### typecheck_signal │ 00:19:37 v #23348 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:37 v #23349 > > 00:19:37 v #23350 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:37 v #23351 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () = 00:19:37 v #23352 > > real 00:19:37 v #23353 > > typecase t with 00:19:37 v #23354 > > | signal => () 00:19:37 v #23355 > > | arc_signal => () 00:19:37 v #23356 > > | rw_signal => () 00:19:37 v #23357 > > | arc_rw_signal => () 00:19:37 v #23358 > > | read_signal => () 00:19:37 v #23359 > > | arc_read_signal => () 00:19:37 v #23360 > > | write_signal => () 00:19:37 v #23361 > > | arc_write_signal => () 00:19:37 v #23362 > > | memo => () 00:19:37 v #23363 > > | arc_memo => () 00:19:37 v #23364 > > | _ => error_type `(()) ("invalid signal", ``(t u)) 00:19:37 v #23365 > > 00:19:37 v #23366 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:37 v #23367 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:37 v #23368 > > │ ### memo_get' │ 00:19:37 v #23369 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:37 v #23370 > > 00:19:37 v #23371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:37 v #23372 > > inl memo_get' forall t. (memo : memo t) : t = 00:19:37 v #23373 > > !\\(memo, $'$"$0()"') 00:19:38 v #23374 > > 00:19:38 v #23375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #23376 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:38 v #23377 > > │ ### signal_get' │ 00:19:38 v #23378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 v #23379 > > 00:19:38 v #23380 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #23381 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u = 00:19:38 v #23382 > > signal |> typecheck_signal 00:19:38 v #23383 > > inl code = 00:19:38 v #23384 > > real 00:19:38 v #23385 > > typecase t with 00:19:38 v #23386 > > | signal => $'$"leptos::prelude::Signal::get(&$0)"' : string 00:19:38 v #23387 > > | arc_signal => $'$"leptos::prelude::ArcSignal::get(&$0)"' : string 00:19:38 v #23388 > > | rw_signal => $'$"leptos::prelude::RwSignal::get(&$0)"' : string 00:19:38 v #23389 > > | arc_rw_signal => $'$"leptos::prelude::ArcRwSignal::get(&$0)"' : 00:19:38 v #23390 > > string 00:19:38 v #23391 > > | read_signal => $'$"leptos::prelude::ReadSignal::get(&$0)"' : 00:19:38 v #23392 > > string 00:19:38 v #23393 > > | arc_read_signal => $'$"leptos::prelude::ArcReadSignal::get(&$0)"' 00:19:38 v #23394 > > : string 00:19:38 v #23395 > > | write_signal => $'$"leptos::prelude::WriteSignal::get(&$0)"' : 00:19:38 v #23396 > > string 00:19:38 v #23397 > > | arc_write_signal => 00:19:38 v #23398 > > $'$"leptos::prelude::ArcWriteSignal::get(&$0)"' : string 00:19:38 v #23399 > > | memo => $'$"leptos::prelude::Memo::get(&$0)"' : string 00:19:38 v #23400 > > | arc_memo => $'$"leptos::prelude::ArcMemo::get(&$0)"' : string 00:19:38 v #23401 > > !\\(signal, code) : u 00:19:38 v #23402 > > 00:19:38 v #23403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #23404 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:38 v #23405 > > │ ### signal_get signal │ 00:19:38 v #23406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 v #23407 > > 00:19:38 v #23408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #23409 > > instance signal_get signal = signal_get' 00:19:38 v #23410 > > instance signal_get arc_signal = signal_get' 00:19:39 v #23411 > > 00:19:39 v #23412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #23413 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:39 v #23414 > > │ ### signal_get rw_signal │ 00:19:39 v #23415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:39 v #23416 > > 00:19:39 v #23417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #23418 > > instance signal_get rw_signal = signal_get' 00:19:39 v #23419 > > instance signal_get arc_rw_signal = signal_get' 00:19:39 v #23420 > > 00:19:39 v #23421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #23422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:39 v #23423 > > │ ### signal_get read_signal │ 00:19:39 v #23424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:39 v #23425 > > 00:19:39 v #23426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #23427 > > instance signal_get read_signal = signal_get' 00:19:39 v #23428 > > instance signal_get arc_read_signal = signal_get' 00:19:40 v #23429 > > 00:19:40 v #23430 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:40 v #23431 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:40 v #23432 > > │ ### signal_get memo │ 00:19:40 v #23433 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:40 v #23434 > > 00:19:40 v #23435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:40 v #23436 > > instance signal_get memo = signal_get' 00:19:40 v #23437 > > instance signal_get arc_memo = signal_get' 00:19:40 v #23438 > > 00:19:40 v #23439 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:40 v #23440 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:40 v #23441 > > │ ### signal_update' │ 00:19:40 v #23442 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:40 v #23443 > > 00:19:40 v #23444 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:40 v #23445 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () = 00:19:40 v #23446 > > signal |> typecheck_signal 00:19:40 v #23447 > > inl code = 00:19:40 v #23448 > > real 00:19:40 v #23449 > > typecase t with 00:19:40 v #23450 > > | signal => $'$"true; leptos::prelude::Signal::update(&$0, |x: &mut 00:19:40 v #23451 > > /*"' : string 00:19:40 v #23452 > > | arc_signal => $'$"true; leptos::prelude::ArcSignal::update(&$0, 00:19:40 v #23453 > > |x: &mut /*"' : string 00:19:40 v #23454 > > | rw_signal => $'$"true; leptos::prelude::RwSignal::update(&$0, |x: 00:19:40 v #23455 > > &mut /*"' : string 00:19:40 v #23456 > > | arc_rw_signal => $'$"true; 00:19:40 v #23457 > > leptos::prelude::ArcRwSignal::update(&$0, |x: &mut /*"' : string 00:19:40 v #23458 > > | read_signal => $'$"true; leptos::prelude::ReadSignal::update(&$0, 00:19:40 v #23459 > > |x: &mut /*"' : string 00:19:40 v #23460 > > | arc_read_signal => $'$"true; 00:19:40 v #23461 > > leptos::prelude::ArcReadSignal::update(&$0, |x: &mut /*"' : string 00:19:40 v #23462 > > | write_signal => $'$"true; 00:19:40 v #23463 > > leptos::prelude::WriteSignal::update(&$0, |x: &mut /*"' : string 00:19:40 v #23464 > > | arc_write_signal => $'$"true; 00:19:40 v #23465 > > leptos::prelude::ArcWriteSignal::update(&$0, |x: &mut /*"' : string 00:19:40 v #23466 > > | memo => $'$"true; leptos::prelude::Memo::update(&$0, |x: &mut /*"' 00:19:40 v #23467 > > : string 00:19:40 v #23468 > > | arc_memo => $'$"true; leptos::prelude::ArcMemo::update(&$0, |x: 00:19:40 v #23469 > > &mut /*"' : string 00:19:40 v #23470 > > (!\\(signal, code) : bool) |> ignore 00:19:40 v #23471 > > (null () : rust.type_emit u) |> ignore 00:19:40 v #23472 > > (!\\(fn, $'"*/ | { *x = $0(x.clone()) }); //"') : bool) |> ignore 00:19:40 v #23473 > > 00:19:40 v #23474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:40 v #23475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:40 v #23476 > > │ ### signal_update rw_signal │ 00:19:40 v #23477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:40 v #23478 > > 00:19:40 v #23479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:40 v #23480 > > instance signal_update rw_signal = signal_update' 00:19:40 v #23481 > > instance signal_update arc_rw_signal = signal_update' 00:19:41 v #23482 > > 00:19:41 v #23483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:41 v #23484 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:41 v #23485 > > │ ### signal_update write_signal │ 00:19:41 v #23486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:41 v #23487 > > 00:19:41 v #23488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:41 v #23489 > > instance signal_update write_signal = signal_update' 00:19:41 v #23490 > > instance signal_update arc_write_signal = signal_update' 00:19:41 v #23491 > > 00:19:41 v #23492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:41 v #23493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:41 v #23494 > > │ ### signal_get_untracked' │ 00:19:41 v #23495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:41 v #23496 > > 00:19:41 v #23497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:41 v #23498 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u = 00:19:41 v #23499 > > signal |> typecheck_signal 00:19:41 v #23500 > > inl signal = signal |> rust.box_pin 00:19:41 v #23501 > > inl code = 00:19:41 v #23502 > > real 00:19:41 v #23503 > > typecase t with 00:19:41 v #23504 > > | signal => $'$"leptos::prelude::Signal::get_untracked(&$0)"' : 00:19:41 v #23505 > > string 00:19:41 v #23506 > > | arc_signal => $'$"leptos::prelude::ArcSignal::get_untracked(&$0)"' 00:19:41 v #23507 > > : string 00:19:41 v #23508 > > | rw_signal => $'$"leptos::prelude::RwSignal::get_untracked(&$0)"' : 00:19:41 v #23509 > > string 00:19:41 v #23510 > > | arc_rw_signal => 00:19:41 v #23511 > > $'$"leptos::prelude::ArcRwSignal::get_untracked(&$0)"' : string 00:19:41 v #23512 > > | read_signal => 00:19:41 v #23513 > > $'$"leptos::prelude::ReadSignal::get_untracked(&$0)"' : string 00:19:41 v #23514 > > | arc_read_signal => 00:19:41 v #23515 > > $'$"leptos::prelude::ArcReadSignal::get_untracked(&$0)"' : string 00:19:41 v #23516 > > | write_signal => 00:19:41 v #23517 > > $'$"leptos::prelude::WriteSignal::get_untracked(&$0)"' : string 00:19:41 v #23518 > > | arc_write_signal => 00:19:41 v #23519 > > $'$"leptos::prelude::ArcWriteSignal::get_untracked(&$0)"' : string 00:19:41 v #23520 > > | memo => $'$"leptos::prelude::Memo::get_untracked(&$0)"' : string 00:19:41 v #23521 > > | arc_memo => $'$"leptos::prelude::ArcMemo::get_untracked(&$0)"' : 00:19:41 v #23522 > > string 00:19:41 v #23523 > > !\\(signal, code) : u 00:19:42 v #23524 > > 00:19:42 v #23525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:42 v #23526 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:42 v #23527 > > │ ### signal_get_untracked rw_signal │ 00:19:42 v #23528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:42 v #23529 > > 00:19:42 v #23530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:42 v #23531 > > instance signal_get_untracked rw_signal = signal_get_untracked' 00:19:42 v #23532 > > instance signal_get_untracked arc_rw_signal = signal_get_untracked' 00:19:42 v #23533 > > 00:19:42 v #23534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:42 v #23535 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:42 v #23536 > > │ ### signal_get_untracked read_signal │ 00:19:42 v #23537 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:42 v #23538 > > 00:19:42 v #23539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:42 v #23540 > > instance signal_get_untracked read_signal = signal_get_untracked' 00:19:42 v #23541 > > instance signal_get_untracked arc_read_signal = signal_get_untracked' 00:19:42 v #23542 > > 00:19:42 v #23543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:42 v #23544 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:42 v #23545 > > │ ### signal_get_untracked memo │ 00:19:42 v #23546 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:42 v #23547 > > 00:19:42 v #23548 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:42 v #23549 > > instance signal_get_untracked memo = signal_get_untracked' 00:19:42 v #23550 > > instance signal_get_untracked arc_memo = signal_get_untracked' 00:19:43 v #23551 > > 00:19:43 v #23552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:43 v #23553 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:43 v #23554 > > │ ### signal_set' │ 00:19:43 v #23555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:43 v #23556 > > 00:19:43 v #23557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:43 v #23558 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) = 00:19:43 v #23559 > > signal |> typecheck_signal 00:19:43 v #23560 > > inl code = 00:19:43 v #23561 > > real 00:19:43 v #23562 > > typecase t with 00:19:43 v #23563 > > | signal => $'$"true; leptos::prelude::Signal::set(&$0, $1); //"' : 00:19:43 v #23564 > > string 00:19:43 v #23565 > > | arc_signal => $'$"true; leptos::prelude::ArcSignal::set(&$0, $1); 00:19:43 v #23566 > > //"' : string 00:19:43 v #23567 > > | rw_signal => $'$"true; leptos::prelude::RwSignal::set(&$0, $1); 00:19:43 v #23568 > > //"' : string 00:19:43 v #23569 > > | arc_rw_signal => $'$"true; leptos::prelude::ArcRwSignal::set(&$0, 00:19:43 v #23570 > > $1); //"' : string 00:19:43 v #23571 > > | read_signal => $'$"true; leptos::prelude::ReadSignal::set(&$0, 00:19:43 v #23572 > > $1); //"' : string 00:19:43 v #23573 > > | arc_read_signal => $'$"true; 00:19:43 v #23574 > > leptos::prelude::ArcReadSignal::set(&$0, $1); //"' : string 00:19:43 v #23575 > > | write_signal => $'$"true; leptos::prelude::WriteSignal::set(&$0, 00:19:43 v #23576 > > $1); //"' : string 00:19:43 v #23577 > > | arc_write_signal => $'$"true; 00:19:43 v #23578 > > leptos::prelude::ArcWriteSignal::set(&$0, $1); //"' : string 00:19:43 v #23579 > > | memo => $'$"true; leptos::prelude::Memo::set(&$0, $1); //"' : 00:19:43 v #23580 > > string 00:19:43 v #23581 > > | arc_memo => $'$"true; leptos::prelude::ArcMemo::set(&$0, $1); //"' 00:19:43 v #23582 > > : string 00:19:43 v #23583 > > (!\\((signal, value), code) : bool) |> ignore 00:19:43 v #23584 > > 00:19:43 v #23585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:43 v #23586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:43 v #23587 > > │ ### signal_set rw_signal │ 00:19:43 v #23588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:43 v #23589 > > 00:19:43 v #23590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:43 v #23591 > > instance signal_set rw_signal = signal_set' 00:19:43 v #23592 > > instance signal_set arc_rw_signal = signal_set' 00:19:44 v #23593 > > 00:19:44 v #23594 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:44 v #23595 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:44 v #23596 > > │ ### signal_set write_signal │ 00:19:44 v #23597 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:44 v #23598 > > 00:19:44 v #23599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:44 v #23600 > > instance signal_set write_signal = signal_set' 00:19:44 v #23601 > > instance signal_set arc_write_signal = signal_set' 00:19:44 v #23602 > > 00:19:44 v #23603 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:44 v #23604 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:44 v #23605 > > │ ### new_local_resource │ 00:19:44 v #23606 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:44 v #23607 > > 00:19:44 v #23608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:44 v #23609 > > inl new_local_resource forall t u. 00:19:44 v #23610 > > (source : () -> t) 00:19:44 v #23611 > > (fetcher : t -> async.future_pin u) 00:19:44 v #23612 > > : local_resource t u 00:19:44 v #23613 > > = 00:19:44 v #23614 > > // inl fetcher x = rust.move fun () => 00:19:44 v #23615 > > // fetcher x 00:19:44 v #23616 > > // inl fetcher = join fetcher 00:19:44 v #23617 > > // !\($'"leptos::create_local_resource(move || !source(), move |x| async 00:19:44 v #23618 > > move { !fetcher(x)().await })"') 00:19:44 v #23619 > > 00:19:44 v #23620 > > // --- 00:19:44 v #23621 > > 00:19:44 v #23622 > > // inl fn x = async.new_future fun () => 00:19:44 v #23623 > > // inl x' = fetcher x 00:19:44 v #23624 > > // x' |> async.await 00:19:44 v #23625 > > 00:19:44 v #23626 > > // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x| 00:19:44 v #23627 > > async move { $1(x).await })"') 00:19:44 v #23628 > > 00:19:44 v #23629 > > inl fetcher = fetcher |> rust.func1_from 00:19:44 v #23630 > > inl fetcher x = 00:19:44 v #23631 > > fetcher |> rust.func1_move x 00:19:44 v #23632 > > 00:19:44 v #23633 > > !\\((source, fetcher), $'"leptos::prelude::LocalResource::new(move || $0(), 00:19:44 v #23634 > > |x| async move { $1(x).await })"') 00:19:45 v #23635 > > 00:19:45 v #23636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 v #23637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 v #23638 > > │ ### new_arc_local_resource │ 00:19:45 v #23639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 v #23640 > > 00:19:45 v #23641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 v #23642 > > inl new_arc_local_resource forall t. 00:19:45 v #23643 > > (fetcher : () -> async.future_pin t) 00:19:45 v #23644 > > : arc_local_resource t 00:19:45 v #23645 > > = 00:19:45 v #23646 > > // inl fetcher x = rust.move fun () => 00:19:45 v #23647 > > // fetcher x 00:19:45 v #23648 > > // inl fetcher = join fetcher 00:19:45 v #23649 > > // !\($'"leptos::create_local_resource(move || !source(), move |x| async 00:19:45 v #23650 > > move { !fetcher(x)().await })"') 00:19:45 v #23651 > > 00:19:45 v #23652 > > // --- 00:19:45 v #23653 > > 00:19:45 v #23654 > > // inl fn x = async.new_future fun () => 00:19:45 v #23655 > > // inl x' = fetcher x 00:19:45 v #23656 > > // x' |> async.await 00:19:45 v #23657 > > 00:19:45 v #23658 > > // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x| 00:19:45 v #23659 > > async move { $1(x).await })"') 00:19:45 v #23660 > > 00:19:45 v #23661 > > inl fetcher = fetcher |> rust.func0_from 00:19:45 v #23662 > > 00:19:45 v #23663 > > !\\(fetcher, $'"leptos::prelude::ArcLocalResource::new(|| async move { 00:19:45 v #23664 > > $0().await })"') 00:19:45 v #23665 > > 00:19:45 v #23666 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 v #23667 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 v #23668 > > │ ### new_resource │ 00:19:45 v #23669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 v #23670 > > 00:19:45 v #23671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 v #23672 > > // inl new_resource forall t u. (source : () -> t) (fetcher : t -> 00:19:45 v #23673 > > async.future_pin u) : resource t u = 00:19:45 v #23674 > > // inl source = join source 00:19:45 v #23675 > > // !\\(fetcher, $'"leptos::Resource::new(move || !source(), |x| async move { 00:19:45 v #23676 > > $0(x).await })"') 00:19:46 v #23677 > > 00:19:46 v #23678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 v #23679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 v #23680 > > │ ### new_action │ 00:19:46 v #23681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 v #23682 > > 00:19:46 v #23683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 v #23684 > > inl new_action forall t u. (action_fn : t -> async.future_pin u) : action t u = 00:19:46 v #23685 > > inl action_fn = action_fn |> rust.func1_from 00:19:46 v #23686 > > inl action_fn x = 00:19:46 v #23687 > > action_fn |> rust.func1_move x 00:19:46 v #23688 > > !\\(action_fn, $'"leptos::prelude::Action::new(move |value: 00:19:46 v #23689 > > &std::sync::Arc<`t>| $0(value.clone()))"') 00:19:46 v #23690 > > 00:19:46 v #23691 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 v #23692 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 v #23693 > > │ ### new_arc_action │ 00:19:46 v #23694 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 v #23695 > > 00:19:46 v #23696 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 v #23697 > > inl new_arc_action forall t u. (action_fn : t -> async.future_pin u) : 00:19:46 v #23698 > > arc_action t u = 00:19:46 v #23699 > > // inl action_fn = action_fn |> rust.func1_from 00:19:46 v #23700 > > inl action_fn = action_fn |> rust.func1_from 00:19:46 v #23701 > > inl action_fn x = 00:19:46 v #23702 > > action_fn |> rust.func1_move x 00:19:46 v #23703 > > !\\(action_fn, $'"leptos::prelude::ArcAction::new(move |value: 00:19:46 v #23704 > > &std::sync::Arc<`t>| $0(value.clone()))"') 00:19:47 v #23705 > > 00:19:47 v #23706 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 v #23707 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 v #23708 > > │ ### action_dispatch │ 00:19:47 v #23709 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 v #23710 > > 00:19:47 v #23711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 v #23712 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) : 00:19:47 v #23713 > > () = 00:19:47 v #23714 > > (!\\((action, value), $'"true; leptos::prelude::Action::dispatch(&$0, 00:19:47 v #23715 > > $1.clone())"') : bool) |> ignore 00:19:47 v #23716 > > 00:19:47 v #23717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 v #23718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 v #23719 > > │ ### arc_action_dispatch │ 00:19:47 v #23720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 v #23721 > > 00:19:47 v #23722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 v #23723 > > inl arc_action_dispatch forall t u. (value : heap t) (action : arc_action (heap 00:19:47 v #23724 > > t) u) : () = 00:19:47 v #23725 > > (!\\((action, value), $'"true; leptos::prelude::ArcAction::dispatch(&$0, 00:19:47 v #23726 > > $1.clone())"') : bool) |> ignore 00:19:47 v #23727 > > 00:19:47 v #23728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 v #23729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 v #23730 > > │ ### action_input │ 00:19:47 v #23731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 v #23732 > > 00:19:47 v #23733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 v #23734 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal 00:19:47 v #23735 > > (optionm'.option' t) = 00:19:47 v #23736 > > !\\(action, $'"leptos::prelude::Action::input(&$0)"') 00:19:48 v #23737 > > 00:19:48 v #23738 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 v #23739 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 v #23740 > > │ ### action_pending │ 00:19:48 v #23741 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 v #23742 > > 00:19:48 v #23743 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 v #23744 > > inl action_pending forall t u. (action : action (heap t) u) : memo bool = 00:19:48 v #23745 > > !\\(action, $'"leptos::prelude::Action::pending(&$0)"') 00:19:48 v #23746 > > 00:19:48 v #23747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 v #23748 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 v #23749 > > │ ### arc_action_pending │ 00:19:48 v #23750 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 v #23751 > > 00:19:48 v #23752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 v #23753 > > inl arc_action_pending forall t u. (action : arc_action (heap t) u) : arc_memo 00:19:48 v #23754 > > bool = 00:19:48 v #23755 > > !\\(action, $'"leptos::prelude::ArcAction::pending(&$0)"') 00:19:49 v #23756 > > 00:19:49 v #23757 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 v #23758 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 v #23759 > > │ ### action_value │ 00:19:49 v #23760 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 v #23761 > > 00:19:49 v #23762 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 v #23763 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal 00:19:49 v #23764 > > (optionm'.option' u) = 00:19:49 v #23765 > > !\\(action, $'"leptos::prelude::Action::value(&$0)"') 00:19:49 v #23766 > > 00:19:49 v #23767 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 v #23768 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 v #23769 > > │ ### arc_action_value │ 00:19:49 v #23770 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 v #23771 > > 00:19:49 v #23772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 v #23773 > > inl arc_action_value forall t u. (action : arc_action (heap t) u) : 00:19:49 v #23774 > > arc_rw_signal (optionm'.option' u) = 00:19:49 v #23775 > > !\\(action, $'"leptos::prelude::ArcAction::value(&$0)"') 00:19:50 v #23776 > > 00:19:50 v #23777 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 v #23778 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 v #23779 > > │ ### use_context │ 00:19:50 v #23780 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 v #23781 > > 00:19:50 v #23782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 v #23783 > > inl use_context forall t. () : optionm'.option' t = 00:19:50 v #23784 > > !\($'"leptos::context::use_context::<std::sync::Arc<`t>>()"') 00:19:50 v #23785 > > 00:19:50 v #23786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 v #23787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 v #23788 > > │ ### local_resource_loading │ 00:19:50 v #23789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 v #23790 > > 00:19:50 v #23791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 v #23792 > > inl local_resource_loading forall t u. (resource : local_resource t u) : signal 00:19:50 v #23793 > > bool = 00:19:50 v #23794 > > !\\(resource, $'$"leptos::prelude::pending(&$0).into()"') 00:19:50 v #23795 > > 00:19:50 v #23796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 v #23797 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 v #23798 > > │ ### arc_local_resource_loading │ 00:19:50 v #23799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 v #23800 > > 00:19:50 v #23801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 v #23802 > > inl arc_local_resource_loading forall t. (resource : arc_local_resource t) : 00:19:50 v #23803 > > arc_signal bool = 00:19:50 v #23804 > > !\\(resource, $'$"leptos::prelude::Submission::pending(&$0.into()).into()"') 00:19:51 v #23805 > > 00:19:51 v #23806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 v #23807 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 v #23808 > > │ ### resource_get │ 00:19:51 v #23809 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 v #23810 > > 00:19:51 v #23811 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 v #23812 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u = 00:19:51 v #23813 > > !\\(resource, $'$"leptos::prelude::Resource::get(&$0)"') 00:19:51 v #23814 > > 00:19:51 v #23815 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 v #23816 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 v #23817 > > │ ### local_resource_get │ 00:19:51 v #23818 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 v #23819 > > 00:19:51 v #23820 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 v #23821 > > inl local_resource_get forall t u. (resource : local_resource t u) : 00:19:51 v #23822 > > optionm'.option' u = 00:19:51 v #23823 > > !\\(resource, $'$"leptos::prelude::LocalResource::get(&$0)"') 00:19:52 v #23824 > > 00:19:52 v #23825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #23826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:52 v #23827 > > │ ### arc_local_resource_get │ 00:19:52 v #23828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 v #23829 > > 00:19:52 v #23830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #23831 > > inl arc_local_resource_get forall t. (resource : arc_local_resource t) : 00:19:52 v #23832 > > optionm'.option' t = 00:19:52 v #23833 > > !\\(resource, $'$"Option::map(leptos::prelude::ArcLocalResource::get(&$0), 00:19:52 v #23834 > > |x| x.clone())"') 00:19:52 v #23835 > > 00:19:52 v #23836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #23837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:52 v #23838 > > │ ### resource_with │ 00:19:52 v #23839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 v #23840 > > 00:19:52 v #23841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #23842 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option' 00:19:52 v #23843 > > u -> v) : v = 00:19:52 v #23844 > > !\\((resource, fn), $'$"leptos::prelude::SignalWith::with(&$0, |x| 00:19:52 v #23845 > > $1(x.clone()))"') 00:19:53 v #23846 > > 00:19:53 v #23847 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #23848 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:53 v #23849 > > │ ### new_effect │ 00:19:53 v #23850 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:53 v #23851 > > 00:19:53 v #23852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #23853 > > inl new_effect (fn : () -> ()) : () = 00:19:53 v #23854 > > inl fn = fn |> rust.func0_from 00:19:53 v #23855 > > (!\($'"true; leptos::prelude::Effect::new(move |_| { !fn() })"') : bool) |> 00:19:53 v #23856 > > ignore 00:19:53 v #23857 > > 00:19:53 v #23858 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #23859 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:53 v #23860 > > │ ### interval_handle_clear │ 00:19:53 v #23861 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:53 v #23862 > > 00:19:53 v #23863 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #23864 > > inl interval_handle_clear (interval_handle : interval_handle) = 00:19:53 v #23865 > > (!\\(interval_handle, $'$"true; 00:19:53 v #23866 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore 00:19:54 v #23867 > > 00:19:54 v #23868 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #23869 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:54 v #23870 > > │ ### set_interval_with_handle │ 00:19:54 v #23871 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:54 v #23872 > > 00:19:54 v #23873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #23874 > > inl set_interval_with_handle 00:19:54 v #23875 > > (fn : () -> ()) 00:19:54 v #23876 > > (interval_millis : date_time.duration) 00:19:54 v #23877 > > : resultm.result' interval_handle wasm.js_value 00:19:54 v #23878 > > = 00:19:54 v #23879 > > inl fn = fn |> rust.func0_from 00:19:54 v #23880 > > !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move || 00:19:54 v #23881 > > $0(), $1)"') 00:19:54 v #23882 > > 00:19:54 v #23883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #23884 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:54 v #23885 > > │ ### new_memo │ 00:19:54 v #23886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:54 v #23887 > > 00:19:54 v #23888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #23889 > > inl new_memo forall t. (fn : () -> t) : memo t = 00:19:54 v #23890 > > // inl fn = fn |> rust.func0_from 00:19:54 v #23891 > > !\\(fn, $'"leptos::prelude::Memo::new(move |_| { $0() })"') 00:19:54 v #23892 > > 00:19:54 v #23893 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #23894 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:54 v #23895 > > │ ### new_arc_memo │ 00:19:54 v #23896 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:54 v #23897 > > 00:19:54 v #23898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #23899 > > inl new_arc_memo forall t. (fn : () -> t) : arc_memo t = 00:19:54 v #23900 > > // inl fn = fn |> rust.func0_from 00:19:54 v #23901 > > !\\(fn, $'"leptos::prelude::ArcMemo::new(move |_| { $0() })"') 00:19:55 v #23902 > > 00:19:55 v #23903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:55 v #23904 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:55 v #23905 > > │ ### window │ 00:19:55 v #23906 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:55 v #23907 > > 00:19:55 v #23908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:55 v #23909 > > let window () : wasm.window = 00:19:55 v #23910 > > !\($'"leptos::prelude::window()"') 00:19:55 v #23911 > > 00:19:55 v #23912 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:55 v #23913 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:55 v #23914 > > │ ### bool_prop │ 00:19:55 v #23915 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:55 v #23916 > > 00:19:55 v #23917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:55 v #23918 > > inl bool_prop (prop : string) (fn : () -> bool) : string = 00:19:55 v #23919 > > inl fn = join fn 00:19:55 v #23920 > > $'"" + !prop + "={move || !fn()}"' 00:19:56 v #23921 > > 00:19:56 v #23922 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:56 v #23923 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:56 v #23924 > > │ ### concat_props │ 00:19:56 v #23925 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:56 v #23926 > > 00:19:56 v #23927 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:56 v #23928 > > inl concat_props props = 00:19:56 v #23929 > > ("", props) 00:19:56 v #23930 > > ||> listm.fold fun acc (x : string) => 00:19:56 v #23931 > > $'" " + !x + !acc + ""' 00:19:56 v #23932 > > 00:19:56 v #23933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:56 v #23934 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:56 v #23935 > > │ ### move_to_fragment │ 00:19:56 v #23936 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:56 v #23937 > > 00:19:56 v #23938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:56 v #23939 > > inl move_to_fragment fn = 00:19:56 v #23940 > > fn 00:19:56 v #23941 > > |> rust.move 00:19:56 v #23942 > > |> rust.func0_move 00:19:57 v #23943 > > 00:19:57 v #23944 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:57 v #23945 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:57 v #23946 > > │ ### tag_raw │ 00:19:57 v #23947 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:57 v #23948 > > 00:19:57 v #23949 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:57 v #23950 > > inl tag_raw tag props children = 00:19:57 v #23951 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:19:57 v #23952 > > leptos::prelude::*;\n//\"\n#endif" 00:19:57 v #23953 > > inl tag : string = tag 00:19:57 v #23954 > > inl props = props |> concat_props 00:19:57 v #23955 > > inl children = 00:19:57 v #23956 > > children () 00:19:57 v #23957 > > |> fragment_to_view 00:19:57 v #23958 > > // inl children = children |> rust.box_pin 00:19:57 v #23959 > > // inl children = join children 00:19:57 v #23960 > > // inl children = join children 00:19:57 v #23961 > > // inl children = join children 00:19:57 v #23962 > > // inl children = children >> fragment_to_view 00:19:57 v #23963 > > // inl children : rust.func0 view = !\\(children, $'$"(|| $0)()"') 00:19:57 v #23964 > > $'"<" + !tag + " " + !props + ">move || { !children }</" + !tag + ">"' 00:19:57 v #23965 > > 00:19:57 v #23966 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:57 v #23967 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:57 v #23968 > > │ ### tag_element │ 00:19:57 v #23969 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:57 v #23970 > > 00:19:57 v #23971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:57 v #23972 > > inl tag_element tag props children : view' (html_element _) = 00:19:57 v #23973 > > tag_raw tag props children 00:19:57 v #23974 > > |> macro_to_element 00:19:57 v #23975 > > 00:19:57 v #23976 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:57 v #23977 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:57 v #23978 > > │ ### tag_closed_raw │ 00:19:57 v #23979 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:57 v #23980 > > 00:19:57 v #23981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:57 v #23982 > > inl tag_closed_raw tag props = 00:19:57 v #23983 > > inl tag : string = tag 00:19:57 v #23984 > > inl props = props |> concat_props 00:19:57 v #23985 > > $'"<" + !tag + " " + !props + " />"' 00:19:58 v #23986 > > 00:19:58 v #23987 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:58 v #23988 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:58 v #23989 > > │ ### tag_closed │ 00:19:58 v #23990 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:58 v #23991 > > 00:19:58 v #23992 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:58 v #23993 > > inl tag_closed tag props : view' (html_element _) = 00:19:58 v #23994 > > tag_closed_raw tag props 00:19:58 v #23995 > > |> macro_to_element 00:19:58 v #23996 > > 00:19:58 v #23997 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:58 v #23998 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:58 v #23999 > > │ ### for │ 00:19:58 v #24000 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:58 v #24001 > > 00:19:58 v #24002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:58 v #24003 > > inl for props : view = 00:19:58 v #24004 > > tag_closed_raw "leptos::prelude::For" props 00:19:58 v #24005 > > |> macro_to_view 00:19:59 v #24006 > > 00:19:59 v #24007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:59 v #24008 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:59 v #24009 > > │ ### for │ 00:19:59 v #24010 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:59 v #24011 > > 00:19:59 v #24012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:59 v #24013 > > inl for forall t u (signal : * -> *). 00:19:59 v #24014 > > (signal : signal (am'.vec t)) 00:19:59 v #24015 > > (key_fn : t -> u) 00:19:59 v #24016 > > (children' : t -> fragment) 00:19:59 v #24017 > > : view 00:19:59 v #24018 > > = 00:19:59 v #24019 > > signal |> typecheck_signal 00:19:59 v #24020 > > inl signal = signal |> rust.emit 00:19:59 v #24021 > > inl key_fn = key_fn |> rust.func1_from 00:19:59 v #24022 > > inl key_fn x = 00:19:59 v #24023 > > key_fn |> rust.func1_move x 00:19:59 v #24024 > > inl key_fn = join key_fn 00:19:59 v #24025 > > inl children' = (children' >> fragment_to_view) |> rust.func1_from 00:19:59 v #24026 > > inl children' x = 00:19:59 v #24027 > > children' |> rust.func1_move x 00:19:59 v #24028 > > for [[ 00:19:59 v #24029 > > $'"each=!signal"' 00:19:59 v #24030 > > $'"key=move |x| !key_fn(x.to_owned())"' 00:19:59 v #24031 > > $'"let:x"' 00:19:59 v #24032 > > $'"children=move |x| !children'(x)"' 00:19:59 v #24033 > > ]] 00:19:59 v #24034 > > 00:19:59 v #24035 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:59 v #24036 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:59 v #24037 > > │ ### show │ 00:19:59 v #24038 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:59 v #24039 > > 00:19:59 v #24040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:59 v #24041 > > inl show props : view = 00:19:59 v #24042 > > tag_closed_raw "leptos::prelude::Show" props 00:19:59 v #24043 > > |> macro_to_view 00:20:00 v #24044 > > 00:20:00 v #24045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:00 v #24046 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:00 v #24047 > > │ ### show │ 00:20:00 v #24048 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:00 v #24049 > > 00:20:00 v #24050 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:00 v #24051 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () -> 00:20:00 v #24052 > > fragment) : view = 00:20:00 v #24053 > > inl when_fn = join when_fn 00:20:00 v #24054 > > inl when_fn = join when_fn 00:20:00 v #24055 > > inl fallback = join fallback 00:20:00 v #24056 > > inl children = join children 00:20:00 v #24057 > > show [[ 00:20:00 v #24058 > > $'"when=move || !when_fn()"' 00:20:00 v #24059 > > $'"fallback=move || !fallback()"' 00:20:00 v #24060 > > $'"children=std::rc::Rc::new(move || !children())"' 00:20:00 v #24061 > > ]] 00:20:00 v #24062 > > 00:20:00 v #24063 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:00 v #24064 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:00 v #24065 > > │ ### use_location │ 00:20:00 v #24066 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:00 v #24067 > > 00:20:00 v #24068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:00 v #24069 > > inl use_location () : location = 00:20:00 v #24070 > > !\($'"leptos_router::hooks::use_location()"') 00:20:01 v #24071 > > 00:20:01 v #24072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #24073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:01 v #24074 > > │ ### use_navigate │ 00:20:01 v #24075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:01 v #24076 > > 00:20:01 v #24077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #24078 > > inl use_navigate () : string -> () = 00:20:01 v #24079 > > inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str) 00:20:01 v #24080 > > navigate_options)) = 00:20:01 v #24081 > > !\($'"std::sync::Arc::new(leptos_router::hooks::use_navigate())"') 00:20:01 v #24082 > > fun url => 00:20:01 v #24083 > > inl url = url |> sm'.as_str 00:20:01 v #24084 > > !\\((navigate, url), $'"$0($1, Default::default())"') 00:20:01 v #24085 > > 00:20:01 v #24086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #24087 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:01 v #24088 > > │ ### location_hash │ 00:20:01 v #24089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:01 v #24090 > > 00:20:01 v #24091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #24092 > > inl location_hash (location : location) : memo sm'.std_string = 00:20:01 v #24093 > > !\\(location, $'"$0.hash"') 00:20:01 v #24094 > > 00:20:01 v #24095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #24096 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:01 v #24097 > > │ ### location_pathname │ 00:20:01 v #24098 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:01 v #24099 > > 00:20:01 v #24100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #24101 > > inl location_pathname (location : location) : memo sm'.std_string = 00:20:01 v #24102 > > !\\(location, $'"$0.pathname"') 00:20:02 v #24103 > > 00:20:02 v #24104 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #24105 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:02 v #24106 > > │ ### location_search │ 00:20:02 v #24107 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:02 v #24108 > > 00:20:02 v #24109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #24110 > > inl location_search (location : location) : memo sm'.std_string = 00:20:02 v #24111 > > !\\(location, $'"$0.search"') 00:20:02 v #24112 > > 00:20:02 v #24113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #24114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:02 v #24115 > > │ ### url_try_from │ 00:20:02 v #24116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:02 v #24117 > > 00:20:02 v #24118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #24119 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string = 00:20:02 v #24120 > > !\\(s, $'"leptos_router::location::Url::try_from($0)"') 00:20:03 v #24121 > > 00:20:03 v #24122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #24123 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:03 v #24124 > > │ ### url_pathname │ 00:20:03 v #24125 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:03 v #24126 > > 00:20:03 v #24127 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #24128 > > inl url_pathname (url : url) : sm'.std_string = 00:20:03 v #24129 > > !\\(url, $'"$0.pathname"') 00:20:03 v #24130 > > 00:20:03 v #24131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #24132 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:03 v #24133 > > │ ### use_url │ 00:20:03 v #24134 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:03 v #24135 > > 00:20:03 v #24136 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #24137 > > inl use_url () = 00:20:03 v #24138 > > inl location = use_location () 00:20:03 v #24139 > > 00:20:03 v #24140 > > fun () => 00:20:03 v #24141 > > inl url_pathname = location |> location_pathname |> signal_get |> 00:20:03 v #24142 > > sm'.from_std_string 00:20:03 v #24143 > > inl url_search = location |> location_search |> signal_get |> 00:20:03 v #24144 > > sm'.from_std_string 00:20:03 v #24145 > > inl url_search = 00:20:03 v #24146 > > if url_search = "" 00:20:03 v #24147 > > then "" 00:20:03 v #24148 > > else $'$"?{!url_search}"' 00:20:03 v #24149 > > url_pathname +. url_search 00:20:03 v #24150 > > |> new_arc_memo 00:20:04 v #24151 > > 00:20:04 v #24152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #24153 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:04 v #24154 > > │ ### route │ 00:20:04 v #24155 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:04 v #24156 > > 00:20:04 v #24157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #24158 > > inl route path view children : view' nested_route = 00:20:04 v #24159 > > inl path = path |> sm'.to_std_string 00:20:04 v #24160 > > inl path = join path 00:20:04 v #24161 > > // inl view = view |> rust.move 00:20:04 v #24162 > > inl view () = 00:20:04 v #24163 > > view () |> fragment_to_view 00:20:04 v #24164 > > inl view = join view 00:20:04 v #24165 > > tag_closed_raw "leptos_router::components::ParentRoute" [[ 00:20:04 v #24166 > > $'"path=leptos_router::path\!(!path)"' 00:20:04 v #24167 > > $'"view= move || !view()"' 00:20:04 v #24168 > > $'"children=Box::new(move || !children())"' 00:20:04 v #24169 > > ]] 00:20:04 v #24170 > > |> macro_to_view''' 00:20:04 v #24171 > > 00:20:04 v #24172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #24173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:04 v #24174 > > │ ### macro_to_view │ 00:20:04 v #24175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:04 v #24176 > > 00:20:04 v #24177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #24178 > > inl macro_to_view (macro : string) : view = 00:20:04 v #24179 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:04 v #24180 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:04 v #24181 > > !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " + 00:20:04 v #24182 > > !macro + " })"') 00:20:05 v #24183 > > 00:20:05 v #24184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #24185 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:05 v #24186 > > │ ### router │ 00:20:05 v #24187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:05 v #24188 > > 00:20:05 v #24189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #24190 > > inl router children : view = 00:20:05 v #24191 > > // inl children : () -> fragment = join children 00:20:05 v #24192 > > tag_closed_raw "leptos_router::components::Router" [[ 00:20:05 v #24193 > > $'"children=Box::new(move || !children())"' 00:20:05 v #24194 > > ]] 00:20:05 v #24195 > > |> macro_to_view' 00:20:05 v #24196 > > |> into_any_view 00:20:05 v #24197 > > 00:20:05 v #24198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #24199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:05 v #24200 > > │ ### routes │ 00:20:05 v #24201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:05 v #24202 > > 00:20:05 v #24203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #24204 > > inl routes children : view = 00:20:05 v #24205 > > inl children : () -> am'.vec (view' nested_route) = join children 00:20:05 v #24206 > > inl children = join children 00:20:05 v #24207 > > inl fallback = "leptos.routes / fallback" |> text_view 00:20:05 v #24208 > > tag_closed_raw "leptos_router::components::Routes" [[ 00:20:05 v #24209 > > $'"fallback=move || !fallback"' 00:20:05 v #24210 > > $'"children=leptos::children::ToChildren::to_children(move || 00:20:05 v #24211 > > !children())"' 00:20:05 v #24212 > > ]] 00:20:05 v #24213 > > |> macro_to_view' 00:20:05 v #24214 > > |> into_any_view 00:20:05 v #24215 > > 00:20:05 v #24216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #24217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:05 v #24218 > > │ ### a' │ 00:20:05 v #24219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:05 v #24220 > > 00:20:05 v #24221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #24222 > > inl a' props children : _ (_ a') = 00:20:05 v #24223 > > tag_element "a" props children 00:20:06 v #24224 > > 00:20:06 v #24225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #24226 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:06 v #24227 > > │ ### button │ 00:20:06 v #24228 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:06 v #24229 > > 00:20:06 v #24230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #24231 > > inl button props children : _ (_ button) = 00:20:06 v #24232 > > tag_element "button" props children 00:20:06 v #24233 > > 00:20:06 v #24234 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #24235 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:06 v #24236 > > │ ### details │ 00:20:06 v #24237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:06 v #24238 > > 00:20:06 v #24239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #24240 > > inl details props children : _ (_ details) = 00:20:06 v #24241 > > tag_element "details" props children 00:20:07 v #24242 > > 00:20:07 v #24243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #24244 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:07 v #24245 > > │ ### div │ 00:20:07 v #24246 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:07 v #24247 > > 00:20:07 v #24248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #24249 > > inl div props children : _ (_ div) = 00:20:07 v #24250 > > tag_element "div" props children 00:20:07 v #24251 > > 00:20:07 v #24252 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #24253 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:07 v #24254 > > │ ### footer │ 00:20:07 v #24255 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:07 v #24256 > > 00:20:07 v #24257 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #24258 > > inl footer props children : _ (_ footer) = 00:20:07 v #24259 > > tag_element "footer" props children 00:20:08 v #24260 > > 00:20:08 v #24261 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #24262 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:08 v #24263 > > │ ### header │ 00:20:08 v #24264 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:08 v #24265 > > 00:20:08 v #24266 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #24267 > > inl header props children : _ (_ header) = 00:20:08 v #24268 > > tag_element "header" props children 00:20:08 v #24269 > > 00:20:08 v #24270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #24271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:08 v #24272 > > │ ### label │ 00:20:08 v #24273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:08 v #24274 > > 00:20:08 v #24275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #24276 > > inl label props children : _ (_ label) = 00:20:08 v #24277 > > tag_element "label" props children 00:20:09 v #24278 > > 00:20:09 v #24279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #24280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:09 v #24281 > > │ ### main │ 00:20:09 v #24282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:09 v #24283 > > 00:20:09 v #24284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #24285 > > inl main props children : _ (_ main) = 00:20:09 v #24286 > > tag_element "main" props children 00:20:09 v #24287 > > 00:20:09 v #24288 > > inl main' () = () 00:20:09 v #24289 > > 00:20:09 v #24290 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #24291 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:09 v #24292 > > │ ### nav │ 00:20:09 v #24293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:09 v #24294 > > 00:20:09 v #24295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #24296 > > inl nav props children : _ (_ nav) = 00:20:09 v #24297 > > tag_element "nav" props children 00:20:10 v #24298 > > 00:20:10 v #24299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #24300 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:10 v #24301 > > │ ### option' │ 00:20:10 v #24302 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:10 v #24303 > > 00:20:10 v #24304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #24305 > > inl option' props children : _ (_ option') = 00:20:10 v #24306 > > tag_element "option" props children 00:20:10 v #24307 > > 00:20:10 v #24308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #24309 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:10 v #24310 > > │ ### option' │ 00:20:10 v #24311 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:10 v #24312 > > 00:20:10 v #24313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #24314 > > inl option' selected children : _ (_ option') = 00:20:10 v #24315 > > inl selected : () -> bool = join selected 00:20:10 v #24316 > > option' [[ 00:20:10 v #24317 > > $'"selected=!selected()"' 00:20:10 v #24318 > > ]] fun () => 00:20:10 v #24319 > > children |> text_to_fragment 00:20:11 v #24320 > > 00:20:11 v #24321 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #24322 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:11 v #24323 > > │ ### pre │ 00:20:11 v #24324 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:11 v #24325 > > 00:20:11 v #24326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #24327 > > inl pre props children : _ (_ pre) = 00:20:11 v #24328 > > tag_element "pre" props children 00:20:11 v #24329 > > 00:20:11 v #24330 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #24331 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:11 v #24332 > > │ ### select │ 00:20:11 v #24333 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:11 v #24334 > > 00:20:11 v #24335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #24336 > > inl select props children : _ (_ select) = 00:20:11 v #24337 > > tag_element "select" props children 00:20:11 v #24338 > > 00:20:11 v #24339 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #24340 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:11 v #24341 > > │ ### span │ 00:20:11 v #24342 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:11 v #24343 > > 00:20:11 v #24344 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #24345 > > inl span props children : _ (_ span) = 00:20:11 v #24346 > > tag_element "span" props children 00:20:12 v #24347 > > 00:20:12 v #24348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #24349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:12 v #24350 > > │ ### summary │ 00:20:12 v #24351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:12 v #24352 > > 00:20:12 v #24353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #24354 > > inl summary props children : _ (_ summary) = 00:20:12 v #24355 > > tag_element "summary" props children 00:20:12 v #24356 > > 00:20:12 v #24357 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #24358 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:12 v #24359 > > │ ### table │ 00:20:12 v #24360 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:12 v #24361 > > 00:20:12 v #24362 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #24363 > > inl table props children : _ (_ table) = 00:20:12 v #24364 > > tag_element "table" props children 00:20:13 v #24365 > > 00:20:13 v #24366 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #24367 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:13 v #24368 > > │ ### thead │ 00:20:13 v #24369 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:13 v #24370 > > 00:20:13 v #24371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #24372 > > inl thead props children : _ (_ thead) = 00:20:13 v #24373 > > tag_element "thead" props children 00:20:13 v #24374 > > 00:20:13 v #24375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #24376 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:13 v #24377 > > │ ### tbody │ 00:20:13 v #24378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:13 v #24379 > > 00:20:13 v #24380 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #24381 > > inl tbody props children : _ (_ tbody) = 00:20:13 v #24382 > > tag_element "tbody" props children 00:20:14 v #24383 > > 00:20:14 v #24384 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #24385 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:14 v #24386 > > │ ### tr │ 00:20:14 v #24387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:14 v #24388 > > 00:20:14 v #24389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #24390 > > inl tr props children : _ (_ tr) = 00:20:14 v #24391 > > tag_element "tr" props children 00:20:14 v #24392 > > 00:20:14 v #24393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #24394 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:14 v #24395 > > │ ### th │ 00:20:14 v #24396 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:14 v #24397 > > 00:20:14 v #24398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #24399 > > inl th props children : _ (_ th) = 00:20:14 v #24400 > > tag_element "th" props children 00:20:15 v #24401 > > 00:20:15 v #24402 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #24403 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:15 v #24404 > > │ ### td │ 00:20:15 v #24405 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:15 v #24406 > > 00:20:15 v #24407 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #24408 > > inl td props children : _ (_ td) = 00:20:15 v #24409 > > tag_element "td" props children 00:20:15 v #24410 > > 00:20:15 v #24411 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #24412 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:15 v #24413 > > │ ### svg │ 00:20:15 v #24414 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:15 v #24415 > > 00:20:15 v #24416 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #24417 > > inl svg props children : _ (_ svg) = 00:20:15 v #24418 > > tag_element "svg" props children 00:20:16 v #24419 > > 00:20:16 v #24420 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #24421 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:16 v #24422 > > │ ### path │ 00:20:16 v #24423 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 v #24424 > > 00:20:16 v #24425 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #24426 > > inl path props : _ (_ path) = 00:20:16 v #24427 > > tag_element "path" props (fun () => [[]] |> view_list_to_fragment) 00:20:16 v #24428 > > 00:20:16 v #24429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #24430 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:16 v #24431 > > │ ### circle │ 00:20:16 v #24432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 v #24433 > > 00:20:16 v #24434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #24435 > > inl circle props : _ (_ circle) = 00:20:16 v #24436 > > tag_element "circle" props (fun () => [[]] |> view_list_to_fragment) 00:20:17 v #24437 > > 00:20:17 v #24438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #24439 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 v #24440 > > │ ### rect │ 00:20:17 v #24441 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 v #24442 > > 00:20:17 v #24443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #24444 > > inl rect props children : _ (_ rect) = 00:20:17 v #24445 > > tag_element "rect" props children 00:20:17 v #24446 > > 00:20:17 v #24447 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #24448 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 v #24449 > > │ ### animate │ 00:20:17 v #24450 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 v #24451 > > 00:20:17 v #24452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #24453 > > inl animate props : _ (_ animate) = 00:20:17 v #24454 > > tag_element "animate" props (fun () => [[]] |> view_list_to_fragment) 00:20:18 v #24455 > > 00:20:18 v #24456 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #24457 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:18 v #24458 > > │ ### input │ 00:20:18 v #24459 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:18 v #24460 > > 00:20:18 v #24461 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #24462 > > inl input props : _ (_ input) = 00:20:18 v #24463 > > tag_closed "input" props 00:20:18 v #24464 > > 00:20:18 v #24465 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #24466 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:18 v #24467 > > │ ### dd │ 00:20:18 v #24468 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:18 v #24469 > > 00:20:18 v #24470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #24471 > > inl dd props children : _ (_ dd) = 00:20:18 v #24472 > > tag_element "dd" props children 00:20:18 v #24473 > > 00:20:18 v #24474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #24475 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:18 v #24476 > > │ ### dl │ 00:20:18 v #24477 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:18 v #24478 > > 00:20:18 v #24479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #24480 > > inl dl props children : _ (_ dl) = 00:20:18 v #24481 > > tag_element "dl" props children 00:20:19 v #24482 > > 00:20:19 v #24483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #24484 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:19 v #24485 > > │ ### dt │ 00:20:19 v #24486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:19 v #24487 > > 00:20:19 v #24488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #24489 > > inl dt props children : _ (_ dt) = 00:20:19 v #24490 > > tag_element "dt" props children 00:20:19 v #24491 > 00:01:39 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 130227 } 00:20:19 v #24492 > 00:01:39 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:21 v #24493 > 00:01:41 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html 00:20:21 v #24494 > 00:01:41 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:21 v #24495 > 00:01:41 v #7 ! validate(nb) 00:20:21 v #24496 > 00:01:41 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:21 v #24497 > 00:01:41 v #9 ! return _pygments_highlight( 00:20:23 v #24498 > 00:01:43 v #10 ! [NbConvertApp] Writing 666087 bytes to c:\home\git\polyglot\lib\spiral\leptos\leptos.dib.html 00:20:23 v #24499 > 00:01:43 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 868 } 00:20:23 v #24500 > 00:01:43 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 868 } 00:20:23 v #24501 > 00:01:43 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:24 v #24502 > 00:01:44 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:24 v #24503 > 00:01:44 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:24 v #24504 > 00:01:44 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 131154 } 00:20:24 d #24505 runtime.execute_with_options_async / { exit_code = 0; output_length = 139044 } 00:20:24 d #26 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path leptos/leptos.dib --retries 3 00:20:24 d #24506 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path util.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:24 v #24507 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) } 00:20:24 v #24508 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/util.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/util.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/util.dib" --output-path "c:/home/git/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:26 v #24509 > > 00:20:26 v #24510 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #24511 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:26 v #24512 > > │ # util │ 00:20:26 v #24513 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:28 v #24514 > > 00:20:28 v #24515 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #24516 > > //// test 00:20:28 v #24517 > > 00:20:28 v #24518 > > open testing 00:20:30 v #24519 > > 00:20:30 v #24520 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #24521 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:30 v #24522 > > │ ### ski │ 00:20:30 v #24523 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:30 v #24524 > > 00:20:30 v #24525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #24526 > > union rec ski = 00:20:30 v #24527 > > | I 00:20:30 v #24528 > > | K 00:20:30 v #24529 > > | S 00:20:30 v #24530 > > | App : ski * ski 00:20:30 v #24531 > > 00:20:30 v #24532 > > inl rec eval ski = 00:20:30 v #24533 > > match ski with 00:20:30 v #24534 > > | App (App (K, x), y) => x |> eval 00:20:30 v #24535 > > | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval 00:20:30 v #24536 > > | App (I, x) => x |> eval 00:20:30 v #24537 > > | App (K, x) => App (K, eval x) 00:20:30 v #24538 > > | App (f, x) => App (eval f, x) |> eval 00:20:30 v #24539 > > | _ => ski 00:20:30 v #24540 > > 00:20:30 v #24541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #24542 > > //// test 00:20:30 v #24543 > > 00:20:30 v #24544 > > eval I 00:20:30 v #24545 > > |> _assert_eq I 00:20:30 v #24546 > > 00:20:30 v #24547 > > App (I, I) 00:20:30 v #24548 > > |> eval 00:20:30 v #24549 > > |> _assert_eq I 00:20:30 v #24550 > > 00:20:30 v #24551 > > App (I, App (I, I)) 00:20:30 v #24552 > > |> eval 00:20:30 v #24553 > > |> _assert_eq I 00:20:30 v #24554 > > 00:20:30 v #24555 > > App (App (I, I), I) 00:20:30 v #24556 > > |> eval 00:20:30 v #24557 > > |> _assert_eq I 00:20:30 v #24558 > > 00:20:30 v #24559 > > App (App (App (I, I), I), I) 00:20:30 v #24560 > > |> eval 00:20:30 v #24561 > > |> _assert_eq I 00:20:30 v #24562 > > 00:20:30 v #24563 > > eval K 00:20:30 v #24564 > > |> _assert_eq K 00:20:30 v #24565 > > 00:20:30 v #24566 > > App (K, I) 00:20:30 v #24567 > > |> eval 00:20:30 v #24568 > > |> _assert_eq (App (K, I)) 00:20:30 v #24569 > > 00:20:30 v #24570 > > App (K, K) 00:20:30 v #24571 > > |> eval 00:20:30 v #24572 > > |> _assert_eq (App (K, K)) 00:20:30 v #24573 > > 00:20:30 v #24574 > > App (App (K, I), K) 00:20:30 v #24575 > > |> eval 00:20:30 v #24576 > > |> _assert_eq I 00:20:30 v #24577 > > 00:20:30 v #24578 > > App (App (K, K), I) 00:20:30 v #24579 > > |> eval 00:20:30 v #24580 > > |> _assert_eq K 00:20:30 v #24581 > > 00:20:30 v #24582 > > App (App (App (App (K, K), I), S), K) 00:20:30 v #24583 > > |> eval 00:20:30 v #24584 > > |> _assert_eq S 00:20:30 v #24585 > > 00:20:30 v #24586 > > eval S 00:20:30 v #24587 > > |> _assert_eq S 00:20:30 v #24588 > > 00:20:30 v #24589 > > App (App (App (S, I), I), I) 00:20:30 v #24590 > > |> eval 00:20:30 v #24591 > > |> _assert_eq I 00:20:30 v #24592 > > 00:20:30 v #24593 > > App (App (App (S, K), K), I) 00:20:30 v #24594 > > |> eval 00:20:30 v #24595 > > |> _assert_eq I 00:20:30 v #24596 > > 00:20:30 v #24597 > > App (App (App (S, K), I), (App (App (K, I), S))) 00:20:30 v #24598 > > |> eval 00:20:30 v #24599 > > |> _assert_eq I 00:20:30 v #24600 > > 00:20:30 v #24601 > > App (App (K, S), App (I, App (App (App (S, K), S), I))) 00:20:30 v #24602 > > |> eval 00:20:30 v #24603 > > |> _assert_eq S 00:20:30 v #24604 > > 00:20:30 v #24605 > > App (App (App (S, K), I), K) 00:20:30 v #24606 > > |> eval 00:20:30 v #24607 > > |> _assert_eq K 00:20:31 v #24608 > > 00:20:31 v #24609 > > ╭─[ 1.42s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:31 v #24610 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24611 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24612 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24613 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24614 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24615 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:20:31 v #24616 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3 (UH0_1, UH0_0) │ 00:20:31 v #24617 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3 (UH0_1, UH0_1) │ 00:20:31 v #24618 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24619 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:20:31 v #24620 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:20:31 v #24621 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:20:31 v #24622 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24623 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24624 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:20:31 v #24625 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:20:31 v #24626 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:20:31 v #24627 > > │ │ 00:20:31 v #24628 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:32 v #24629 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3706 } 00:20:32 v #24630 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/util.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:33 v #24631 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/util.dib.ipynb to html 00:20:33 v #24632 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:33 v #24633 > 00:00:09 v #7 ! validate(nb) 00:20:34 v #24634 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:34 v #24635 > 00:00:09 v #9 ! return _pygments_highlight( 00:20:34 v #24636 > 00:00:09 v #10 ! [NbConvertApp] Writing 284347 bytes to c:\home\git\polyglot\lib\spiral\util.dib.html 00:20:34 v #24637 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:20:34 v #24638 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:20:34 v #24639 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:34 v #24640 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:34 v #24641 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:34 v #24642 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4615 } 00:20:34 d #24643 runtime.execute_with_options_async / { exit_code = 0; output_length = 7402 } 00:20:34 d #27 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path util.dib --retries 3 00:20:34 d #24644 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path platform.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:34 v #24645 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) } 00:20:34 v #24646 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/platform.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/platform.dib" --output-path "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:36 v #24647 > > 00:20:36 v #24648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #24649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:36 v #24650 > > │ # platform │ 00:20:36 v #24651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:39 v #24652 > > 00:20:39 v #24653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:39 v #24654 > > open rust.rust_operators 00:20:40 v #24655 > > 00:20:40 v #24656 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:40 v #24657 > > //// test 00:20:40 v #24658 > > 00:20:40 v #24659 > > open testing 00:20:41 v #24660 > > 00:20:41 v #24661 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:41 v #24662 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:41 v #24663 > > │ ## fsharp │ 00:20:41 v #24664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:41 v #24665 > > 00:20:41 v #24666 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:41 v #24667 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:41 v #24668 > > │ ### os_platform │ 00:20:41 v #24669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:41 v #24670 > > 00:20:41 v #24671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:41 v #24672 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform' 00:20:41 v #24673 > > 00:20:41 v #24674 > > union os_platform = 00:20:41 v #24675 > > | FreeBSD 00:20:41 v #24676 > > | Linux 00:20:41 v #24677 > > | OSX 00:20:41 v #24678 > > | Windows 00:20:41 v #24679 > > 00:20:41 v #24680 > > inl os_platform = function 00:20:41 v #24681 > > | FreeBSD => $'`os_platform'.FreeBSD' : os_platform' 00:20:41 v #24682 > > | Linux => $'`os_platform'.Linux' : os_platform' 00:20:41 v #24683 > > | OSX => $'`os_platform'.OSX' : os_platform' 00:20:41 v #24684 > > | Windows => $'`os_platform'.Windows' : os_platform' 00:20:41 v #24685 > > 00:20:41 v #24686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:41 v #24687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:41 v #24688 > > │ ### run_platform │ 00:20:41 v #24689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:41 v #24690 > > 00:20:41 v #24691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:41 v #24692 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t = 00:20:41 v #24693 > > inl result = dyn true 00:20:41 v #24694 > > $'let mutable _run_platform_!result : `t option = None ' 00:20:41 v #24695 > > $'\n#if _FREEBSD' 00:20:41 v #24696 > > fn FreeBSD () |> emit_unit 00:20:41 v #24697 > > $'#endif\n#if _LINUX' 00:20:41 v #24698 > > fn Linux () |> emit_unit 00:20:41 v #24699 > > $'#endif\n#if _OSX' 00:20:41 v #24700 > > fn OSX () |> emit_unit 00:20:41 v #24701 > > $'#endif\n#if _WINDOWS' 00:20:41 v #24702 > > fn Windows () |> emit_unit 00:20:41 v #24703 > > $'#endif' 00:20:41 v #24704 > > $'|> fun x -> _run_platform_!result <- Some x' 00:20:41 v #24705 > > $'match _run_platform_!result with Some x -> x | None -> failwith 00:20:41 v #24706 > > "runtime.run_platform / _run_platform_!result=None"' 00:20:42 v #24707 > > 00:20:42 v #24708 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:42 v #24709 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:42 v #24710 > > │ ### is_os_platform │ 00:20:42 v #24711 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:42 v #24712 > > 00:20:42 v #24713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:42 v #24714 > > inl is_os_platform (x : os_platform') : bool = 00:20:42 v #24715 > > x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform' 00:20:42 v #24716 > > 00:20:42 v #24717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:42 v #24718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:42 v #24719 > > │ ### is_windows' │ 00:20:42 v #24720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:42 v #24721 > > 00:20:42 v #24722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:42 v #24723 > > inl is_windows' () : bool = 00:20:42 v #24724 > > run_platform function 00:20:42 v #24725 > > | Windows => fun () => true 00:20:42 v #24726 > > | _ => fun () => false 00:20:42 v #24727 > > 00:20:42 v #24728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:42 v #24729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:42 v #24730 > > │ ## platform │ 00:20:42 v #24731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:42 v #24732 > > 00:20:42 v #24733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:42 v #24734 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:42 v #24735 > > │ ### is_windows │ 00:20:42 v #24736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:42 v #24737 > > 00:20:42 v #24738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:42 v #24739 > > inl is_windows () : bool = 00:20:42 v #24740 > > run_target function 00:20:42 v #24741 > > | Rust _ => fun () => 00:20:42 v #24742 > > !\($'"cfg\!(windows)"') 00:20:42 v #24743 > > | Fsharp _ => fun () => 00:20:42 v #24744 > > Windows |> os_platform |> is_os_platform 00:20:42 v #24745 > > | target => fun () => failwith $'$"platform.is_windows / target: 00:20:42 v #24746 > > {!target}"' 00:20:43 v #24747 > > 00:20:43 v #24748 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:43 v #24749 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:43 v #24750 > > │ ### get_executable_suffix │ 00:20:43 v #24751 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:43 v #24752 > > 00:20:43 v #24753 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:43 v #24754 > > inl get_executable_suffix () = 00:20:43 v #24755 > > if is_windows () 00:20:43 v #24756 > > then ".exe" 00:20:43 v #24757 > > else "" 00:20:43 v #24758 > > 00:20:43 v #24759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:43 v #24760 > > //// test 00:20:43 v #24761 > > 00:20:43 v #24762 > > get_executable_suffix () 00:20:45 v #24763 > > 00:20:45 v #24764 > > ╭─[ 1.42s - return value ]─────────────────────────────────────────────────────╮ 00:20:45 v #24765 > > │ .exe │ 00:20:45 v #24766 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:45 v #24767 > > 00:20:45 v #24768 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:45 v #24769 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:45 v #24770 > > │ ## main │ 00:20:45 v #24771 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:45 v #24772 > > 00:20:45 v #24773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:45 v #24774 > > inl main () = 00:20:45 v #24775 > > $'let is_windows () = !is_windows ()' : () 00:20:45 v #24776 > > $'let get_executable_suffix () = !get_executable_suffix ()' : () 00:20:45 v #24777 > 00:00:10 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6081 } 00:20:45 v #24778 > 00:00:10 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:46 v #24779 > 00:00:12 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/platform.dib.ipynb to html 00:20:46 v #24780 > 00:00:12 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:46 v #24781 > 00:00:12 v #7 ! validate(nb) 00:20:47 v #24782 > 00:00:12 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:47 v #24783 > 00:00:12 v #9 ! return _pygments_highlight( 00:20:47 v #24784 > 00:00:12 v #10 ! [NbConvertApp] Writing 288080 bytes to c:\home\git\polyglot\lib\spiral\platform.dib.html 00:20:47 v #24785 > 00:00:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 } 00:20:47 v #24786 > 00:00:13 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 } 00:20:47 v #24787 > 00:00:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:48 v #24788 > 00:00:13 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:48 v #24789 > 00:00:13 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:48 v #24790 > 00:00:13 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 6998 } 00:20:48 d #24791 runtime.execute_with_options_async / { exit_code = 0; output_length = 9841 } 00:20:48 d #28 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path platform.dib --retries 3 00:20:48 d #24792 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path stream.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:48 v #24793 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) } 00:20:48 v #24794 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/stream.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/stream.dib" --output-path "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:49 v #24795 > > 00:20:49 v #24796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:49 v #24797 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:49 v #24798 > > │ # stream │ 00:20:49 v #24799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:53 v #24800 > > 00:20:53 v #24801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:53 v #24802 > > open rust.rust_operators 00:20:54 v #24803 > > 00:20:54 v #24804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:54 v #24805 > > //// test 00:20:54 v #24806 > > 00:20:54 v #24807 > > open testing 00:20:54 v #24808 > > 00:20:54 v #24809 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:54 v #24810 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:54 v #24811 > > │ ## stream │ 00:20:54 v #24812 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:54 v #24813 > > 00:20:54 v #24814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:54 v #24815 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:54 v #24816 > > │ ### stream │ 00:20:54 v #24817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:54 v #24818 > > 00:20:54 v #24819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:54 v #24820 > > union rec stream t = 00:20:54 v #24821 > > | StreamCons : t * (() -> stream t) 00:20:54 v #24822 > > | StreamNil 00:20:55 v #24823 > > 00:20:55 v #24824 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:55 v #24825 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:55 v #24826 > > │ ### fold │ 00:20:55 v #24827 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:55 v #24828 > > 00:20:55 v #24829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:55 v #24830 > > inl fold fn init s = 00:20:55 v #24831 > > inl rec body acc = function 00:20:55 v #24832 > > | StreamCons (st, fn') => loop (fn acc st) (fn' ()) 00:20:55 v #24833 > > | StreamNil => acc 00:20:55 v #24834 > > and inl loop acc = join_body body acc 00:20:55 v #24835 > > loop init s 00:20:55 v #24836 > > 00:20:55 v #24837 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:55 v #24838 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:55 v #24839 > > │ ### fold_back │ 00:20:55 v #24840 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:55 v #24841 > > 00:20:55 v #24842 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:55 v #24843 > > inl fold_back fn s init = 00:20:55 v #24844 > > inl rec body acc = function 00:20:55 v #24845 > > | StreamCons (st, fn') => fn st (loop acc (fn' ())) 00:20:55 v #24846 > > | StreamNil => acc 00:20:55 v #24847 > > and inl loop acc = join_body body acc 00:20:55 v #24848 > > loop init s 00:20:56 v #24849 > > 00:20:56 v #24850 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:56 v #24851 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:56 v #24852 > > │ ### to_list │ 00:20:56 v #24853 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:56 v #24854 > > 00:20:56 v #24855 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:56 v #24856 > > inl to_list s = 00:20:56 v #24857 > > (s, [[]]) 00:20:56 v #24858 > > ||> fold_back fun x acc => 00:20:56 v #24859 > > x :: acc 00:20:56 v #24860 > > 00:20:56 v #24861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:56 v #24862 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:56 v #24863 > > │ ### rev │ 00:20:56 v #24864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:56 v #24865 > > 00:20:56 v #24866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:56 v #24867 > > inl rev s = 00:20:56 v #24868 > > (StreamNil, s) 00:20:56 v #24869 > > ||> fold fun s x => 00:20:56 v #24870 > > StreamCons (x, fun () => s) 00:20:56 v #24871 > > 00:20:56 v #24872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:56 v #24873 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:56 v #24874 > > │ ### from_list │ 00:20:56 v #24875 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:56 v #24876 > > 00:20:56 v #24877 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:56 v #24878 > > inl from_list list = 00:20:56 v #24879 > > (list, StreamNil) 00:20:56 v #24880 > > ||> listm.foldBack fun x acc => 00:20:56 v #24881 > > StreamCons (x, fun () => acc) 00:20:57 v #24882 > > 00:20:57 v #24883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:57 v #24884 > > //// test 00:20:57 v #24885 > > 00:20:57 v #24886 > > listm.init 3i32 id 00:20:57 v #24887 > > |> from_list 00:20:57 v #24888 > > |> rev 00:20:57 v #24889 > > |> to_list 00:20:57 v #24890 > > |> _assert_eq [[ 2; 1; 0 ]] 00:20:58 v #24891 > > 00:20:58 v #24892 > > ╭─[ 1.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:58 v #24893 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) / expected: │ 00:20:58 v #24894 > > │ UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) │ 00:20:58 v #24895 > > │ │ 00:20:58 v #24896 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:58 v #24897 > > 00:20:58 v #24898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:58 v #24899 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:58 v #24900 > > │ ### try_item │ 00:20:58 v #24901 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:58 v #24902 > > 00:20:58 v #24903 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:58 v #24904 > > inl try_item i s = 00:20:58 v #24905 > > inl rec body i = function 00:20:58 v #24906 > > | StreamCons (x, _) when i <= 0 => Some x 00:20:58 v #24907 > > | StreamCons (_, fn) => loop (i - 1) (fn ()) 00:20:58 v #24908 > > | StreamNil => None 00:20:58 v #24909 > > and inl loop acc s' = 00:20:58 v #24910 > > match var_is acc, var_is s' with 00:20:58 v #24911 > > | false, false => body acc s' 00:20:58 v #24912 > > | _ => 00:20:58 v #24913 > > inl acc = dyn acc 00:20:58 v #24914 > > inl s' = dyn s' 00:20:58 v #24915 > > join body acc s' 00:20:58 v #24916 > > loop i s 00:20:58 v #24917 > > 00:20:58 v #24918 > > inl item i = 00:20:58 v #24919 > > try_item i >> optionm.value 00:20:59 v #24920 > > 00:20:59 v #24921 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:59 v #24922 > > //// test 00:20:59 v #24923 > > 00:20:59 v #24924 > > listm.init 10i32 id 00:20:59 v #24925 > > |> from_list 00:20:59 v #24926 > > |> item 9i32 00:20:59 v #24927 > > |> _assert_eq 9 00:20:59 v #24928 > > 00:20:59 v #24929 > > ╭─[ 379.65ms - stdout ]────────────────────────────────────────────────────────╮ 00:20:59 v #24930 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:20:59 v #24931 > > │ │ 00:20:59 v #24932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:59 v #24933 > > 00:20:59 v #24934 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:59 v #24935 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:59 v #24936 > > │ ### new_infinite_stream │ 00:20:59 v #24937 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:59 v #24938 > > 00:20:59 v #24939 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:59 v #24940 > > inl new_infinite_stream fn = 00:20:59 v #24941 > > inl rec loop n = 00:20:59 v #24942 > > StreamCons (fn n, fun () => loop (n + 1)) 00:20:59 v #24943 > > loop 0 00:20:59 v #24944 > > 00:20:59 v #24945 > > inl new_infinite_stream_ fn = 00:20:59 v #24946 > > let rec loop n = 00:20:59 v #24947 > > StreamCons (fn n, fun () => loop (n + 1)) 00:20:59 v #24948 > > loop 0 00:20:59 v #24949 > > 00:20:59 v #24950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:59 v #24951 > > //// test 00:20:59 v #24952 > > 00:20:59 v #24953 > > new_infinite_stream print_and_return 00:20:59 v #24954 > > |> item 4i32 00:20:59 v #24955 > > |> _assert_eq 4i32 00:21:00 v #24956 > > 00:21:00 v #24957 > > ╭─[ 493.92ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:00 v #24958 > > │ print_and_return / x: 0 │ 00:21:00 v #24959 > > │ print_and_return / x: 1 │ 00:21:00 v #24960 > > │ print_and_return / x: 2 │ 00:21:00 v #24961 > > │ print_and_return / x: 3 │ 00:21:00 v #24962 > > │ print_and_return / x: 4 │ 00:21:00 v #24963 > > │ __assert_eq / actual: 4 / expected: 4 │ 00:21:00 v #24964 > > │ │ 00:21:00 v #24965 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:00 v #24966 > > 00:21:00 v #24967 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:00 v #24968 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:00 v #24969 > > │ ### new_finite_stream │ 00:21:00 v #24970 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:00 v #24971 > > 00:21:00 v #24972 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:00 v #24973 > > inl new_finite_stream fn max = 00:21:00 v #24974 > > inl rec loop n = 00:21:00 v #24975 > > if n >= max 00:21:00 v #24976 > > then StreamNil 00:21:00 v #24977 > > else StreamCons (fn n, fun () => loop (n + 1)) 00:21:00 v #24978 > > loop 0 00:21:00 v #24979 > > 00:21:00 v #24980 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:00 v #24981 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:00 v #24982 > > │ ### memoize │ 00:21:00 v #24983 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:00 v #24984 > > 00:21:00 v #24985 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:00 v #24986 > > union memoized_stream t = 00:21:00 v #24987 > > | NotComputed : () -> stream t 00:21:00 v #24988 > > | Computed : stream t 00:21:00 v #24989 > > 00:21:00 v #24990 > > inl memoize s = 00:21:00 v #24991 > > inl rec body s = 00:21:00 v #24992 > > inl state = mut (NotComputed s) 00:21:00 v #24993 > > fun () => 00:21:00 v #24994 > > match *state with 00:21:00 v #24995 > > | Computed x => x 00:21:00 v #24996 > > | NotComputed fn => 00:21:00 v #24997 > > inl new_state = 00:21:00 v #24998 > > match fn () with 00:21:00 v #24999 > > | StreamNil => StreamNil 00:21:00 v #25000 > > | StreamCons (x, fn) => StreamCons (x, loop fn) 00:21:00 v #25001 > > state <- Computed new_state 00:21:00 v #25002 > > new_state 00:21:00 v #25003 > > and inl loop s' = join_body_unit body s s' 00:21:00 v #25004 > > loop (fun () => s) 00:21:01 v #25005 > > 00:21:01 v #25006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #25007 > > //// test 00:21:01 v #25008 > > 00:21:01 v #25009 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize 00:21:01 v #25010 > > 00:21:01 v #25011 > > memo_stream () 00:21:01 v #25012 > > |> item 3i32 00:21:01 v #25013 > > |> _assert_eq 3i32 00:21:01 v #25014 > > 00:21:01 v #25015 > > memo_stream () 00:21:01 v #25016 > > |> item 5i32 00:21:01 v #25017 > > |> _assert_eq 5i32 00:21:01 v #25018 > > 00:21:01 v #25019 > > ╭─[ 790.98ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:01 v #25020 > > │ print_and_return / x: 0 │ 00:21:01 v #25021 > > │ print_and_return / x: 1 │ 00:21:01 v #25022 > > │ print_and_return / x: 2 │ 00:21:01 v #25023 > > │ print_and_return / x: 3 │ 00:21:01 v #25024 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:21:01 v #25025 > > │ print_and_return / x: 4 │ 00:21:01 v #25026 > > │ print_and_return / x: 5 │ 00:21:01 v #25027 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:21:01 v #25028 > > │ │ 00:21:01 v #25029 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:01 v #25030 > > 00:21:01 v #25031 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #25032 > > //// test 00:21:01 v #25033 > > 00:21:01 v #25034 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize 00:21:01 v #25035 > > 00:21:01 v #25036 > > memo_stream () 00:21:01 v #25037 > > |> item 3i32 00:21:01 v #25038 > > |> _assert_eq 3i32 00:21:01 v #25039 > > 00:21:01 v #25040 > > memo_stream () 00:21:01 v #25041 > > |> item 5i32 00:21:01 v #25042 > > |> _assert_eq 5i32 00:21:02 v #25043 > > 00:21:02 v #25044 > > ╭─[ 518.89ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:02 v #25045 > > │ print_and_return / x: 0 │ 00:21:02 v #25046 > > │ print_and_return / x: 1 │ 00:21:02 v #25047 > > │ print_and_return / x: 2 │ 00:21:02 v #25048 > > │ print_and_return / x: 3 │ 00:21:02 v #25049 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:21:02 v #25050 > > │ print_and_return / x: 4 │ 00:21:02 v #25051 > > │ print_and_return / x: 5 │ 00:21:02 v #25052 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:21:02 v #25053 > > │ │ 00:21:02 v #25054 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:02 v #25055 > > 00:21:02 v #25056 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:02 v #25057 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:02 v #25058 > > │ ### unfold │ 00:21:02 v #25059 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:02 v #25060 > > 00:21:02 v #25061 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 v #25062 > > inl unfold f x0 = 00:21:02 v #25063 > > inl rec body x = 00:21:02 v #25064 > > match f x with 00:21:02 v #25065 > > | Some (x', y) => StreamCons (x', fun () => loop y) 00:21:02 v #25066 > > | None => StreamNil 00:21:02 v #25067 > > and inl loop x = join_body_unit body x0 x 00:21:02 v #25068 > > loop x0 00:21:02 v #25069 > > 00:21:02 v #25070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:02 v #25071 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:02 v #25072 > > │ ### iterate │ 00:21:02 v #25073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:02 v #25074 > > 00:21:02 v #25075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 v #25076 > > inl iterate f = 00:21:02 v #25077 > > fun x => Some (x, f x) 00:21:02 v #25078 > > |> unfold 00:21:03 v #25079 > > 00:21:03 v #25080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #25081 > > //// test 00:21:03 v #25082 > > 00:21:03 v #25083 > > iterate ((*) 2) 1i32 00:21:03 v #25084 > > |> item 10i32 00:21:03 v #25085 > > |> _assert_eq 1024 00:21:03 v #25086 > > 00:21:03 v #25087 > > ╭─[ 415.99ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:03 v #25088 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:21:03 v #25089 > > │ │ 00:21:03 v #25090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:03 v #25091 > > 00:21:03 v #25092 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:03 v #25093 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:03 v #25094 > > │ ### iterate' │ 00:21:03 v #25095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:03 v #25096 > > 00:21:03 v #25097 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #25098 > > inl iterate_map f m = 00:21:03 v #25099 > > fun x => 00:21:03 v #25100 > > m x 00:21:03 v #25101 > > |> optionm.map fun x => 00:21:03 v #25102 > > x, f x 00:21:03 v #25103 > > |> unfold 00:21:04 v #25104 > > 00:21:04 v #25105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #25106 > > //// test 00:21:04 v #25107 > > 00:21:04 v #25108 > > iterate_map ((*) 2) Some 1i32 00:21:04 v #25109 > > |> item 10i32 00:21:04 v #25110 > > |> _assert_eq 1024 00:21:04 v #25111 > > 00:21:04 v #25112 > > ╭─[ 501.91ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:04 v #25113 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:21:04 v #25114 > > │ │ 00:21:04 v #25115 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:04 v #25116 > > 00:21:04 v #25117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:04 v #25118 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:04 v #25119 > > │ ### take_while │ 00:21:04 v #25120 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:04 v #25121 > > 00:21:04 v #25122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #25123 > > inl take_while cond s = 00:21:04 v #25124 > > inl rec body i = function 00:21:04 v #25125 > > | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop 00:21:04 v #25126 > > (i + 1) (fn ())) 00:21:04 v #25127 > > | _ => StreamNil 00:21:04 v #25128 > > and inl loop i = join_body body i 00:21:04 v #25129 > > loop 0 s 00:21:05 v #25130 > > 00:21:05 v #25131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:05 v #25132 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:05 v #25133 > > │ ### sum │ 00:21:05 v #25134 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:05 v #25135 > > 00:21:05 v #25136 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #25137 > > inl sum seq = 00:21:05 v #25138 > > seq |> fold (+) 0 00:21:05 v #25139 > > 00:21:05 v #25140 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #25141 > > //// test 00:21:05 v #25142 > > 00:21:05 v #25143 > > listm.init 10i32 id 00:21:05 v #25144 > > |> from_list 00:21:05 v #25145 > > |> sum 00:21:05 v #25146 > > |> _assert_eq 45 00:21:05 v #25147 > > 00:21:05 v #25148 > > ╭─[ 431.50ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:05 v #25149 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:21:05 v #25150 > > │ │ 00:21:05 v #25151 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:05 v #25152 > > 00:21:05 v #25153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #25154 > > //// test 00:21:05 v #25155 > > 00:21:05 v #25156 > > new_finite_stream print_and_return 10i32 00:21:05 v #25157 > > |> take_while (fun n (_ : i32) => n < 5) 00:21:05 v #25158 > > |> sum 00:21:05 v #25159 > > |> _assert_eq 10 00:21:06 v #25160 > > 00:21:06 v #25161 > > ╭─[ 467.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:06 v #25162 > > │ print_and_return / x: 0 │ 00:21:06 v #25163 > > │ print_and_return / x: 1 │ 00:21:06 v #25164 > > │ print_and_return / x: 2 │ 00:21:06 v #25165 > > │ print_and_return / x: 3 │ 00:21:06 v #25166 > > │ print_and_return / x: 4 │ 00:21:06 v #25167 > > │ print_and_return / x: 5 │ 00:21:06 v #25168 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:21:06 v #25169 > > │ │ 00:21:06 v #25170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:06 v #25171 > > 00:21:06 v #25172 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #25173 > > //// test 00:21:06 v #25174 > > 00:21:06 v #25175 > > new_infinite_stream print_and_return 00:21:06 v #25176 > > |> take_while (fun n (_ : i32) => n < 5i32) 00:21:06 v #25177 > > |> sum 00:21:06 v #25178 > > |> _assert_eq 10 00:21:06 v #25179 > > 00:21:06 v #25180 > > ╭─[ 396.26ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:06 v #25181 > > │ print_and_return / x: 0 │ 00:21:06 v #25182 > > │ print_and_return / x: 1 │ 00:21:06 v #25183 > > │ print_and_return / x: 2 │ 00:21:06 v #25184 > > │ print_and_return / x: 3 │ 00:21:06 v #25185 > > │ print_and_return / x: 4 │ 00:21:06 v #25186 > > │ print_and_return / x: 5 │ 00:21:06 v #25187 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:21:06 v #25188 > > │ │ 00:21:06 v #25189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:06 v #25190 > > 00:21:06 v #25191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #25192 > > //// test 00:21:06 v #25193 > > 00:21:06 v #25194 > > iterate ((*) 6) 1i32 00:21:06 v #25195 > > |> take_while (fun _ i => i <= 7i32) 00:21:06 v #25196 > > |> to_list 00:21:06 v #25197 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]] 00:21:07 v #25198 > > 00:21:07 v #25199 > > ╭─[ 504.19ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:07 v #25200 > > │ __assert_eq / actual: UH0_1 │ 00:21:07 v #25201 > > │ (1, │ 00:21:07 v #25202 > > │ UH0_1 │ 00:21:07 v #25203 > > │ (6, │ 00:21:07 v #25204 > > │ UH0_1 │ 00:21:07 v #25205 > > │ (36, │ 00:21:07 v #25206 > > │ UH0_1 │ 00:21:07 v #25207 > > │ (216, │ 00:21:07 v #25208 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936, │ 00:21:07 v #25209 > > │ UH0_0)))))))) / expected: UH0_1 │ 00:21:07 v #25210 > > │ (1, │ 00:21:07 v #25211 > > │ UH0_1 │ 00:21:07 v #25212 > > │ (6, │ 00:21:07 v #25213 > > │ UH0_1 │ 00:21:07 v #25214 > > │ (36, │ 00:21:07 v #25215 > > │ UH0_1 │ 00:21:07 v #25216 > > │ (216, │ 00:21:07 v #25217 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936, │ 00:21:07 v #25218 > > │ UH0_0)))))))) │ 00:21:07 v #25219 > > │ │ 00:21:07 v #25220 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:07 v #25221 > > 00:21:07 v #25222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:07 v #25223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:07 v #25224 > > │ ### indexed │ 00:21:07 v #25225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:07 v #25226 > > 00:21:07 v #25227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #25228 > > inl indexed s = 00:21:07 v #25229 > > ((StreamNil, 0), s) 00:21:07 v #25230 > > ||> fold fun (acc, i) x => 00:21:07 v #25231 > > StreamCons ((i, x), fun () => acc), i + 1 00:21:07 v #25232 > > |> fst 00:21:07 v #25233 > > |> rev 00:21:07 v #25234 > > 00:21:07 v #25235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #25236 > > //// test 00:21:07 v #25237 > > 00:21:07 v #25238 > > listm.init 10i32 ((*) 2) 00:21:07 v #25239 > > |> from_list 00:21:07 v #25240 > > |> indexed 00:21:07 v #25241 > > |> item 5i32 00:21:07 v #25242 > > |> _assert_eq (5i32, 10i32) 00:21:08 v #25243 > > 00:21:08 v #25244 > > ╭─[ 491.35ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:08 v #25245 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10) │ 00:21:08 v #25246 > > │ │ 00:21:08 v #25247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:08 v #25248 > > 00:21:08 v #25249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #25250 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:08 v #25251 > > │ ### map │ 00:21:08 v #25252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:08 v #25253 > > 00:21:08 v #25254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #25255 > > inl map fn s = 00:21:08 v #25256 > > (s, StreamNil) 00:21:08 v #25257 > > ||> fold_back fun x acc => 00:21:08 v #25258 > > StreamCons (fn x, fun () => acc) 00:21:08 v #25259 > > 00:21:08 v #25260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #25261 > > //// test 00:21:08 v #25262 > > 00:21:08 v #25263 > > listm.init 10i32 id 00:21:08 v #25264 > > |> from_list 00:21:08 v #25265 > > |> map ((*) 2) 00:21:08 v #25266 > > |> item 5i32 00:21:08 v #25267 > > |> _assert_eq 10i32 00:21:09 v #25268 > > 00:21:09 v #25269 > > ╭─[ 398.22ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:09 v #25270 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:21:09 v #25271 > > │ │ 00:21:09 v #25272 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:09 v #25273 > > 00:21:09 v #25274 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #25275 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:09 v #25276 > > │ ### zip_with │ 00:21:09 v #25277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:09 v #25278 > > 00:21:09 v #25279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #25280 > > inl zip_with fn s1 s2 = 00:21:09 v #25281 > > inl rec loop s1 s2 = 00:21:09 v #25282 > > match s1, s2 with 00:21:09 v #25283 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:21:09 v #25284 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:21:09 v #25285 > > | StreamNil, _ | _, StreamNil => StreamNil 00:21:09 v #25286 > > loop s1 s2 00:21:09 v #25287 > > 00:21:09 v #25288 > > inl zip_with_ fn s1 s2 = 00:21:09 v #25289 > > let rec loop s1 s2 = 00:21:09 v #25290 > > match s1, s2 with 00:21:09 v #25291 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:21:09 v #25292 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:21:09 v #25293 > > | StreamNil, _ | _, StreamNil => StreamNil 00:21:09 v #25294 > > loop s1 s2 00:21:09 v #25295 > > 00:21:09 v #25296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #25297 > > //// test 00:21:09 v #25298 > > 00:21:09 v #25299 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:21:09 v #25300 > > ||> zip_with (+) 00:21:09 v #25301 > > |> item 2i32 00:21:09 v #25302 > > |> _assert_eq 6 00:21:09 v #25303 > > 00:21:09 v #25304 > > ╭─[ 432.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:09 v #25305 > > │ __assert_eq / actual: 6 / expected: 6 │ 00:21:09 v #25306 > > │ │ 00:21:09 v #25307 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:09 v #25308 > > 00:21:09 v #25309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #25310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:09 v #25311 > > │ ### zip │ 00:21:09 v #25312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:09 v #25313 > > 00:21:09 v #25314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #25315 > > inl zip s1 s2 = 00:21:09 v #25316 > > zip_with pair s1 s2 00:21:09 v #25317 > > 00:21:09 v #25318 > > inl zip_ s1 s2 = 00:21:09 v #25319 > > zip_with_ pair s1 s2 00:21:10 v #25320 > > 00:21:10 v #25321 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:10 v #25322 > > //// test 00:21:10 v #25323 > > 00:21:10 v #25324 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:21:10 v #25325 > > ||> zip 00:21:10 v #25326 > > |> item 5i32 00:21:10 v #25327 > > |> _assert_eq (5, 10) 00:21:10 v #25328 > > 00:21:10 v #25329 > > ╭─[ 473.15ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:10 v #25330 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10) │ 00:21:10 v #25331 > > │ │ 00:21:10 v #25332 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:10 v #25333 > > 00:21:10 v #25334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:10 v #25335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:10 v #25336 > > │ ### unzip │ 00:21:10 v #25337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:10 v #25338 > > 00:21:10 v #25339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:10 v #25340 > > inl unzip s = 00:21:10 v #25341 > > inl rec body s = 00:21:10 v #25342 > > match s with 00:21:10 v #25343 > > | StreamCons ((x, y), fn) => 00:21:10 v #25344 > > inl xs, ys = loop (fn ()) 00:21:10 v #25345 > > StreamCons (x, fun () => xs), StreamCons (y, fun () => ys) 00:21:10 v #25346 > > | StreamNil => pair StreamNil StreamNil 00:21:10 v #25347 > > and inl loop x = 00:21:10 v #25348 > > if var_is x |> not 00:21:10 v #25349 > > then body x 00:21:10 v #25350 > > else 00:21:10 v #25351 > > inl x = dyn x 00:21:10 v #25352 > > join body x 00:21:10 v #25353 > > loop s 00:21:11 v #25354 > > 00:21:11 v #25355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:11 v #25356 > > //// test 00:21:11 v #25357 > > 00:21:11 v #25358 > > listm.init 10i32 id 00:21:11 v #25359 > > |> listm.map (fun x => x, x) 00:21:11 v #25360 > > |> from_list 00:21:11 v #25361 > > |> unzip 00:21:11 v #25362 > > |> fun x, y => 00:21:11 v #25363 > > x |> sum 00:21:11 v #25364 > > |> _assert_eq 45 00:21:11 v #25365 > > 00:21:11 v #25366 > > y |> sum 00:21:11 v #25367 > > |> _assert_eq 45 00:21:11 v #25368 > > 00:21:11 v #25369 > > ╭─[ 459.71ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:11 v #25370 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:21:11 v #25371 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:21:11 v #25372 > > │ │ 00:21:11 v #25373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:11 v #25374 > > 00:21:11 v #25375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:11 v #25376 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:11 v #25377 > > │ ## rust │ 00:21:11 v #25378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:11 v #25379 > > 00:21:11 v #25380 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:11 v #25381 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:11 v #25382 > > │ ### io_error │ 00:21:11 v #25383 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:11 v #25384 > > 00:21:11 v #25385 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:11 v #25386 > > nominal io_error = 00:21:11 v #25387 > > `( 00:21:11 v #25388 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:11 v #25389 > > Fable.Core.Emit(\"std::io::Error\")>]]\ntype std_io_Error = class 00:21:11 v #25390 > > end\n#else\ntype std_io_Error = string\n#endif\n" 00:21:11 v #25391 > > $'' : $'std_io_Error' 00:21:11 v #25392 > > ) 00:21:12 v #25393 > > 00:21:12 v #25394 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:12 v #25395 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:12 v #25396 > > │ ### new_io_error │ 00:21:12 v #25397 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:12 v #25398 > > 00:21:12 v #25399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:12 v #25400 > > inl new_io_error (text : string) : io_error = 00:21:12 v #25401 > > run_target_args (fun () => text) function 00:21:12 v #25402 > > | Rust _ => fun text => 00:21:12 v #25403 > > !\\(text, $'"std::io::Error::new(std::io::ErrorKind::Other, &*$0)"') 00:21:12 v #25404 > > | _ => fun text => text |> unbox 00:21:12 v #25405 > > 00:21:12 v #25406 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:12 v #25407 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:12 v #25408 > > │ ### buf_reader │ 00:21:12 v #25409 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:12 v #25410 > > 00:21:12 v #25411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:12 v #25412 > > nominal buf_reader t = 00:21:12 v #25413 > > `( 00:21:12 v #25414 > > backend_switch `(()) `({}) { 00:21:12 v #25415 > > Fsharp = 00:21:12 v #25416 > > (fun () => 00:21:12 v #25417 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:12 v #25418 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype 00:21:12 v #25419 > > std_io_BufReader<'T> = class end" 00:21:12 v #25420 > > ) : () -> () 00:21:12 v #25421 > > } 00:21:12 v #25422 > > $'' : $'std_io_BufReader<`t>' 00:21:12 v #25423 > > ) 00:21:13 v #25424 > > 00:21:13 v #25425 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:13 v #25426 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:13 v #25427 > > │ ### cursor │ 00:21:13 v #25428 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:13 v #25429 > > 00:21:13 v #25430 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:13 v #25431 > > nominal cursor t = 00:21:13 v #25432 > > `( 00:21:13 v #25433 > > backend_switch `(()) `({}) { 00:21:13 v #25434 > > Fsharp = 00:21:13 v #25435 > > (fun () => 00:21:13 v #25436 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:13 v #25437 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> = 00:21:13 v #25438 > > class end" 00:21:13 v #25439 > > ) : () -> () 00:21:13 v #25440 > > } 00:21:13 v #25441 > > $'' : $'std_io_Cursor<`t>' 00:21:13 v #25442 > > ) 00:21:13 v #25443 > > 00:21:13 v #25444 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:13 v #25445 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:13 v #25446 > > │ ### buf_reader_tokio │ 00:21:13 v #25447 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:13 v #25448 > > 00:21:13 v #25449 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:13 v #25450 > > nominal buf_reader_tokio t = 00:21:13 v #25451 > > `( 00:21:13 v #25452 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:13 v #25453 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype 00:21:13 v #25454 > > tokio_io_BufReader<'T> = class end" 00:21:13 v #25455 > > $'' : $'tokio_io_BufReader<`t>' 00:21:13 v #25456 > > ) 00:21:14 v #25457 > > 00:21:14 v #25458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:14 v #25459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:14 v #25460 > > │ ### new_buf_reader │ 00:21:14 v #25461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:14 v #25462 > > 00:21:14 v #25463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:14 v #25464 > > inl new_buf_reader forall t. (x : t) : buf_reader t = 00:21:14 v #25465 > > !\\(x, $'"std::io::BufReader::new($0)"') 00:21:14 v #25466 > > 00:21:14 v #25467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:14 v #25468 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:14 v #25469 > > │ ### new_cursor │ 00:21:14 v #25470 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:14 v #25471 > > 00:21:14 v #25472 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:14 v #25473 > > inl new_cursor forall t. (x : t) : cursor t = 00:21:14 v #25474 > > !\($'"std::io::Cursor::new(!x)"') 00:21:14 v #25475 > > 00:21:14 v #25476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:14 v #25477 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:14 v #25478 > > │ ### lines │ 00:21:14 v #25479 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:14 v #25480 > > 00:21:14 v #25481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:14 v #25482 > > nominal lines t = 00:21:14 v #25483 > > `( 00:21:14 v #25484 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:14 v #25485 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> = 00:21:14 v #25486 > > class end" 00:21:14 v #25487 > > $'' : $'std_io_Lines<`t>' 00:21:14 v #25488 > > ) 00:21:15 v #25489 > > 00:21:15 v #25490 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:15 v #25491 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:15 v #25492 > > │ ### buf_read_lines │ 00:21:15 v #25493 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:15 v #25494 > > 00:21:15 v #25495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:15 v #25496 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t) 00:21:15 v #25497 > > = 00:21:15 v #25498 > > !\($'"std::io::BufRead::lines(!buf_reader)"') 00:21:15 v #25499 > > 00:21:15 v #25500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:15 v #25501 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:15 v #25502 > > │ ### decode_reader_bytes │ 00:21:15 v #25503 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:15 v #25504 > > 00:21:15 v #25505 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:15 v #25506 > > nominal decode_reader_bytes t u = 00:21:15 v #25507 > > `( 00:21:15 v #25508 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:15 v #25509 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype 00:21:15 v #25510 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end" 00:21:15 v #25511 > > $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>' 00:21:15 v #25512 > > ) 00:21:16 v #25513 > > 00:21:16 v #25514 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 v #25515 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 v #25516 > > │ ### decode_reader_bytes_build │ 00:21:16 v #25517 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 v #25518 > > 00:21:16 v #25519 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 v #25520 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec 00:21:16 v #25521 > > u8) = 00:21:16 v #25522 > > 00:21:16 v #25523 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:21:16 v #25524 > > :UTF_8)).build(!x)"') 00:21:16 v #25525 > > 00:21:16 v #25526 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:21:16 v #25527 > > :UTF_8)).utf8_passthru(true).build(!x)"') 00:21:16 v #25528 > > !\\(x, 00:21:16 v #25529 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0) 00:21:16 v #25530 > > "') 00:21:16 v #25531 > > // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"') 00:21:16 v #25532 > > 00:21:16 v #25533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 v #25534 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 v #25535 > > │ ### buf_reader_read │ 00:21:16 v #25536 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 v #25537 > > 00:21:16 v #25538 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 v #25539 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader : 00:21:16 v #25540 > > buf_reader el) : resultm.result' unativeint io_error = 00:21:16 v #25541 > > (!\($'"true; let mut !slice = !slice"') : bool) |> ignore 00:21:16 v #25542 > > !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"') 00:21:17 v #25543 > > 00:21:17 v #25544 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #25545 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 v #25546 > > │ ### io_read_by_ref │ 00:21:17 v #25547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 v #25548 > > 00:21:17 v #25549 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #25550 > > inl io_read_by_ref forall t. (lines : lines t) : lines t = 00:21:17 v #25551 > > !\\(lines, $'"std::io::Read::by_ref($0)"') 00:21:17 v #25552 > 00:00:29 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 34270 } 00:21:17 v #25553 > 00:00:29 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:18 v #25554 > 00:00:30 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/stream.dib.ipynb to html 00:21:18 v #25555 > 00:00:30 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:18 v #25556 > 00:00:30 v #7 ! validate(nb) 00:21:19 v #25557 > 00:00:31 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:19 v #25558 > 00:00:31 v #9 ! return _pygments_highlight( 00:21:19 v #25559 > 00:00:31 v #10 ! [NbConvertApp] Writing 372366 bytes to c:\home\git\polyglot\lib\spiral\stream.dib.html 00:21:20 v #25560 > 00:00:31 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:21:20 v #25561 > 00:00:31 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:21:20 v #25562 > 00:00:31 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:20 v #25563 > 00:00:32 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:20 v #25564 > 00:00:32 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:20 v #25565 > 00:00:32 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 35183 } 00:21:20 d #25566 runtime.execute_with_options_async / { exit_code = 0; output_length = 39264 } 00:21:20 d #29 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path stream.dib --retries 3 00:21:20 d #25567 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path threading.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:20 v #25568 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) } 00:21:20 v #25569 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/threading.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/threading.dib" --output-path "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:22 v #25570 > > 00:21:22 v #25571 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #25572 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:22 v #25573 > > │ # threading │ 00:21:22 v #25574 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:25 v #25575 > > 00:21:25 v #25576 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #25577 > > open rust 00:21:25 v #25578 > > open rust_operators 00:21:26 v #25579 > > 00:21:26 v #25580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:26 v #25581 > > //// test 00:21:26 v #25582 > > 00:21:26 v #25583 > > open testing 00:21:26 v #25584 > > 00:21:26 v #25585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:26 v #25586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:26 v #25587 > > │ ## rust │ 00:21:26 v #25588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:26 v #25589 > > 00:21:26 v #25590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:26 v #25591 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:26 v #25592 > > │ ### sleep │ 00:21:26 v #25593 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:26 v #25594 > > 00:21:26 v #25595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:26 v #25596 > > inl sleep (duration : date_time.duration) : () = 00:21:26 v #25597 > > inl duration = join duration 00:21:26 v #25598 > > !\($'"std::thread::sleep(!duration)"') 00:21:27 v #25599 > > 00:21:27 v #25600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:27 v #25601 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:27 v #25602 > > │ ### join_handle │ 00:21:27 v #25603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:27 v #25604 > > 00:21:27 v #25605 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:27 v #25606 > > nominal join_handle t = 00:21:27 v #25607 > > `( 00:21:27 v #25608 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:27 v #25609 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype 00:21:27 v #25610 > > std_thread_JoinHandle<'T> = class end" 00:21:27 v #25611 > > $'' : $'std_thread_JoinHandle<`t>' 00:21:27 v #25612 > > ) 00:21:27 v #25613 > > 00:21:27 v #25614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:27 v #25615 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:27 v #25616 > > │ ### spawn │ 00:21:27 v #25617 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:27 v #25618 > > 00:21:27 v #25619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:27 v #25620 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t = 00:21:27 v #25621 > > if flag = 1u8 00:21:27 v #25622 > > then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool) 00:21:27 v #25623 > > |> ignore 00:21:27 v #25624 > > else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |> 00:21:27 v #25625 > > ignore 00:21:27 v #25626 > > 00:21:27 v #25627 > > let x' = x () 00:21:27 v #25628 > > inl x' = join x' 00:21:27 v #25629 > > 00:21:27 v #25630 > > x' |> rust.fix_closure depth 00:21:27 v #25631 > > 00:21:27 v #25632 > > !\($'"__spawn"') 00:21:27 v #25633 > > 00:21:27 v #25634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:27 v #25635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:27 v #25636 > > │ ### join' │ 00:21:27 v #25637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:27 v #25638 > > 00:21:27 v #25639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:27 v #25640 > > inl join' forall t. 00:21:27 v #25641 > > (x : join_handle t) 00:21:27 v #25642 > > : resultm.result' 00:21:27 v #25643 > > t 00:21:27 v #25644 > > ( 00:21:27 v #25645 > > rust.box ( 00:21:27 v #25646 > > rust.lifetime_ref 00:21:27 v #25647 > > rust.dyn' 00:21:27 v #25648 > > ( 00:21:27 v #25649 > > rust.lifetime_join 00:21:27 v #25650 > > rust.any 00:21:27 v #25651 > > ( 00:21:27 v #25652 > > rust.lifetime_ref 00:21:27 v #25653 > > rust.send 00:21:27 v #25654 > > rust.static_lifetime 00:21:27 v #25655 > > ) 00:21:27 v #25656 > > ) 00:21:27 v #25657 > > ) 00:21:27 v #25658 > > ) = 00:21:27 v #25659 > > !\\(x, $'"std::thread::JoinHandle::join($0)"') 00:21:28 v #25660 > > 00:21:28 v #25661 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:28 v #25662 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:28 v #25663 > > │ ### arc │ 00:21:28 v #25664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:28 v #25665 > > 00:21:28 v #25666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:28 v #25667 > > nominal arc t = 00:21:28 v #25668 > > `( 00:21:28 v #25669 > > backend_switch `(()) `({}) { 00:21:28 v #25670 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:28 v #25671 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> = 00:21:28 v #25672 > > class end") : () -> () 00:21:28 v #25673 > > } 00:21:28 v #25674 > > $'' : $'std_sync_Arc<`t>' 00:21:28 v #25675 > > ) 00:21:28 v #25676 > > 00:21:28 v #25677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:28 v #25678 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:28 v #25679 > > │ ### new_arc │ 00:21:28 v #25680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:28 v #25681 > > 00:21:28 v #25682 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:28 v #25683 > > inl new_arc forall t. (x : t) : arc t = 00:21:28 v #25684 > > !\($'"std::sync::Arc::new(!x)"') 00:21:29 v #25685 > > 00:21:29 v #25686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:29 v #25687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:29 v #25688 > > │ ### mutex │ 00:21:29 v #25689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:29 v #25690 > > 00:21:29 v #25691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:29 v #25692 > > nominal mutex t = 00:21:29 v #25693 > > `( 00:21:29 v #25694 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:29 v #25695 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> = 00:21:29 v #25696 > > class end" 00:21:29 v #25697 > > $'' : $'std_sync_Mutex<`t>' 00:21:29 v #25698 > > ) 00:21:29 v #25699 > > 00:21:29 v #25700 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:29 v #25701 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:29 v #25702 > > │ ### new_mutex │ 00:21:29 v #25703 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:29 v #25704 > > 00:21:29 v #25705 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:29 v #25706 > > inl new_mutex forall t. (x : t) : mutex t = 00:21:29 v #25707 > > !\($'"std::sync::Mutex::new(!x)"') 00:21:30 v #25708 > > 00:21:30 v #25709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:30 v #25710 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:30 v #25711 > > │ ### new_mutex_mut │ 00:21:30 v #25712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:30 v #25713 > > 00:21:30 v #25714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:30 v #25715 > > inl new_mutex_mut forall t. (x : rust.ref (rust.mut' t)) : mutex t = 00:21:30 v #25716 > > !\($'"std::sync::Mutex::new(!x)"') 00:21:30 v #25717 > > 00:21:30 v #25718 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:30 v #25719 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:30 v #25720 > > │ ### rw_lock │ 00:21:30 v #25721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:30 v #25722 > > 00:21:30 v #25723 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:30 v #25724 > > nominal rw_lock t = 00:21:30 v #25725 > > `( 00:21:30 v #25726 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:30 v #25727 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T> 00:21:30 v #25728 > > = class end" 00:21:30 v #25729 > > $'' : $'std_sync_RwLock<`t>' 00:21:30 v #25730 > > ) 00:21:30 v #25731 > > 00:21:30 v #25732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:30 v #25733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:30 v #25734 > > │ ### new_rw_lock │ 00:21:30 v #25735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:30 v #25736 > > 00:21:30 v #25737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:30 v #25738 > > inl new_rw_lock forall t. (x : t) : rw_lock t = 00:21:30 v #25739 > > !\\(x, $'"std::sync::RwLock::new($0)"') 00:21:31 v #25740 > > 00:21:31 v #25741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:31 v #25742 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:31 v #25743 > > │ ### new_arc_mutex │ 00:21:31 v #25744 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:31 v #25745 > > 00:21:31 v #25746 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:31 v #25747 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) = 00:21:31 v #25748 > > x |> new_mutex |> new_arc 00:21:31 v #25749 > > 00:21:31 v #25750 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:31 v #25751 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:31 v #25752 > > │ ### new_arc_rw_lock │ 00:21:31 v #25753 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:31 v #25754 > > 00:21:31 v #25755 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:31 v #25756 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) = 00:21:31 v #25757 > > x |> new_rw_lock |> new_arc 00:21:32 v #25758 > > 00:21:32 v #25759 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:32 v #25760 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:32 v #25761 > > │ ### arc_clone │ 00:21:32 v #25762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:32 v #25763 > > 00:21:32 v #25764 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:32 v #25765 > > inl arc_clone forall t. (x : arc t) : arc t = 00:21:32 v #25766 > > inl x = join x 00:21:32 v #25767 > > !\($'"std::sync::Arc::clone(&!x)"') 00:21:32 v #25768 > > 00:21:32 v #25769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:32 v #25770 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:32 v #25771 > > │ ### arc_ptr_eq │ 00:21:32 v #25772 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:32 v #25773 > > 00:21:32 v #25774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:32 v #25775 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool = 00:21:32 v #25776 > > !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"') 00:21:33 v #25777 > > 00:21:33 v #25778 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:33 v #25779 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:33 v #25780 > > │ ### arc_try_unwrap │ 00:21:33 v #25781 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:33 v #25782 > > 00:21:33 v #25783 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:33 v #25784 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) = 00:21:33 v #25785 > > !\\(x, $'"std::sync::Arc::try_unwrap($0)"') 00:21:33 v #25786 > > 00:21:33 v #25787 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:33 v #25788 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:33 v #25789 > > │ ### arc_into_raw │ 00:21:33 v #25790 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:33 v #25791 > > 00:21:33 v #25792 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:33 v #25793 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t = 00:21:33 v #25794 > > !\\(x, $'"std::sync::Arc::into_raw($0)"') 00:21:33 v #25795 > > 00:21:33 v #25796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:33 v #25797 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:33 v #25798 > > │ ### arc_from_raw │ 00:21:33 v #25799 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:33 v #25800 > > 00:21:33 v #25801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:33 v #25802 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t = 00:21:33 v #25803 > > !\\(x, $'"std::sync::Arc::from_raw($0)"') 00:21:34 v #25804 > > 00:21:34 v #25805 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #25806 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:34 v #25807 > > │ ### partial_eq_wrapper_arc_eq │ 00:21:34 v #25808 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:34 v #25809 > > 00:21:34 v #25810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #25811 > > inl partial_eq_wrapper_arc_eq forall t. 00:21:34 v #25812 > > (self : rust.ref (rust.partial_eq_wrapper (arc t))) 00:21:34 v #25813 > > (other : rust.ref (rust.partial_eq_wrapper (arc t))) 00:21:34 v #25814 > > = 00:21:34 v #25815 > > self 00:21:34 v #25816 > > |> rust.unwrap_0_ref 00:21:34 v #25817 > > |> arc_ptr_eq ( 00:21:34 v #25818 > > other 00:21:34 v #25819 > > |> rust.unwrap_0_ref 00:21:34 v #25820 > > ) 00:21:34 v #25821 > > 00:21:34 v #25822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #25823 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:34 v #25824 > > │ ### new_partial_eq_wrapper_arc │ 00:21:34 v #25825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:34 v #25826 > > 00:21:34 v #25827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #25828 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper 00:21:34 v #25829 > > (arc t) = 00:21:34 v #25830 > > x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq 00:21:35 v #25831 > > 00:21:35 v #25832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:35 v #25833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:35 v #25834 > > │ ### mutex_guard │ 00:21:35 v #25835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:35 v #25836 > > 00:21:35 v #25837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:35 v #25838 > > nominal mutex_guard t = 00:21:35 v #25839 > > `( 00:21:35 v #25840 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:35 v #25841 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype 00:21:35 v #25842 > > std_sync_MutexGuard<'T> = class end" 00:21:35 v #25843 > > $'' : $'std_sync_MutexGuard<`t>' 00:21:35 v #25844 > > ) 00:21:35 v #25845 > > 00:21:35 v #25846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:35 v #25847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:35 v #25848 > > │ ### rw_lock_read_guard │ 00:21:35 v #25849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:35 v #25850 > > 00:21:35 v #25851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:35 v #25852 > > nominal rw_lock_read_guard t = 00:21:35 v #25853 > > `( 00:21:35 v #25854 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:35 v #25855 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype 00:21:35 v #25856 > > std_sync_RwLockReadGuard<'T> = class end" 00:21:35 v #25857 > > $'' : $'std_sync_RwLockReadGuard<`t>' 00:21:35 v #25858 > > ) 00:21:36 v #25859 > > 00:21:36 v #25860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:36 v #25861 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:36 v #25862 > > │ ### rw_lock_write_guard │ 00:21:36 v #25863 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:36 v #25864 > > 00:21:36 v #25865 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:36 v #25866 > > nominal rw_lock_write_guard t = 00:21:36 v #25867 > > `( 00:21:36 v #25868 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:36 v #25869 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype 00:21:36 v #25870 > > std_sync_RwLockWriteGuard<'T> = class end" 00:21:36 v #25871 > > $'' : $'std_sync_RwLockWriteGuard<`t>' 00:21:36 v #25872 > > ) 00:21:36 v #25873 > > 00:21:36 v #25874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:36 v #25875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:36 v #25876 > > │ ### poison_error │ 00:21:36 v #25877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:36 v #25878 > > 00:21:36 v #25879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:36 v #25880 > > nominal poison_error t = 00:21:36 v #25881 > > `( 00:21:36 v #25882 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:36 v #25883 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype 00:21:36 v #25884 > > std_sync_PoisonError<'T> = class end" 00:21:36 v #25885 > > $'' : $'std_sync_PoisonError<`t>' 00:21:36 v #25886 > > ) 00:21:37 v #25887 > > 00:21:37 v #25888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:37 v #25889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:37 v #25890 > > │ ### try_lock_error │ 00:21:37 v #25891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:37 v #25892 > > 00:21:37 v #25893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:37 v #25894 > > nominal try_lock_error t = 00:21:37 v #25895 > > `( 00:21:37 v #25896 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:37 v #25897 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype 00:21:37 v #25898 > > std_sync_TryLockError<'T> = class end" 00:21:37 v #25899 > > $'' : $'std_sync_TryLockError<`t>' 00:21:37 v #25900 > > ) 00:21:37 v #25901 > > 00:21:37 v #25902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:37 v #25903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:37 v #25904 > > │ ### arc_mutex_lock │ 00:21:37 v #25905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:37 v #25906 > > 00:21:37 v #25907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:37 v #25908 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard 00:21:37 v #25909 > > t) (poison_error (mutex_guard t)) = 00:21:37 v #25910 > > inl x = x |> rust.emit 00:21:37 v #25911 > > !\($'"!x.lock()"') 00:21:37 v #25912 > > 00:21:37 v #25913 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:37 v #25914 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:37 v #25915 > > │ ### arc_rw_lock_read │ 00:21:37 v #25916 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:37 v #25917 > > 00:21:37 v #25918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:37 v #25919 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:37 v #25920 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) = 00:21:37 v #25921 > > inl x = x |> rust.emit 00:21:37 v #25922 > > !\($'"!x.read()"') 00:21:38 v #25923 > > 00:21:38 v #25924 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:38 v #25925 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:38 v #25926 > > │ ### arc_rw_lock_write │ 00:21:38 v #25927 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:38 v #25928 > > 00:21:38 v #25929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:38 v #25930 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:38 v #25931 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) = 00:21:38 v #25932 > > inl x = x |> rust.emit 00:21:38 v #25933 > > !\($'"!x.write()"') 00:21:38 v #25934 > > 00:21:38 v #25935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:38 v #25936 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:38 v #25937 > > │ ### arc_rw_lock_try_read │ 00:21:38 v #25938 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:38 v #25939 > > 00:21:38 v #25940 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:38 v #25941 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:38 v #25942 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) = 00:21:38 v #25943 > > inl x = x |> rust.emit 00:21:38 v #25944 > > !\($'"!x.try_read()"') 00:21:39 v #25945 > > 00:21:39 v #25946 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:39 v #25947 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:39 v #25948 > > │ ### arc_rw_lock_try_write │ 00:21:39 v #25949 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:39 v #25950 > > 00:21:39 v #25951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:39 v #25952 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:39 v #25953 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) = 00:21:39 v #25954 > > inl x = x |> rust.emit 00:21:39 v #25955 > > !\($'"!x.try_write()"') 00:21:39 v #25956 > > 00:21:39 v #25957 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:39 v #25958 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:39 v #25959 > > │ ### mutex_guard_ref │ 00:21:39 v #25960 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:39 v #25961 > > 00:21:39 v #25962 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:39 v #25963 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t = 00:21:39 v #25964 > > !\\(x, $'"&$0"') 00:21:40 v #25965 > > 00:21:40 v #25966 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:40 v #25967 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:40 v #25968 > > │ ### rw_lock_read_guard_ref │ 00:21:40 v #25969 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:40 v #25970 > > 00:21:40 v #25971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:40 v #25972 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t = 00:21:40 v #25973 > > !\\(x, $'"&$0"') 00:21:40 v #25974 > > 00:21:40 v #25975 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:40 v #25976 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:40 v #25977 > > │ ### rw_lock_write_guard_ref │ 00:21:40 v #25978 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:40 v #25979 > > 00:21:40 v #25980 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:40 v #25981 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t = 00:21:40 v #25982 > > !\\(x, $'"&$0"') 00:21:40 v #25983 > > 00:21:40 v #25984 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:40 v #25985 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:40 v #25986 > > │ ### mutex_guard_ref_mut │ 00:21:40 v #25987 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:40 v #25988 > > 00:21:40 v #25989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:40 v #25990 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) = 00:21:40 v #25991 > > inl x = join x 00:21:40 v #25992 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:40 v #25993 > > !\\(x, $'"&mut $0"') 00:21:41 v #25994 > > 00:21:41 v #25995 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:41 v #25996 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:41 v #25997 > > │ ### mutex_guard_ref_mut' │ 00:21:41 v #25998 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:41 v #25999 > > 00:21:41 v #26000 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:41 v #26001 > > inl mutex_guard_ref_mut' forall t. (x : mutex_guard (rust.ref (rust.mut' t))) : 00:21:41 v #26002 > > rust.ref (rust.mut' t) = 00:21:41 v #26003 > > inl x = x |> rust.emit 00:21:41 v #26004 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:41 v #26005 > > !\\(x, $'"&mut $0"') 00:21:41 v #26006 > > 00:21:41 v #26007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:41 v #26008 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:41 v #26009 > > │ ### mutex_guard_as_mut │ 00:21:41 v #26010 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:41 v #26011 > > 00:21:41 v #26012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:41 v #26013 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t 00:21:41 v #26014 > > (rust.ref (rust.mut' u)) = 00:21:41 v #26015 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:41 v #26016 > > !\\(x, $'"$0.as_mut()"') 00:21:42 v #26017 > > 00:21:42 v #26018 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:42 v #26019 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:42 v #26020 > > │ ### channel_receiver │ 00:21:42 v #26021 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:42 v #26022 > > 00:21:42 v #26023 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:42 v #26024 > > nominal channel_receiver t = 00:21:42 v #26025 > > `( 00:21:42 v #26026 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:42 v #26027 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype 00:21:42 v #26028 > > std_sync_mpsc_Receiver<'T> = class end" 00:21:42 v #26029 > > $'' : $'std_sync_mpsc_Receiver<`t>' 00:21:42 v #26030 > > ) 00:21:42 v #26031 > > 00:21:42 v #26032 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:42 v #26033 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:42 v #26034 > > │ ### channel_sender │ 00:21:42 v #26035 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:42 v #26036 > > 00:21:42 v #26037 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:42 v #26038 > > nominal channel_sender t = 00:21:42 v #26039 > > `( 00:21:42 v #26040 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:42 v #26041 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype 00:21:42 v #26042 > > std_sync_mpsc_Sender<'T> = class end" 00:21:42 v #26043 > > $'' : $'std_sync_mpsc_Sender<`t>' 00:21:42 v #26044 > > ) 00:21:43 v #26045 > > 00:21:43 v #26046 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:43 v #26047 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:43 v #26048 > > │ ### new_channel │ 00:21:43 v #26049 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:43 v #26050 > > 00:21:43 v #26051 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:43 v #26052 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver 00:21:43 v #26053 > > sm'.std_string) = 00:21:43 v #26054 > > !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender, 00:21:43 v #26055 > > std::sync::Arc::new(receiver)) }"') 00:21:43 v #26056 > > 00:21:43 v #26057 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:43 v #26058 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:43 v #26059 > > │ ### send_error │ 00:21:43 v #26060 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:43 v #26061 > > 00:21:43 v #26062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:43 v #26063 > > nominal send_error t = 00:21:43 v #26064 > > `( 00:21:43 v #26065 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:43 v #26066 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype 00:21:43 v #26067 > > std_sync_mpsc_SendError<'T> = class end" 00:21:43 v #26068 > > $'' : $'std_sync_mpsc_SendError<`t>' 00:21:43 v #26069 > > ) 00:21:43 v #26070 > > 00:21:43 v #26071 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:43 v #26072 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:43 v #26073 > > │ ### channel_send │ 00:21:43 v #26074 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:43 v #26075 > > 00:21:43 v #26076 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:43 v #26077 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) : 00:21:43 v #26078 > > resultm.result' () (send_error sm'.std_string) = 00:21:43 v #26079 > > !\\((sender, line), $'"$0.send($1)"') 00:21:44 v #26080 > > 00:21:44 v #26081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:44 v #26082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:44 v #26083 > > │ ## fsharp │ 00:21:44 v #26084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:44 v #26085 > > 00:21:44 v #26086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:44 v #26087 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:44 v #26088 > > │ ### sleep' │ 00:21:44 v #26089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:44 v #26090 > > 00:21:44 v #26091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:44 v #26092 > > inl sleep' (n : i32) : () = 00:21:44 v #26093 > > run_target function 00:21:44 v #26094 > > | Fsharp (Native) 00:21:44 v #26095 > > | Rust _ 00:21:44 v #26096 > > | Python _ => fun () => $'System.Threading.Thread.Sleep' n 00:21:44 v #26097 > > | _ => fun () => () 00:21:44 v #26098 > > 00:21:44 v #26099 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:44 v #26100 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:44 v #26101 > > │ ### thread │ 00:21:44 v #26102 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:44 v #26103 > > 00:21:44 v #26104 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:44 v #26105 > > nominal thread = $'System.Threading.Thread' 00:21:45 v #26106 > > 00:21:45 v #26107 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:45 v #26108 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:45 v #26109 > > │ ### cancellation_token │ 00:21:45 v #26110 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:45 v #26111 > > 00:21:45 v #26112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:45 v #26113 > > nominal cancellation_token = $'System.Threading.CancellationToken' 00:21:45 v #26114 > > 00:21:45 v #26115 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:45 v #26116 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:45 v #26117 > > │ ### cancellation_token_source │ 00:21:45 v #26118 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:45 v #26119 > > 00:21:45 v #26120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:45 v #26121 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource' 00:21:46 v #26122 > > 00:21:46 v #26123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:46 v #26124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:46 v #26125 > > │ ### cancellation_token_registration │ 00:21:46 v #26126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:46 v #26127 > > 00:21:46 v #26128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:46 v #26129 > > nominal cancellation_token_registration = 00:21:46 v #26130 > > $'System.Threading.CancellationTokenRegistration' 00:21:46 v #26131 > > 00:21:46 v #26132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:46 v #26133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:46 v #26134 > > │ ### cancellation_source_token │ 00:21:46 v #26135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:46 v #26136 > > 00:21:46 v #26137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:46 v #26138 > > inl cancellation_source_token (x : cancellation_token_source) : 00:21:46 v #26139 > > cancellation_token = 00:21:46 v #26140 > > $'!x.Token' 00:21:47 v #26141 > > 00:21:47 v #26142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:47 v #26143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:47 v #26144 > > │ ### cancellation_source_cancel │ 00:21:47 v #26145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:47 v #26146 > > 00:21:47 v #26147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:47 v #26148 > > inl cancellation_source_cancel (x : cancellation_token_source) : () = 00:21:47 v #26149 > > run_target function 00:21:47 v #26150 > > | Fsharp (Native) => fun () => 00:21:47 v #26151 > > $'!x.Cancel' () 00:21:47 v #26152 > > | _ => fun () => null () 00:21:47 v #26153 > > 00:21:47 v #26154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:47 v #26155 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:47 v #26156 > > │ ### create_linked_token_source │ 00:21:47 v #26157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:47 v #26158 > > 00:21:47 v #26159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:47 v #26160 > > inl create_linked_token_source (x : array_base cancellation_token) : 00:21:47 v #26161 > > cancellation_token_source = 00:21:47 v #26162 > > x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource' 00:21:47 v #26163 > > 00:21:47 v #26164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:47 v #26165 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:47 v #26166 > > │ ### concurrent_stack │ 00:21:47 v #26167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:47 v #26168 > > 00:21:47 v #26169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:47 v #26170 > > nominal concurrent_stack t = 00:21:47 v #26171 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' 00:21:48 v #26172 > > 00:21:48 v #26173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:48 v #26174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:48 v #26175 > > │ ### concurrent_stack_push │ 00:21:48 v #26176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:48 v #26177 > > 00:21:48 v #26178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:48 v #26179 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : () 00:21:48 v #26180 > > = 00:21:48 v #26181 > > run_target function 00:21:48 v #26182 > > | Fsharp (Native) => fun () => $'!stack.Push' item 00:21:48 v #26183 > > | _ => fun () => () 00:21:48 v #26184 > > 00:21:48 v #26185 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:48 v #26186 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:48 v #26187 > > │ ### token_none │ 00:21:48 v #26188 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:48 v #26189 > > 00:21:48 v #26190 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:48 v #26191 > > inl token_none () : cancellation_token = 00:21:48 v #26192 > > $'`cancellation_token.None' 00:21:49 v #26193 > > 00:21:49 v #26194 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:49 v #26195 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:49 v #26196 > > │ ### new_concurrent_stack │ 00:21:49 v #26197 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:49 v #26198 > > 00:21:49 v #26199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:49 v #26200 > > inl new_concurrent_stack forall t. () : concurrent_stack t = 00:21:49 v #26201 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' () 00:21:49 v #26202 > > 00:21:49 v #26203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:49 v #26204 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:49 v #26205 > > │ ### token_register │ 00:21:49 v #26206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:49 v #26207 > > 00:21:49 v #26208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:49 v #26209 > > inl token_register (fn : () -> ()) (ct : cancellation_token) : 00:21:49 v #26210 > > cancellation_token_registration = 00:21:49 v #26211 > > fn |> $'!ct.Register' 00:21:50 v #26212 > > 00:21:50 v #26213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:50 v #26214 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:50 v #26215 > > │ ### new_cancellation_token_source │ 00:21:50 v #26216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:50 v #26217 > > 00:21:50 v #26218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:50 v #26219 > > inl new_cancellation_token_source () : cancellation_token_source = 00:21:50 v #26220 > > $'new `cancellation_token_source ()' 00:21:50 v #26221 > > 00:21:50 v #26222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:50 v #26223 > > inl token_cancellation_requested (ct : cancellation_token) : bool = 00:21:50 v #26224 > > $'!ct.IsCancellationRequested' 00:21:50 v #26225 > > 00:21:50 v #26226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:50 v #26227 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:50 v #26228 > > │ ### new_disposable_token │ 00:21:50 v #26229 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:50 v #26230 > > 00:21:50 v #26231 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:50 v #26232 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) = 00:21:50 v #26233 > > run_target function 00:21:50 v #26234 > > | Fsharp (Native) => fun () => 00:21:50 v #26235 > > inl cts = new_cancellation_token_source () 00:21:50 v #26236 > > inl cts = 00:21:50 v #26237 > > match merge_token |> optionm'.unbox with 00:21:50 v #26238 > > | None => cts 00:21:50 v #26239 > > | Some merge_token => 00:21:50 v #26240 > > create_linked_token_source ;[[ cts |> 00:21:50 v #26241 > > cancellation_source_token; merge_token ]] 00:21:50 v #26242 > > inl disposable : _ () = new_disposable fun () => 00:21:50 v #26243 > > cts |> cancellation_source_cancel 00:21:50 v #26244 > > cts |> cancellation_source_token, disposable 00:21:50 v #26245 > > | _ => fun () => null () 00:21:51 v #26246 > > 00:21:51 v #26247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:51 v #26248 > > //// test 00:21:51 v #26249 > > 00:21:51 v #26250 > > inl run fn = 00:21:51 v #26251 > > inl token, disposable = new_disposable_token (None |> optionm'.box) 00:21:51 v #26252 > > disposable |> use |> ignore 00:21:51 v #26253 > > fn token 00:21:51 v #26254 > > fun () => 00:21:51 v #26255 > > fn token 00:21:51 v #26256 > > |> async.new_async 00:21:51 v #26257 > > |> async.start 00:21:51 v #26258 > > 00:21:51 v #26259 > > fun () => 00:21:51 v #26260 > > inl counter = mut 0i32 00:21:51 v #26261 > > 00:21:51 v #26262 > > inl fn (token : cancellation_token) = 00:21:51 v #26263 > > counter <- *counter + (if token |> token_cancellation_requested then 10 00:21:51 v #26264 > > else 1) 00:21:51 v #26265 > > 00:21:51 v #26266 > > join run fn 00:21:51 v #26267 > > async.sleep 10 |> async.do 00:21:51 v #26268 > > return *counter 00:21:51 v #26269 > > |> async.new_async_unit 00:21:51 v #26270 > > |> async.run_synchronously 00:21:51 v #26271 > > |> _assert_eq 11i32 00:21:53 v #26272 > > 00:21:53 v #26273 > > ╭─[ 1.99s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:53 v #26274 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:21:53 v #26275 > > │ │ 00:21:53 v #26276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:53 v #26277 > > 00:21:53 v #26278 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:53 v #26279 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:53 v #26280 > > │ ## main │ 00:21:53 v #26281 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:53 v #26282 > > 00:21:53 v #26283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:53 v #26284 > > inl main () = 00:21:53 v #26285 > > $'let new_disposable_token x = !new_disposable_token x' : () 00:21:53 v #26286 > 00:00:33 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35597 } 00:21:53 v #26287 > 00:00:33 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:55 v #26288 > 00:00:34 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/threading.dib.ipynb to html 00:21:55 v #26289 > 00:00:34 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:55 v #26290 > 00:00:34 v #7 ! validate(nb) 00:21:55 v #26291 > 00:00:35 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:55 v #26292 > 00:00:35 v #9 ! return _pygments_highlight( 00:21:56 v #26293 > 00:00:36 v #10 ! [NbConvertApp] Writing 383285 bytes to c:\home\git\polyglot\lib\spiral\threading.dib.html 00:21:56 v #26294 > 00:00:36 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:21:56 v #26295 > 00:00:36 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:21:56 v #26296 > 00:00:36 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:56 v #26297 > 00:00:36 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:56 v #26298 > 00:00:36 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:56 v #26299 > 00:00:36 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36516 } 00:21:56 d #26300 runtime.execute_with_options_async / { exit_code = 0; output_length = 40542 } 00:21:56 d #30 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path threading.dib --retries 3 00:21:56 d #26301 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path benchmark.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:56 v #26302 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) } 00:21:56 v #26303 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/benchmark.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/benchmark.dib" --output-path "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:58 v #26304 > > 00:21:58 v #26305 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:58 v #26306 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:58 v #26307 > > │ ## benchmark │ 00:21:58 v #26308 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:01 v #26309 > > 00:22:01 v #26310 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:01 v #26311 > > //// test 00:22:01 v #26312 > > 00:22:01 v #26313 > > open testing 00:22:02 v #26314 > > 00:22:02 v #26315 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:02 v #26316 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:02 v #26317 > > │ ## fsharp │ 00:22:02 v #26318 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:02 v #26319 > > 00:22:02 v #26320 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:02 v #26321 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:02 v #26322 > > │ ### test_case_result │ 00:22:02 v #26323 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:02 v #26324 > > 00:22:02 v #26325 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:02 v #26326 > > type test_case_result = 00:22:02 v #26327 > > { 00:22:02 v #26328 > > input : string 00:22:02 v #26329 > > expected : string 00:22:02 v #26330 > > result : string 00:22:02 v #26331 > > time_list : array_base i64 00:22:02 v #26332 > > } 00:22:03 v #26333 > > 00:22:03 v #26334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:03 v #26335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:03 v #26336 > > │ ### run' │ 00:22:03 v #26337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:03 v #26338 > > 00:22:03 v #26339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #26340 > > inl run' forall t. count (fn : () -> t) = 00:22:03 v #26341 > > runtime.gc_collect () 00:22:03 v #26342 > > inl stopwatch = date_time.stopwatch () 00:22:03 v #26343 > > stopwatch |> date_time.stopwatch_start 00:22:03 v #26344 > > inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds 00:22:03 v #26345 > > inl result : t = 00:22:03 v #26346 > > am'.init_series 0 count 1i32 00:22:03 v #26347 > > |> fun x => a x : _ int _ 00:22:03 v #26348 > > |> am'.parallel_map fun _n => fn () 00:22:03 v #26349 > > |> am'.last 00:22:03 v #26350 > > inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1 00:22:03 v #26351 > > result, time2 00:22:03 v #26352 > > 00:22:03 v #26353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:03 v #26354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:03 v #26355 > > │ ### run │ 00:22:03 v #26356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:03 v #26357 > > 00:22:03 v #26358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #26359 > > inl run forall input expected. 00:22:03 v #26360 > > count 00:22:03 v #26361 > > (solutions : list (string * (input -> expected))) 00:22:03 v #26362 > > ((input, expected) : (input * expected)) 00:22:03 v #26363 > > : test_case_result 00:22:03 v #26364 > > = 00:22:03 v #26365 > > inl input_str = input |> sm'.format_debug 00:22:03 v #26366 > > 00:22:03 v #26367 > > console.write_line "" 00:22:03 v #26368 > > trace Verbose 00:22:03 v #26369 > > fun () => "benchmark.run" 00:22:03 v #26370 > > fun () => { input_str = input_str |> sm'.ellipsis_end 40 } 00:22:03 v #26371 > > 00:22:03 v #26372 > > inl results_with_time : array_base _ = 00:22:03 v #26373 > > solutions 00:22:03 v #26374 > > |> listm'.indexed 00:22:03 v #26375 > > |> listm'.box 00:22:03 v #26376 > > |> listm'.to_array' 00:22:03 v #26377 > > |> am'.map_base fun ((i : int), (test_name, solution)) => 00:22:03 v #26378 > > inl result, time = 00:22:03 v #26379 > > fun () => solution input 00:22:03 v #26380 > > |> run' count 00:22:03 v #26381 > > trace Verbose 00:22:03 v #26382 > > fun () => "benchmark.run / solutions.map" 00:22:03 v #26383 > > fun () => { i = i + 1; test_name time } 00:22:03 v #26384 > > result, time 00:22:03 v #26385 > > 00:22:03 v #26386 > > match results_with_time |> am'.map_base fst with 00:22:03 v #26387 > > | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => () 00:22:03 v #26388 > > | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |> 00:22:03 v #26389 > > (fun x => a x : _ int _) |> am'.index 0)) => () 00:22:03 v #26390 > > | results => failwith ($'$"benchmark.run / error / results: {!results}"' : 00:22:03 v #26391 > > string) 00:22:03 v #26392 > > 00:22:03 v #26393 > > { 00:22:03 v #26394 > > input = input_str 00:22:03 v #26395 > > expected = expected |> sm'.format_debug 00:22:03 v #26396 > > result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int 00:22:03 v #26397 > > _) |> am'.index 0 |> sm'.format_debug 00:22:03 v #26398 > > time_list = results_with_time |> am'.map_base snd 00:22:03 v #26399 > > } 00:22:03 v #26400 > > 00:22:03 v #26401 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:03 v #26402 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:03 v #26403 > > │ ### run_all │ 00:22:03 v #26404 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:03 v #26405 > > 00:22:03 v #26406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #26407 > > inl run_all forall input expected. 00:22:03 v #26408 > > test_name 00:22:03 v #26409 > > count 00:22:03 v #26410 > > (solutions : list (string * (input -> expected))) 00:22:03 v #26411 > > test_cases 00:22:03 v #26412 > > = 00:22:03 v #26413 > > console.write_line "" 00:22:03 v #26414 > > console.write_line "```" 00:22:03 v #26415 > > trace Verbose 00:22:03 v #26416 > > fun () => "benchmark.run_all" 00:22:03 v #26417 > > fun () => { test_name count } 00:22:03 v #26418 > > test_cases 00:22:03 v #26419 > > |> listm'.box 00:22:03 v #26420 > > |> listm'.to_array' 00:22:03 v #26421 > > |> am'.map_base (run count solutions) 00:22:04 v #26422 > > 00:22:04 v #26423 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:04 v #26424 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:04 v #26425 > > │ ### sort_result_list │ 00:22:04 v #26426 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:04 v #26427 > > 00:22:04 v #26428 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #26429 > > inl sort_result_list results = 00:22:04 v #26430 > > inl table = 00:22:04 v #26431 > > inl rows = 00:22:04 v #26432 > > results 00:22:04 v #26433 > > |> am'.map_base fun (result : test_case_result) => 00:22:04 v #26434 > > inl best = 00:22:04 v #26435 > > result.time_list 00:22:04 v #26436 > > |> am'.indexed 00:22:04 v #26437 > > |> am'.map_base fun (i, time) => 00:22:04 v #26438 > > i + 1i32, time 00:22:04 v #26439 > > |> fun x => a x : _ int _ 00:22:04 v #26440 > > |> am'.sort_by snd 00:22:04 v #26441 > > |> am'.index 0i32 00:22:04 v #26442 > > |> sm'.format 00:22:04 v #26443 > > inl row = 00:22:04 v #26444 > > [[ 00:22:04 v #26445 > > result.input |> sm'.ellipsis_end 40 |> sm'.replace "|" 00:22:04 v #26446 > > "" 00:22:04 v #26447 > > result.expected 00:22:04 v #26448 > > result.result 00:22:04 v #26449 > > best 00:22:04 v #26450 > > ]] 00:22:04 v #26451 > > inl color : option console.console_color = 00:22:04 v #26452 > > open console 00:22:04 v #26453 > > match result.expected = result.result with 00:22:04 v #26454 > > | true => Some $'`console_color.DarkGreen' 00:22:04 v #26455 > > | false => Some $'`console_color.DarkRed' 00:22:04 v #26456 > > row, color 00:22:04 v #26457 > > 00:22:04 v #26458 > > inl header = 00:22:04 v #26459 > > [[ 00:22:04 v #26460 > > [[ 00:22:04 v #26461 > > "input" 00:22:04 v #26462 > > "expected" 00:22:04 v #26463 > > "result" 00:22:04 v #26464 > > "best" 00:22:04 v #26465 > > ]] 00:22:04 v #26466 > > [[ 00:22:04 v #26467 > > "---" 00:22:04 v #26468 > > "---" 00:22:04 v #26469 > > "---" 00:22:04 v #26470 > > "---" 00:22:04 v #26471 > > ]] 00:22:04 v #26472 > > ]] 00:22:04 v #26473 > > |> listm.map fun row => row, None 00:22:04 v #26474 > > |> listm'.box 00:22:04 v #26475 > > |> listm'.to_array' 00:22:04 v #26476 > > |> fun x => a x : _ int _ 00:22:04 v #26477 > > a rows 00:22:04 v #26478 > > |> am.append header 00:22:04 v #26479 > > |> fun (a x) => x 00:22:04 v #26480 > > 00:22:04 v #26481 > > inl formatted_table = 00:22:04 v #26482 > > inl length_map : mapm.map i32 i64 = 00:22:04 v #26483 > > table 00:22:04 v #26484 > > |> am'.map_base (fst >> listm'.box >> listm'.to_array') 00:22:04 v #26485 > > |> am'.transpose 00:22:04 v #26486 > > |> am'.map_base fun column => 00:22:04 v #26487 > > column 00:22:04 v #26488 > > |> am'.map_base sm.length 00:22:04 v #26489 > > |> fun x => a x : _ int _ 00:22:04 v #26490 > > |> am'.sort_descending 00:22:04 v #26491 > > |> am'.try_item 0i32 00:22:04 v #26492 > > |> optionm'.default_value 0i64 00:22:04 v #26493 > > |> am'.indexed 00:22:04 v #26494 > > |> fun x => a x : _ int _ 00:22:04 v #26495 > > |> mapm.of_array 00:22:04 v #26496 > > table 00:22:04 v #26497 > > |> am'.map_base fun (row, color) => 00:22:04 v #26498 > > inl new_row = 00:22:04 v #26499 > > row 00:22:04 v #26500 > > |> listm'.indexed 00:22:04 v #26501 > > |> listm.map fun (i, cell) => 00:22:04 v #26502 > > cell |> sm'.pad_right (length_map |> mapm.item i |> conv) ' 00:22:04 v #26503 > > ' 00:22:04 v #26504 > > |> listm'.box 00:22:04 v #26505 > > |> listm'.to_array' 00:22:04 v #26506 > > new_row, color 00:22:04 v #26507 > > 00:22:04 v #26508 > > console.write_line "```" 00:22:04 v #26509 > > formatted_table 00:22:04 v #26510 > > |> fun x => a x : _ int _ 00:22:04 v #26511 > > |> am'.to_list' 00:22:04 v #26512 > > |> listm'.unbox 00:22:04 v #26513 > > |> listm.iter fun (row, color) => 00:22:04 v #26514 > > match color with 00:22:04 v #26515 > > | Some color => color |> console.set_foreground_color 00:22:04 v #26516 > > | None => console.reset_color () 00:22:04 v #26517 > > 00:22:04 v #26518 > > a row |> sm'.join' "\t| " |> console.write_line 00:22:04 v #26519 > > 00:22:04 v #26520 > > console.reset_color () 00:22:04 v #26521 > > 00:22:04 v #26522 > > inl averages = 00:22:04 v #26523 > > results 00:22:04 v #26524 > > |> am'.map_base fun result => 00:22:04 v #26525 > > result.time_list 00:22:04 v #26526 > > |> am'.map_base ($'float' : i64 -> f64) 00:22:04 v #26527 > > |> am'.transpose 00:22:04 v #26528 > > |> am'.map_base ((fun x => a x : _ int _) >> am'.average) 00:22:04 v #26529 > > |> am'.map_base ($'int64' : f64 -> i64) 00:22:04 v #26530 > > |> am'.indexed 00:22:04 v #26531 > > |> fun x => a x : _ u64 _ 00:22:04 v #26532 > > 00:22:04 v #26533 > > console.write_line "```" 00:22:04 v #26534 > > averages 00:22:04 v #26535 > > |> am'.sort_by snd 00:22:04 v #26536 > > |> am'.to_list' 00:22:04 v #26537 > > |> listm'.unbox 00:22:04 v #26538 > > |> listm.iter fun ((i : i32), avg) => 00:22:04 v #26539 > > trace Verbose 00:22:04 v #26540 > > fun () => "benchmark.sort_result_list / averages.iter" 00:22:04 v #26541 > > fun () => { i = i + 1; avg } 00:22:04 v #26542 > > console.write_line "```" 00:22:04 v #26543 > > 00:22:04 v #26544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #26545 > > //// test 00:22:04 v #26546 > > 00:22:04 v #26547 > > inl is_fast () = 00:22:04 v #26548 > > false 00:22:05 v #26549 > > 00:22:05 v #26550 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:05 v #26551 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:05 v #26552 > > │ ### empty2Tests │ 00:22:05 v #26553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:05 v #26554 > > 00:22:05 v #26555 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:05 v #26556 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:05 v #26557 > > │ Test: Empty2 │ 00:22:05 v #26558 > > │ │ 00:22:05 v #26559 > > │ Solution: (a, a) │ 00:22:05 v #26560 > > │ Test case 1. A. Time: 59L │ 00:22:05 v #26561 > > │ │ 00:22:05 v #26562 > > │ Solution: (a, a) │ 00:22:05 v #26563 > > │ Test case 1. A. Time: 53L │ 00:22:05 v #26564 > > │ │ 00:22:05 v #26565 > > │ Input | Expected | Result | Best │ 00:22:05 v #26566 > > │ --- | --- | --- | --- │ 00:22:05 v #26567 > > │ (a, a) | a | a | (1, 59) │ 00:22:05 v #26568 > > │ (a, a) | a | a | (1, 53) │ 00:22:05 v #26569 > > │ │ 00:22:05 v #26570 > > │ Averages │ 00:22:05 v #26571 > > │ Test case 1. Average Time: 56L │ 00:22:05 v #26572 > > │ │ 00:22:05 v #26573 > > │ Ranking │ 00:22:05 v #26574 > > │ Test case 1. Average Time: 56L │ 00:22:05 v #26575 > > │ │ 00:22:05 v #26576 > > │ --- │ 00:22:05 v #26577 > > │ │ 00:22:05 v #26578 > > │ │ 00:22:05 v #26579 > > │ ``` │ 00:22:05 v #26580 > > │ 01:12:03 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:22:05 v #26581 > > │ empty_2_tests} │ 00:22:05 v #26582 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000; expected = a; │ 00:22:05 v #26583 > > │ input = a, a; input_str = struct ("a", "a")} │ 00:22:05 v #26584 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map / {count = 2000000; │ 00:22:05 v #26585 > > │ expected = a; i = 0; input = a, a; input_str = struct ("a", "a"); test_name │ 00:22:05 v #26586 > > │ = A; time = 119} │ 00:22:05 v #26587 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map / {count = 2000000; │ 00:22:05 v #26588 > > │ expected = a; i = 1; input = a, a; input_str = struct ("a", "a"); test_name │ 00:22:05 v #26589 > > │ = B; time = 122} │ 00:22:05 v #26590 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000; expected = b; │ 00:22:05 v #26591 > > │ input = b, b; input_str = struct ("b", "b")} │ 00:22:05 v #26592 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map / {count = 2000000; │ 00:22:05 v #26593 > > │ expected = b; i = 0; input = b, b; input_str = struct ("b", "b"); test_name │ 00:22:05 v #26594 > > │ = A; time = 110} │ 00:22:05 v #26595 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map / {count = 2000000; │ 00:22:05 v #26596 > > │ expected = b; i = 1; input = b, b; input_str = struct ("b", "b"); test_name │ 00:22:05 v #26597 > > │ = B; time = 120} │ 00:22:05 v #26598 > > │ ``` │ 00:22:05 v #26599 > > │ Input | Expected | Result | Best │ 00:22:05 v #26600 > > │ --- | --- | --- | --- │ 00:22:05 v #26601 > > │ struct ("a", "a") | "a" | "a" | struct (1L, 119L) │ 00:22:05 v #26602 > > │ struct ("b", "b") | "b" | "b" | struct (1L, 110L) │ 00:22:05 v #26603 > > │ ``` │ 00:22:05 v #26604 > > │ 01:12:04 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │ 00:22:05 v #26605 > > │ 114; i = 0} │ 00:22:05 v #26606 > > │ 01:12:04 verbose #9 benchmark.sort_result_list / averages.iter / {avg = │ 00:22:05 v #26607 > > │ 121; i = 1} │ 00:22:05 v #26608 > > │ ``` │ 00:22:05 v #26609 > > │ ` │ 00:22:05 v #26610 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:05 v #26611 > > 00:22:05 v #26612 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #26613 > > //// test 00:22:05 v #26614 > > 00:22:05 v #26615 > > inl get_solutions () = 00:22:05 v #26616 > > [[ 00:22:05 v #26617 > > "A", 00:22:05 v #26618 > > fun (a, _b) => 00:22:05 v #26619 > > a 00:22:05 v #26620 > > 00:22:05 v #26621 > > "B", 00:22:05 v #26622 > > fun (_a, b) => 00:22:05 v #26623 > > b 00:22:05 v #26624 > > ]] 00:22:05 v #26625 > > 00:22:05 v #26626 > > inl rec empty_2_tests () = 00:22:05 v #26627 > > inl test_cases = [[ 00:22:05 v #26628 > > ("a", "a"), "a" 00:22:05 v #26629 > > ("b", "b"), "b" 00:22:05 v #26630 > > ]] 00:22:05 v #26631 > > 00:22:05 v #26632 > > inl solutions = get_solutions () 00:22:05 v #26633 > > 00:22:05 v #26634 > > // inl is_fast () = true 00:22:05 v #26635 > > 00:22:05 v #26636 > > inl count = 00:22:05 v #26637 > > if is_fast () 00:22:05 v #26638 > > then 1000i32 00:22:05 v #26639 > > else 2000000i32 00:22:05 v #26640 > > 00:22:05 v #26641 > > run_all (reflection.nameof { empty_2_tests }) count solutions test_cases 00:22:05 v #26642 > > |> sort_result_list 00:22:05 v #26643 > > 00:22:05 v #26644 > > empty_2_tests () 00:22:09 v #26645 > > 00:22:09 v #26646 > > ╭─[ 4.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:22:09 v #26647 > > │ │ 00:22:09 v #26648 > > │ ``` │ 00:22:09 v #26649 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = empty_2_tests; count = │ 00:22:09 v #26650 > > │ 2000000 } │ 00:22:09 v #26651 > > │ │ 00:22:09 v #26652 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ("a", "a") } │ 00:22:09 v #26653 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name = A; │ 00:22:09 v #26654 > > │ time = 96 } │ 00:22:09 v #26655 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; test_name = B; │ 00:22:09 v #26656 > > │ time = 86 } │ 00:22:09 v #26657 > > │ │ 00:22:09 v #26658 > > │ 00:00:00 v #5 benchmark.run / { input_str = struct ("b", "b") } │ 00:22:09 v #26659 > > │ 00:00:00 v #6 benchmark.run / solutions.map / { i = 1; test_name = A; │ 00:22:09 v #26660 > > │ time = 85 } │ 00:22:09 v #26661 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 2; test_name = B; │ 00:22:09 v #26662 > > │ time = 97 } │ 00:22:09 v #26663 > > │ ``` │ 00:22:09 v #26664 > > │ input | expected | result | best │ 00:22:09 v #26665 > > │ --- | --- | --- | --- │ 00:22:09 v #26666 > > │ struct ("a", "a") | "a" | "a" | 2, 86 │ 00:22:09 v #26667 > > │ struct ("b", "b") | "b" | "b" | 1, 85 │ 00:22:09 v #26668 > > │ ``` │ 00:22:09 v #26669 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter / { i = 1; avg │ 00:22:09 v #26670 > > │ = 90 } │ 00:22:09 v #26671 > > │ 00:00:00 v #9 benchmark.sort_result_list / averages.iter / { i = 2; avg │ 00:22:09 v #26672 > > │ = 91 } │ 00:22:09 v #26673 > > │ ``` │ 00:22:09 v #26674 > > │ │ 00:22:09 v #26675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:09 v #26676 > > 00:22:09 v #26677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:09 v #26678 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:09 v #26679 > > │ ### emptyTests │ 00:22:09 v #26680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:09 v #26681 > > 00:22:09 v #26682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:09 v #26683 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:09 v #26684 > > │ Test: Empty │ 00:22:09 v #26685 > > │ │ 00:22:09 v #26686 > > │ Solution: 0 │ 00:22:09 v #26687 > > │ Test case 1. A. Time: 61L │ 00:22:09 v #26688 > > │ │ 00:22:09 v #26689 > > │ Solution: 2 │ 00:22:09 v #26690 > > │ Test case 1. A. Time: 62L │ 00:22:09 v #26691 > > │ │ 00:22:09 v #26692 > > │ Solution: 5 │ 00:22:09 v #26693 > > │ Test case 1. A. Time: 70L │ 00:22:09 v #26694 > > │ │ 00:22:09 v #26695 > > │ Input | Expected | Result | Best │ 00:22:09 v #26696 > > │ --- | --- | --- | --- │ 00:22:09 v #26697 > > │ 0 | 0 | 0 | (1, 61) │ 00:22:09 v #26698 > > │ 2 | 2 | 2 | (1, 62) │ 00:22:09 v #26699 > > │ 5 | 5 | 5 | (1, 70) │ 00:22:09 v #26700 > > │ │ 00:22:09 v #26701 > > │ Averages │ 00:22:09 v #26702 > > │ Test case 1. Average Time: 64L │ 00:22:09 v #26703 > > │ │ 00:22:09 v #26704 > > │ Ranking │ 00:22:09 v #26705 > > │ Test case 1. Average Time: 64L │ 00:22:09 v #26706 > > │ │ 00:22:09 v #26707 > > │ --- │ 00:22:09 v #26708 > > │ │ 00:22:09 v #26709 > > │ ``` │ 00:22:09 v #26710 > > │ 01:21:25 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:22:09 v #26711 > > │ empty_1_tests} │ 00:22:09 v #26712 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000; expected = │ 00:22:09 v #26713 > > │ +1.000000; input = +0.000000; input_str = 0.0} │ 00:22:09 v #26714 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map / {count = 2000000; │ 00:22:09 v #26715 > > │ expected = +1.000000; i = 0; input = +0.000000; input_str = 0.0; test_name = │ 00:22:09 v #26716 > > │ A; time = 36} │ 00:22:09 v #26717 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000; expected = │ 00:22:09 v #26718 > > │ +3.000000; input = +2.000000; input_str = 2.0} │ 00:22:09 v #26719 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map / {count = 2000000; │ 00:22:09 v #26720 > > │ expected = +3.000000; i = 0; input = +2.000000; input_str = 2.0; test_name = │ 00:22:09 v #26721 > > │ A; time = 20} │ 00:22:09 v #26722 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000; expected = │ 00:22:09 v #26723 > > │ +6.000000; input = +5.000000; input_str = 5.0} │ 00:22:09 v #26724 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map / {count = 2000000; │ 00:22:09 v #26725 > > │ expected = +6.000000; i = 0; input = +5.000000; input_str = 5.0; test_name = │ 00:22:09 v #26726 > > │ A; time = 22} │ 00:22:09 v #26727 > > │ ``` │ 00:22:09 v #26728 > > │ Input | Expected | Result | Best │ 00:22:09 v #26729 > > │ --- | --- | --- | --- │ 00:22:09 v #26730 > > │ 0.0 | 1.0 | 1.0 | struct (1L, 36L) │ 00:22:09 v #26731 > > │ 2.0 | 3.0 | 3.0 | struct (1L, 20L) │ 00:22:09 v #26732 > > │ 5.0 | 6.0 | 6.0 | struct (1L, 22L) │ 00:22:09 v #26733 > > │ ``` │ 00:22:09 v #26734 > > │ 01:21:25 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │ 00:22:09 v #26735 > > │ 26; i = 0} │ 00:22:09 v #26736 > > │ ``` │ 00:22:09 v #26737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:09 v #26738 > > 00:22:09 v #26739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:09 v #26740 > > //// test 00:22:09 v #26741 > > 00:22:09 v #26742 > > inl get_solutions () = 00:22:09 v #26743 > > [[ 00:22:09 v #26744 > > "A", 00:22:09 v #26745 > > fun n => 00:22:09 v #26746 > > n + 1f64 00:22:09 v #26747 > > ]] 00:22:09 v #26748 > > 00:22:09 v #26749 > > inl rec empty_1_tests () = 00:22:09 v #26750 > > inl test_cases = [[ 00:22:09 v #26751 > > 0, 1 00:22:09 v #26752 > > 2, 3 00:22:09 v #26753 > > 5, 6 00:22:09 v #26754 > > ]] 00:22:09 v #26755 > > 00:22:09 v #26756 > > inl solutions = get_solutions () 00:22:09 v #26757 > > 00:22:09 v #26758 > > // inl is_fast () = true 00:22:09 v #26759 > > 00:22:09 v #26760 > > inl count = 00:22:09 v #26761 > > if is_fast () 00:22:09 v #26762 > > then 1000i32 00:22:09 v #26763 > > else 2000000i32 00:22:09 v #26764 > > 00:22:09 v #26765 > > run_all (reflection.nameof { empty_1_tests }) count solutions test_cases 00:22:09 v #26766 > > |> sort_result_list 00:22:09 v #26767 > > 00:22:09 v #26768 > > empty_1_tests () 00:22:11 v #26769 > > 00:22:11 v #26770 > > ╭─[ 2.32s - stdout ]───────────────────────────────────────────────────────────╮ 00:22:11 v #26771 > > │ │ 00:22:11 v #26772 > > │ ``` │ 00:22:11 v #26773 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = empty_1_tests; count = │ 00:22:11 v #26774 > > │ 2000000 } │ 00:22:11 v #26775 > > │ │ 00:22:11 v #26776 > > │ 00:00:00 v #2 benchmark.run / { input_str = 0.0 } │ 00:22:11 v #26777 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; test_name = A; │ 00:22:11 v #26778 > > │ time = 22 } │ 00:22:11 v #26779 > > │ │ 00:22:11 v #26780 > > │ 00:00:00 v #4 benchmark.run / { input_str = 2.0 } │ 00:22:11 v #26781 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 1; test_name = A; │ 00:22:11 v #26782 > > │ time = 11 } │ 00:22:11 v #26783 > > │ │ 00:22:11 v #26784 > > │ 00:00:00 v #6 benchmark.run / { input_str = 5.0 } │ 00:22:11 v #26785 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 1; test_name = A; │ 00:22:11 v #26786 > > │ time = 12 } │ 00:22:11 v #26787 > > │ ``` │ 00:22:11 v #26788 > > │ input | expected | result | best │ 00:22:11 v #26789 > > │ --- | --- | --- | --- │ 00:22:11 v #26790 > > │ 0.0 | 1.0 | 1.0 | 1, 22 │ 00:22:11 v #26791 > > │ 2.0 | 3.0 | 3.0 | 1, 11 │ 00:22:11 v #26792 > > │ 5.0 | 6.0 | 6.0 | 1, 12 │ 00:22:11 v #26793 > > │ ``` │ 00:22:11 v #26794 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter / { i = 1; avg │ 00:22:11 v #26795 > > │ = 15 } │ 00:22:11 v #26796 > > │ ``` │ 00:22:11 v #26797 > > │ │ 00:22:11 v #26798 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:12 v #26799 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24838 } 00:22:12 v #26800 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:13 v #26801 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/benchmark.dib.ipynb to html 00:22:13 v #26802 > 00:00:16 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:22:13 v #26803 > 00:00:16 v #7 ! validate(nb) 00:22:13 v #26804 > 00:00:16 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:22:13 v #26805 > 00:00:16 v #9 ! return _pygments_highlight( 00:22:14 v #26806 > 00:00:17 v #10 ! [NbConvertApp] Writing 316526 bytes to c:\home\git\polyglot\lib\spiral\benchmark.dib.html 00:22:14 v #26807 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:22:14 v #26808 > 00:00:17 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:22:14 v #26809 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:14 v #26810 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:22:14 v #26811 > 00:00:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:22:14 v #26812 > 00:00:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25757 } 00:22:14 d #26813 runtime.execute_with_options_async / { exit_code = 0; output_length = 29341 } 00:22:14 d #31 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path benchmark.dib --retries 3 00:22:14 d #26814 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path physics.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:14 v #26815 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) } 00:22:14 v #26816 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/physics.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/physics.dib" --output-path "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:22:16 v #26817 > > 00:22:16 v #26818 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:16 v #26819 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:16 v #26820 > > │ # physics │ 00:22:16 v #26821 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:34 v #26822 > > 00:22:34 v #26823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #26824 > > //// test 00:22:34 v #26825 > > 00:22:34 v #26826 > > open testing 00:22:35 v #26827 > > 00:22:35 v #26828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:35 v #26829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:35 v #26830 > > │ ### init_series │ 00:22:35 v #26831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:35 v #26832 > > 00:22:35 v #26833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #26834 > > //// test 00:22:35 v #26835 > > 00:22:35 v #26836 > > inl x = am'.init_series -3f64 3 0.01 00:22:35 v #26837 > > inl y = x |> am'.map_base math.square 00:22:35 v #26838 > > "square", "x", "y", ;[[ "square", x, y ]] 00:22:35 v #26839 > > 00:22:35 v #26840 > > ╭─[ 511.43ms - return value ]──────────────────────────────────────────────────╮ 00:22:35 v #26841 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:35 v #26842 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:35 v #26843 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:35 v #26844 > > │ stroke="none"/> │ 00:22:35 v #26845 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:35 v #26846 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:35 v #26847 > > │ fill="#FFFFFF"> │ 00:22:35 v #26848 > > │ square │ 00:22:35 v #26849 > > │ </text> │ 00:22:35 v #26850 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:22:35 v #26851 > > │ y2="75"/> │ 00:22:35 v #26852 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:35 v #26853 > > │ y2="75"/> │ 00:22:35 v #26854 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:22:35 v #26855 > > │ y2="75"/> │ 00:22:35 v #26856 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:22:35 v #26857 > > │ y2="75"/> │ 00:22:35 v #26858 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:35 v #26859 > > │ y2="75"/> │ 00:22:35 v #26860 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:22:35 v #26861 > > │ x2="103" y2="75"/> │ 00:22:35 v #26862 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:22:35 v #26863 > > │ x2="111" y2="75"/> │ 00:22:35 v #26864 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:35 v #26865 > > │ x2="119" y2="75"/> │ 00:22:35 v #26866 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:22:35 v #26867 > > │ x2="128" y2="75"/> │ 00:22:35 v #26868 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:22:35 v #26869 > > │ x2="136" y2="75"/> │ 00:22:35 v #26870 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:35 v #26871 > > │ x2="144" y2="75"/> │ 00:22:35 v #26872 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:22:35 v #26873 > > │ x2="153" y2="75"/> │ 00:22:35 v #26874 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:22:35 v #26875 > > │ x2="161" y2="75"/> │ 00:22:35 v #26876 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323 451,322 452,321 │ 00:22:35 v #26877 > > │ 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311 460,310 │ 00:22:35 v #26878 > > │ 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299 │ 00:22:35 v #26879 > > │ 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287 │ 00:22:35 v #26880 > > │ 475,285 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274 │ 00:22:35 v #26881 > > │ 483,273 484,271 485,270 485,268 486,267 487,265 488,264 489,262 490,261 │ 00:22:35 v #26882 > > │ 490,259 491,258 492,256 493,255 494,253 495,252 495,250 496,249 497,247 │ 00:22:35 v #26883 > > │ 498,246 499,244 499,242 500,241 501,239 502,238 503,236 504,234 504,233 │ 00:22:35 v #26884 > > │ 505,231 506,229 507,228 508,226 509,224 509,223 510,221 511,219 512,218 │ 00:22:35 v #26885 > > │ 513,216 514,214 514,213 515,211 516,209 517,207 518,206 519,204 519,202 │ 00:22:35 v #26886 > > │ 520,200 521,199 522,197 523,195 524,193 524,191 525,190 526,188 527,186 │ 00:22:35 v #26887 > > │ 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171 534,169 │ 00:22:35 v #26888 > > │ 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152 │ 00:22:35 v #26889 > > │ 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134 │ 00:22:35 v #26890 > > │ 550,132 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115 │ 00:22:35 v #26891 > > │ 558,113 559,111 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 │ 00:22:35 v #26892 > > │ 566,92 567,90 568,88 569,85 "/> │ 00:22:35 v #26893 > > │ <rect x="497" y="235" width="83" height="30" opacity="1" fill="none" │ 00:22:35 v #26894 > > │ stroke="#FFFFFF"/> │ 00:22:35 v #26895 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start" │ 00:22:35 v #26896 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:35 v #26897 > > │ fill="#FFFFFF"> │ 00:22:35 v #26898 > > │ square │ 00:22:35 v #26899 > > │ </text> │ 00:22:35 v #26900 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:35 v #26901 > > │ points="507,250 527,250 "/> │ 00:22:35 v #26902 > > │ </svg> │ 00:22:35 v #26903 > > │ │ 00:22:35 v #26904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:35 v #26905 > > 00:22:35 v #26906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #26907 > > //// test 00:22:35 v #26908 > > 00:22:35 v #26909 > > inl x = am'.init_series -10f64 10 0.1 00:22:35 v #26910 > > inl y_sin = x |> am'.map_base sin 00:22:35 v #26911 > > inl y_cos = x |> am'.map_base cos 00:22:35 v #26912 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]] 00:22:36 v #26913 > > 00:22:36 v #26914 > > ╭─[ 418.65ms - return value ]──────────────────────────────────────────────────╮ 00:22:36 v #26915 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:36 v #26916 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:36 v #26917 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:36 v #26918 > > │ stroke="none"/> │ 00:22:36 v #26919 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:36 v #26920 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:36 v #26921 > > │ fill="#FFFFFF"> │ 00:22:36 v #26922 > > │ sin cos │ 00:22:36 v #26923 > > │ </text> │ 00:22:36 v #26924 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │ 00:22:36 v #26925 > > │ y2="75"/> │ 00:22:36 v #26926 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:36 v #26927 > > │ y2="75"/> │ 00:22:36 v #26928 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │ 00:22:36 v #26929 > > │ y2="75"/> │ 00:22:36 v #26930 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:36 v #26931 > > │ y2="75"/> │ 00:22:36 v #26932 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424" │ 00:22:36 v #26933 > > │ x2="107" y2="75"/> │ 00:22:36 v #26934 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:36 v #26935 > > │ x2="119" y2="75"/> │ 00:22:36 v #26936 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424" │ 00:22:36 v #26937 > > │ x2="132" y2="75"/> │ 00:22:36 v #26938 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:36 v #26939 > > │ x2="144" y2="75"/> │ 00:22:36 v #26940 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424" │ 00:22:36 v #26941 > > │ x2="157" y2="75"/> │ 00:22:36 v #26942 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:36 v #26943 > > │ x2="169" y2="75"/> │ 00:22:36 v #26944 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424" │ 00:22:36 v #26945 > > │ x2="182" y2="75"/> │ 00:22:36 v #26946 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424" │ 00:22:36 v #26947 > > │ x2="194" y2="75"/> │ 00:22:36 v #26948 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424" │ 00:22:36 v #26949 > > │ x2="207" y2="75"/> │ 00:22:36 v #26950 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190 292,175 │ 00:22:36 v #26951 > > │ 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89 317,86 │ 00:22:36 v #26952 > > │ 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135 341,148 │ 00:22:36 v #26953 > > │ 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287 │ 00:22:36 v #26954 > > │ 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399 │ 00:22:36 v #26955 > > │ 389,405 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398 │ 00:22:36 v #26956 > > │ 411,390 414,380 416,370 419,358 421,345 424,331 426,316 429,301 431,285 │ 00:22:36 v #26957 > > │ 434,268 436,252 439,236 441,219 444,203 446,188 449,173 451,159 454,146 │ 00:22:36 v #26958 > > │ 456,133 459,122 461,113 464,104 466,97 469,92 471,88 474,86 476,85 479,86 │ 00:22:36 v #26959 > > │ 481,89 484,94 486,99 489,107 491,116 494,126 496,137 499,150 501,163 504,178 │ 00:22:36 v #26960 > > │ 506,193 509,209 511,225 514,241 516,258 519,274 521,290 524,306 526,321 │ 00:22:36 v #26961 > > │ 529,335 531,349 534,362 536,373 539,384 541,392 544,400 546,406 549,410 │ 00:22:36 v #26962 > > │ 551,413 554,415 556,414 559,412 561,408 564,403 566,396 569,388 "/> │ 00:22:36 v #26963 > > │ <rect x="514" y="227" width="66" height="45" opacity="1" fill="none" │ 00:22:36 v #26964 > > │ stroke="#FFFFFF"/> │ 00:22:36 v #26965 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start" │ 00:22:36 v #26966 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:36 v #26967 > > │ fill="#FFFFFF"> │ 00:22:36 v #26968 > > │ sin │ 00:22:36 v #26969 > > │ </text> │ 00:22:36 v #26970 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start" │ 00:22:36 v #26971 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:36 v #26972 > > │ fill="#FFFFFF"> │ 00:22:36 v #26973 > > │ cos │ 00:22:36 v #26974 > > │ </text> │ 00:22:36 v #26975 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:36 v #26976 > > │ points="524,242 544,242 "/> │ 00:22:36 v #26977 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:22:36 v #26978 > > │ points="524,257 544,257 "/> │ 00:22:36 v #26979 > > │ </svg> │ 00:22:36 v #26980 > > │ │ 00:22:36 v #26981 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:36 v #26982 > > 00:22:36 v #26983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #26984 > > //// test 00:22:36 v #26985 > > 00:22:36 v #26986 > > inl y_pos y0 vy0 ay t = 00:22:36 v #26987 > > y0 + vy0 * t + ay * (t |> math.square) / 2 00:22:36 v #26988 > > 00:22:36 v #26989 > > inl x = am'.init_series 0f64 5 0.01 00:22:36 v #26990 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8) 00:22:36 v #26991 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]] 00:22:36 v #26992 > > 00:22:36 v #26993 > > ╭─[ 473.58ms - return value ]──────────────────────────────────────────────────╮ 00:22:36 v #26994 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:36 v #26995 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:36 v #26996 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:36 v #26997 > > │ stroke="none"/> │ 00:22:36 v #26998 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:36 v #26999 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:36 v #27000 > > │ fill="#FFFFFF"> │ 00:22:36 v #27001 > > │ projectile motion │ 00:22:36 v #27002 > > │ </text> │ 00:22:36 v #27003 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:22:36 v #27004 > > │ y2="75"/> │ 00:22:36 v #27005 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:36 v #27006 > > │ y2="75"/> │ 00:22:36 v #27007 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:22:36 v #27008 > > │ y2="75"/> │ 00:22:36 v #27009 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:22:36 v #27010 > > │ y2="75"/> │ 00:22:36 v #27011 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:22:36 v #27012 > > │ y2="75"/> │ 00:22:36 v #27013 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:22:36 v #27014 > > │ x2="109" y2="75"/> │ 00:22:36 v #27015 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:36 v #27016 > > │ x2="119" y2="75"/> │ 00:22:36 v #27017 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:22:36 v #27018 > > │ x2="129" y2="75"/> │ 00:22:36 v #27019 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:22:36 v #27020 > > │ x2="139" y2="75"/> │ 00:22:36 v #27021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:22:36 v #27022 > > │ x2="149" y2="75"/> │ 00:22:36 v #27023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:22:36 v #27024 > > │ x2="159" y2="75"/> │ 00:22:36 v #27025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:36 v #27026 > > │ x2="169" y2="75"/> │ 00:22:36 v #27027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:22:36 v #27028 > > │ x2="179" y2="75"/> │ 00:22:36 v #27029 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180 433,182 434,183 │ 00:22:36 v #27030 > > │ 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193 443,194 │ 00:22:36 v #27031 > > │ 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206 │ 00:22:36 v #27032 > > │ 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218 │ 00:22:36 v #27033 > > │ 462,220 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231 │ 00:22:36 v #27034 > > │ 471,233 472,234 473,236 474,237 475,239 476,240 477,242 478,243 479,245 │ 00:22:36 v #27035 > > │ 480,246 481,248 482,249 483,251 484,253 485,254 486,256 487,257 488,259 │ 00:22:36 v #27036 > > │ 489,261 490,262 491,264 492,266 493,267 494,269 495,271 496,272 497,274 │ 00:22:36 v #27037 > > │ 498,276 499,277 500,279 501,281 502,282 503,284 504,286 505,288 506,289 │ 00:22:36 v #27038 > > │ 507,291 508,293 509,295 510,296 511,298 512,300 513,302 514,304 515,305 │ 00:22:36 v #27039 > > │ 516,307 517,309 518,311 519,313 520,315 521,316 522,318 523,320 524,322 │ 00:22:36 v #27040 > > │ 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337 533,339 │ 00:22:36 v #27041 > > │ 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357 │ 00:22:36 v #27042 > > │ 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376 │ 00:22:36 v #27043 > > │ 552,378 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395 │ 00:22:36 v #27044 > > │ 561,397 562,399 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/> │ 00:22:36 v #27045 > > │ <rect x="399" y="235" width="181" height="30" opacity="1" fill="none" │ 00:22:36 v #27046 > > │ stroke="#FFFFFF"/> │ 00:22:36 v #27047 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start" │ 00:22:36 v #27048 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:36 v #27049 > > │ fill="#FFFFFF"> │ 00:22:36 v #27050 > > │ height of projectile (m) │ 00:22:36 v #27051 > > │ </text> │ 00:22:36 v #27052 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:36 v #27053 > > │ points="409,250 429,250 "/> │ 00:22:36 v #27054 > > │ </svg> │ 00:22:36 v #27055 > > │ │ 00:22:36 v #27056 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:36 v #27057 > > 00:22:36 v #27058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:36 v #27059 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:36 v #27060 > > │ ### velocity_cf │ 00:22:36 v #27061 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:36 v #27062 > > 00:22:36 v #27063 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #27064 > > type mass = f64 00:22:36 v #27065 > > type time = f64 00:22:36 v #27066 > > type position = f64 00:22:36 v #27067 > > type velocity = f64 00:22:36 v #27068 > > type force = f64 00:22:36 v #27069 > > 00:22:36 v #27070 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity) 00:22:36 v #27071 > > 00:22:36 v #27072 > > inl velocity_cf m v0 fs = 00:22:36 v #27073 > > inl f_net = fs |> listm'.sum 00:22:36 v #27074 > > inl a0 = f_net / m 00:22:36 v #27075 > > inl v t = v0 + a0 * t 00:22:36 v #27076 > > v 00:22:36 v #27077 > > 00:22:36 v #27078 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #27079 > > //// test 00:22:36 v #27080 > > 00:22:36 v #27081 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0 00:22:36 v #27082 > > |> _assert_eq 0.6 00:22:36 v #27083 > > 00:22:36 v #27084 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1 00:22:36 v #27085 > > |> _assert_eq 0.2 00:22:37 v #27086 > > 00:22:37 v #27087 > > ╭─[ 409.70ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:37 v #27088 > > │ __assert_eq / actual: 0.6 / expected: 0.6 │ 00:22:37 v #27089 > > │ __assert_eq / actual: 0.2 / expected: 0.2 │ 00:22:37 v #27090 > > │ │ 00:22:37 v #27091 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:37 v #27092 > > 00:22:37 v #27093 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #27094 > > //// test 00:22:37 v #27095 > > 00:22:37 v #27096 > > inl x = am'.init_series 0f64 4 0.1 00:22:37 v #27097 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]]) 00:22:37 v #27098 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]] 00:22:37 v #27099 > > 00:22:37 v #27100 > > ╭─[ 464.87ms - return value ]──────────────────────────────────────────────────╮ 00:22:37 v #27101 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:37 v #27102 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:37 v #27103 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:37 v #27104 > > │ stroke="none"/> │ 00:22:37 v #27105 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:37 v #27106 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:37 v #27107 > > │ fill="#FFFFFF"> │ 00:22:37 v #27108 > > │ car on an air track │ 00:22:37 v #27109 > > │ </text> │ 00:22:37 v #27110 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │ 00:22:37 v #27111 > > │ y2="75"/> │ 00:22:37 v #27112 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:37 v #27113 > > │ y2="75"/> │ 00:22:37 v #27114 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │ 00:22:37 v #27115 > > │ y2="75"/> │ 00:22:37 v #27116 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:37 v #27117 > > │ y2="75"/> │ 00:22:37 v #27118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424" │ 00:22:37 v #27119 > > │ x2="107" y2="75"/> │ 00:22:37 v #27120 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:37 v #27121 > > │ x2="119" y2="75"/> │ 00:22:37 v #27122 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424" │ 00:22:37 v #27123 > > │ x2="132" y2="75"/> │ 00:22:37 v #27124 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:37 v #27125 > > │ x2="144" y2="75"/> │ 00:22:37 v #27126 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424" │ 00:22:37 v #27127 > > │ x2="157" y2="75"/> │ 00:22:37 v #27128 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:37 v #27129 > > │ x2="169" y2="75"/> │ 00:22:37 v #27130 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424" │ 00:22:37 v #27131 > > │ x2="182" y2="75"/> │ 00:22:37 v #27132 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424" │ 00:22:37 v #27133 > > │ x2="194" y2="75"/> │ 00:22:37 v #27134 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424" │ 00:22:37 v #27135 > > │ x2="207" y2="75"/> │ 00:22:37 v #27136 > > │ <line opacit...85,209 590,209 "/> │ 00:22:37 v #27137 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:22:37 v #27138 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:37 v #27139 > > │ 0.2 │ 00:22:37 v #27140 > > │ </text> │ 00:22:37 v #27141 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:37 v #27142 > > │ points="585,168 590,168 "/> │ 00:22:37 v #27143 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:22:37 v #27144 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:37 v #27145 > > │ 0.4 │ 00:22:37 v #27146 > > │ </text> │ 00:22:37 v #27147 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:37 v #27148 > > │ points="585,127 590,127 "/> │ 00:22:37 v #27149 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:22:37 v #27150 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:37 v #27151 > > │ 0.6 │ 00:22:37 v #27152 > > │ </text> │ 00:22:37 v #27153 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:37 v #27154 > > │ points="585,85 590,85 "/> │ 00:22:37 v #27155 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:37 v #27156 > > │ points="69,85 82,94 94,102 107,110 119,118 132,127 144,135 157,143 169,151 │ 00:22:37 v #27157 > > │ 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217 282,225 │ 00:22:37 v #27158 > > │ 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299 │ 00:22:37 v #27159 > > │ 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373 │ 00:22:37 v #27160 > > │ 519,382 531,390 544,398 556,406 569,415 "/> │ 00:22:37 v #27161 > > │ <rect x="415" y="235" width="165" height="30" opacity="1" fill="none" │ 00:22:37 v #27162 > > │ stroke="#FFFFFF"/> │ 00:22:37 v #27163 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start" │ 00:22:37 v #27164 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:37 v #27165 > > │ fill="#FFFFFF"> │ 00:22:37 v #27166 > > │ velocity of car (m/s) │ 00:22:37 v #27167 > > │ </text> │ 00:22:37 v #27168 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:37 v #27169 > > │ points="425,250 445,250 "/> │ 00:22:37 v #27170 > > │ </svg> │ 00:22:37 v #27171 > > │ │ 00:22:37 v #27172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:37 v #27173 > > 00:22:37 v #27174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #27175 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:37 v #27176 > > │ ### derivative │ 00:22:37 v #27177 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:37 v #27178 > > 00:22:37 v #27179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #27180 > > type derivative = (f64 -> f64) -> f64 -> f64 00:22:37 v #27181 > > 00:22:37 v #27182 > > inl derivative dt : derivative = 00:22:37 v #27183 > > fun x t => 00:22:37 v #27184 > > (x (t + dt / 2) - x (t - dt / 2)) / dt 00:22:38 v #27185 > > 00:22:38 v #27186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:38 v #27187 > > //// test 00:22:38 v #27188 > > 00:22:38 v #27189 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27190 > > |> _assert_approx_eq None 0.25 00:22:38 v #27191 > > 00:22:38 v #27192 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27193 > > |> _assert_approx_eq None 0.0000002499998827953931 00:22:38 v #27194 > > 00:22:38 v #27195 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27196 > > |> _assert_approx_eq None 0.000000000001000088900582341 00:22:38 v #27197 > > 00:22:38 v #27198 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27199 > > |> _assert_approx_eq None 0.00000008274037099909037 00:22:38 v #27200 > > 00:22:38 v #27201 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27202 > > |> _assert_approx_eq None 0.00008890058234101161 00:22:38 v #27203 > > 00:22:38 v #27204 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27205 > > |> _assert_approx_eq None -0.0007992778373592246 00:22:38 v #27206 > > 00:22:38 v #27207 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:22:38 v #27208 > > |> _assert_approx_eq None -1 00:22:38 v #27209 > > 00:22:38 v #27210 > > ╭─[ 498.83ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:38 v #27211 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25 │ 00:22:38 v #27212 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected: 2.499998828e-07 │ 00:22:38 v #27213 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected: 1.000088901e-12 │ 00:22:38 v #27214 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected: 8.2740371e-08 │ 00:22:38 v #27215 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected: 8.890058234e-05 │ 00:22:38 v #27216 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected: -0.0007992778374 │ 00:22:38 v #27217 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0 │ 00:22:38 v #27218 > > │ │ 00:22:38 v #27219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:38 v #27220 > > 00:22:38 v #27221 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:38 v #27222 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:38 v #27223 > > │ ### integration │ 00:22:38 v #27224 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:38 v #27225 > > 00:22:38 v #27226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:38 v #27227 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 00:22:38 v #27228 > > 00:22:38 v #27229 > > inl integral dt : integration = 00:22:38 v #27230 > > fun f a b => 00:22:38 v #27231 > > inl rec loop t y = 00:22:38 v #27232 > > if t < b 00:22:38 v #27233 > > then loop (t + dt) (y + f t * dt) 00:22:38 v #27234 > > else t, y 00:22:38 v #27235 > > loop (a + dt / 2) 0 00:22:38 v #27236 > > |> snd 00:22:39 v #27237 > > 00:22:39 v #27238 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:39 v #27239 > > //// test 00:22:39 v #27240 > > 00:22:39 v #27241 > > integral 0.01 math.square 0 1 00:22:39 v #27242 > > |> _assert_approx_eq None 0.33332500000000004 00:22:39 v #27243 > > 00:22:39 v #27244 > > ╭─[ 523.71ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:39 v #27245 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 │ 00:22:39 v #27246 > > │ │ 00:22:39 v #27247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:39 v #27248 > > 00:22:39 v #27249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:39 v #27250 > > inl integral' dt : integration = 00:22:39 v #27251 > > fun f a b => 00:22:39 v #27252 > > listm'.init_series (a + dt / 2) (b - dt / 2) dt 00:22:39 v #27253 > > |> listm.map (f >> (*) dt) 00:22:39 v #27254 > > |> listm'.sum 00:22:40 v #27255 > > 00:22:40 v #27256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:40 v #27257 > > //// test 00:22:40 v #27258 > > 00:22:40 v #27259 > > integral' 0.1 math.square 0 1 00:22:40 v #27260 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1) 00:22:40 v #27261 > > 00:22:40 v #27262 > > ╭─[ 431.37ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:40 v #27263 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325 │ 00:22:40 v #27264 > > │ │ 00:22:40 v #27265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:40 v #27266 > > 00:22:40 v #27267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:40 v #27268 > > inl integral'' dt : integration = 00:22:40 v #27269 > > fun f x y => 00:22:40 v #27270 > > am'.init_series (x + dt / 2) (y - dt / 2) dt 00:22:40 v #27271 > > |> fun x => a x : _ int _ 00:22:40 v #27272 > > |> am.map (f >> (*) dt) 00:22:40 v #27273 > > |> am'.sum 00:22:40 v #27274 > > 00:22:40 v #27275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:40 v #27276 > > //// test 00:22:40 v #27277 > > 00:22:40 v #27278 > > integral'' 0.01 math.square 0 1 00:22:40 v #27279 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1) 00:22:41 v #27280 > > 00:22:41 v #27281 > > ╭─[ 430.93ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:41 v #27282 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 │ 00:22:41 v #27283 > > │ │ 00:22:41 v #27284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:41 v #27285 > > 00:22:41 v #27286 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:41 v #27287 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:41 v #27288 > > │ ### anti_derivative │ 00:22:41 v #27289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:41 v #27290 > > 00:22:41 v #27291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:41 v #27292 > > inl anti_derivative dt v0 a t = 00:22:41 v #27293 > > v0 + integral' dt a 0 t 00:22:41 v #27294 > > 00:22:41 v #27295 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:41 v #27296 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:41 v #27297 > > │ ### velocity_ft │ 00:22:41 v #27298 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:41 v #27299 > > 00:22:41 v #27300 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:41 v #27301 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time -> 00:22:41 v #27302 > > velocity) 00:22:41 v #27303 > > 00:22:41 v #27304 > > inl velocity_ft dt : velocity_ft = 00:22:41 v #27305 > > fun m v0 fs => 00:22:41 v #27306 > > inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum 00:22:41 v #27307 > > inl a t = f_net t / m 00:22:41 v #27308 > > anti_derivative dt v0 a 00:22:42 v #27309 > > 00:22:42 v #27310 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:42 v #27311 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:42 v #27312 > > │ ### position_ft │ 00:22:42 v #27313 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:42 v #27314 > > 00:22:42 v #27315 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:42 v #27316 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time 00:22:42 v #27317 > > -> position) 00:22:42 v #27318 > > 00:22:42 v #27319 > > inl position_ft dt : position_ft = 00:22:42 v #27320 > > fun m x0 v0 fs => 00:22:42 v #27321 > > velocity_ft dt m v0 fs 00:22:42 v #27322 > > |> anti_derivative dt x0 00:22:42 v #27323 > > 00:22:42 v #27324 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:42 v #27325 > > //// test 00:22:42 v #27326 > > 00:22:42 v #27327 > > inl pedal_coast (t : time) : force = 00:22:42 v #27328 > > inl t_cycle = 20 00:22:42 v #27329 > > inl n_complete : i32 = t / t_cycle |> conv 00:22:42 v #27330 > > inl remainder = t - conv n_complete * t_cycle 00:22:42 v #27331 > > if remainder > 0 && remainder < 10 00:22:42 v #27332 > > then 10 00:22:42 v #27333 > > else 0 00:22:42 v #27334 > > 00:22:42 v #27335 > > inl x = am'.init_series -5f64 45 0.1 00:22:42 v #27336 > > inl y = x |> am'.map_base pedal_coast 00:22:42 v #27337 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]] 00:22:43 v #27338 > > 00:22:43 v #27339 > > ╭─[ 419.28ms - return value ]──────────────────────────────────────────────────╮ 00:22:43 v #27340 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:43 v #27341 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:43 v #27342 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:43 v #27343 > > │ stroke="none"/> │ 00:22:43 v #27344 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:43 v #27345 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:43 v #27346 > > │ fill="#FFFFFF"> │ 00:22:43 v #27347 > > │ child pedaling then coasting │ 00:22:43 v #27348 > > │ </text> │ 00:22:43 v #27349 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:22:43 v #27350 > > │ y2="75"/> │ 00:22:43 v #27351 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:43 v #27352 > > │ y2="75"/> │ 00:22:43 v #27353 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:22:43 v #27354 > > │ y2="75"/> │ 00:22:43 v #27355 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:22:43 v #27356 > > │ y2="75"/> │ 00:22:43 v #27357 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:22:43 v #27358 > > │ y2="75"/> │ 00:22:43 v #27359 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:22:43 v #27360 > > │ x2="109" y2="75"/> │ 00:22:43 v #27361 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:43 v #27362 > > │ x2="119" y2="75"/> │ 00:22:43 v #27363 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:22:43 v #27364 > > │ x2="129" y2="75"/> │ 00:22:43 v #27365 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:22:43 v #27366 > > │ x2="139" y2="75"/> │ 00:22:43 v #27367 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:22:43 v #27368 > > │ x2="149" y2="75"/> │ 00:22:43 v #27369 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:22:43 v #27370 > > │ x2="159" y2="75"/> │ 00:22:43 v #27371 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:43 v #27372 > > │ x2="169" y2="75"/> │ 00:22:43 v #27373 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:22:43 v #27374 > > │ x2="179" y2="75"/> │ 00:22:43 v #27375 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415 427,415 428,415 │ 00:22:43 v #27376 > > │ 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415 437,415 │ 00:22:43 v #27377 > > │ 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415 │ 00:22:43 v #27378 > > │ 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415 │ 00:22:43 v #27379 > > │ 456,415 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415 │ 00:22:43 v #27380 > > │ 465,415 466,415 467,415 468,415 469,415 470,415 471,415 472,415 473,415 │ 00:22:43 v #27381 > > │ 474,415 475,415 476,415 477,415 478,415 479,415 480,415 481,415 482,415 │ 00:22:43 v #27382 > > │ 483,415 484,415 485,415 486,415 487,415 488,415 489,415 490,415 491,415 │ 00:22:43 v #27383 > > │ 492,415 493,415 494,415 495,415 496,415 497,415 498,415 499,415 500,415 │ 00:22:43 v #27384 > > │ 501,415 502,415 503,415 504,415 505,415 506,415 507,415 508,415 509,415 │ 00:22:43 v #27385 > > │ 510,415 511,415 512,415 513,415 514,415 515,415 516,415 517,415 518,415 │ 00:22:43 v #27386 > > │ 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85 528,85 │ 00:22:43 v #27387 > > │ 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85 539,85 │ 00:22:43 v #27388 > > │ 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85 550,85 │ 00:22:43 v #27389 > > │ 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85 561,85 │ 00:22:43 v #27390 > > │ 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/> │ 00:22:43 v #27391 > > │ <rect x="437" y="235" width="143" height="30" opacity="1" fill="none" │ 00:22:43 v #27392 > > │ stroke="#FFFFFF"/> │ 00:22:43 v #27393 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start" │ 00:22:43 v #27394 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:43 v #27395 > > │ fill="#FFFFFF"> │ 00:22:43 v #27396 > > │ force on bike (N) │ 00:22:43 v #27397 > > │ </text> │ 00:22:43 v #27398 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:43 v #27399 > > │ points="447,250 467,250 "/> │ 00:22:43 v #27400 > > │ </svg> │ 00:22:43 v #27401 > > │ │ 00:22:43 v #27402 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:43 v #27403 > > 00:22:43 v #27404 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:43 v #27405 > > //// test 00:22:43 v #27406 > > 00:22:43 v #27407 > > inl x = am'.init_series -5 45 1 00:22:43 v #27408 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]]) 00:22:43 v #27409 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y 00:22:43 v #27410 > > ]] 00:22:43 v #27411 > > 00:22:43 v #27412 > > ╭─[ 724.41ms - return value ]──────────────────────────────────────────────────╮ 00:22:43 v #27413 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:43 v #27414 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:43 v #27415 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:43 v #27416 > > │ stroke="none"/> │ 00:22:43 v #27417 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:43 v #27418 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:43 v #27419 > > │ fill="#FFFFFF"> │ 00:22:43 v #27420 > > │ child pedaling then coasting │ 00:22:43 v #27421 > > │ </text> │ 00:22:43 v #27422 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:22:43 v #27423 > > │ y2="75"/> │ 00:22:43 v #27424 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:43 v #27425 > > │ y2="75"/> │ 00:22:43 v #27426 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:22:43 v #27427 > > │ y2="75"/> │ 00:22:43 v #27428 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:22:43 v #27429 > > │ y2="75"/> │ 00:22:43 v #27430 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:22:43 v #27431 > > │ y2="75"/> │ 00:22:43 v #27432 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:22:43 v #27433 > > │ x2="109" y2="75"/> │ 00:22:43 v #27434 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:43 v #27435 > > │ x2="119" y2="75"/> │ 00:22:43 v #27436 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:22:43 v #27437 > > │ x2="129" y2="75"/> │ 00:22:43 v #27438 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:22:43 v #27439 > > │ x2="139" y2="75"/> │ 00:22:43 v #27440 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:22:43 v #27441 > > │ x2="149" y2="75"/> │ 00:22:43 v #27442 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:22:43 v #27443 > > │ x2="159" y2="75"/> │ 00:22:43 v #27444 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:43 v #27445 > > │ x2="169" y2="75"/> │ 00:22:43 v #27446 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:22:43 v #27447 > > │ x2="179" y2="75"/> │ 00:22:43 v #27448 > > │ <line...serif" font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:43 v #27449 > > │ 200.0 │ 00:22:43 v #27450 > > │ </text> │ 00:22:43 v #27451 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:43 v #27452 > > │ points="585,201 590,201 "/> │ 00:22:43 v #27453 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start" │ 00:22:43 v #27454 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:43 v #27455 > > │ fill="#FFFFFF"> │ 00:22:43 v #27456 > > │ 250.0 │ 00:22:43 v #27457 > > │ </text> │ 00:22:43 v #27458 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:43 v #27459 > > │ points="585,147 590,147 "/> │ 00:22:43 v #27460 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start" font-family="sans-serif" │ 00:22:43 v #27461 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:43 v #27462 > > │ 300.0 │ 00:22:43 v #27463 > > │ </text> │ 00:22:43 v #27464 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:43 v #27465 > > │ points="585,94 590,94 "/> │ 00:22:43 v #27466 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:43 v #27467 > > │ points="69,415 79,415 89,415 99,415 109,415 119,415 129,414 139,413 149,412 │ 00:22:43 v #27468 > > │ 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382 239,377 │ 00:22:43 v #27469 > > │ 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329 │ 00:22:43 v #27470 > > │ 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254 │ 00:22:43 v #27471 > > │ 429,243 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157 │ 00:22:43 v #27472 > > │ 519,146 529,135 539,123 549,111 559,99 569,85 "/> │ 00:22:43 v #27473 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none" │ 00:22:43 v #27474 > > │ stroke="#FFFFFF"/> │ 00:22:43 v #27475 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" │ 00:22:43 v #27476 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:43 v #27477 > > │ fill="#FFFFFF"> │ 00:22:43 v #27478 > > │ position of bike (m) │ 00:22:43 v #27479 > > │ </text> │ 00:22:43 v #27480 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:43 v #27481 > > │ points="431,250 451,250 "/> │ 00:22:43 v #27482 > > │ </svg> │ 00:22:43 v #27483 > > │ │ 00:22:43 v #27484 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:43 v #27485 > > 00:22:43 v #27486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:43 v #27487 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:43 v #27488 > > │ ### velocity_fv │ 00:22:43 v #27489 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:43 v #27490 > > 00:22:43 v #27491 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:43 v #27492 > > inl newton_second_v m fs v0 = 00:22:43 v #27493 > > fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m 00:22:43 v #27494 > > 00:22:43 v #27495 > > inl update_velocity dt m fs v0 = 00:22:43 v #27496 > > v0 + newton_second_v m fs v0 * dt 00:22:43 v #27497 > > 00:22:43 v #27498 > > inl velocity_fv dt m v0 fs t = 00:22:43 v #27499 > > stream.iterate (update_velocity dt m fs) v0 00:22:43 v #27500 > > |> stream.try_item (t / dt |> math.round |> abs) 00:22:43 v #27501 > > |> optionm'.default_value 0 00:22:44 v #27502 > > 00:22:44 v #27503 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:44 v #27504 > > inl f_air drag rho area v = 00:22:44 v #27505 > > -drag * rho * area * abs v * v / 2 00:22:44 v #27506 > > 00:22:44 v #27507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:44 v #27508 > > //// test 00:22:44 v #27509 > > 00:22:44 v #27510 > > inl x = am'.init_series 0 60 0.5 00:22:44 v #27511 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225 00:22:44 v #27512 > > 0.6 ]]) 00:22:44 v #27513 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]] 00:22:45 v #27514 > > 00:22:45 v #27515 > > ╭─[ 728.26ms - return value ]──────────────────────────────────────────────────╮ 00:22:45 v #27516 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:45 v #27517 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:45 v #27518 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:45 v #27519 > > │ stroke="none"/> │ 00:22:45 v #27520 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:45 v #27521 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:45 v #27522 > > │ fill="#FFFFFF"> │ 00:22:45 v #27523 > > │ bike velocity │ 00:22:45 v #27524 > > │ </text> │ 00:22:45 v #27525 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:22:45 v #27526 > > │ y2="75"/> │ 00:22:45 v #27527 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:45 v #27528 > > │ y2="75"/> │ 00:22:45 v #27529 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:22:45 v #27530 > > │ y2="75"/> │ 00:22:45 v #27531 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:22:45 v #27532 > > │ y2="75"/> │ 00:22:45 v #27533 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:45 v #27534 > > │ y2="75"/> │ 00:22:45 v #27535 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:22:45 v #27536 > > │ x2="103" y2="75"/> │ 00:22:45 v #27537 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:22:45 v #27538 > > │ x2="111" y2="75"/> │ 00:22:45 v #27539 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:45 v #27540 > > │ x2="119" y2="75"/> │ 00:22:45 v #27541 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:22:45 v #27542 > > │ x2="128" y2="75"/> │ 00:22:45 v #27543 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:22:45 v #27544 > > │ x2="136" y2="75"/> │ 00:22:45 v #27545 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:45 v #27546 > > │ x2="144" y2="75"/> │ 00:22:45 v #27547 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:22:45 v #27548 > > │ x2="153" y2="75"/> │ 00:22:45 v #27549 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:22:45 v #27550 > > │ x2="161" y2="75"/> │ 00:22:45 v #27551 > > │ <line opacity="1" st...t" font-family="sans-serif" │ 00:22:45 v #27552 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:22:45 v #27553 > > │ 12.0 │ 00:22:45 v #27554 > > │ </text> │ 00:22:45 v #27555 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:22:45 v #27556 > > │ points="585,76 590,76 "/> │ 00:22:45 v #27557 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:45 v #27558 > > │ points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261 103,261 │ 00:22:45 v #27559 > > │ 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159 │ 00:22:45 v #27560 > > │ 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106 │ 00:22:45 v #27561 > > │ 182,101 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91 │ 00:22:45 v #27562 > > │ 223,91 228,89 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 │ 00:22:45 v #27563 > > │ 269,86 273,86 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 │ 00:22:45 v #27564 > > │ 315,86 319,86 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 │ 00:22:45 v #27565 > > │ 361,85 365,85 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 │ 00:22:45 v #27566 > > │ 406,85 410,85 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 │ 00:22:45 v #27567 > > │ 452,85 456,85 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 │ 00:22:45 v #27568 > > │ 498,85 502,85 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 │ 00:22:45 v #27569 > > │ 544,85 548,85 552,85 556,85 560,85 564,85 569,85 "/> │ 00:22:45 v #27570 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none" │ 00:22:45 v #27571 > > │ stroke="#FFFFFF"/> │ 00:22:45 v #27572 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" │ 00:22:45 v #27573 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:45 v #27574 > > │ fill="#FFFFFF"> │ 00:22:45 v #27575 > > │ velocity of bike (m/s) │ 00:22:45 v #27576 > > │ </text> │ 00:22:45 v #27577 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:45 v #27578 > > │ points="420,250 440,250 "/> │ 00:22:45 v #27579 > > │ </svg> │ 00:22:45 v #27580 > > │ │ 00:22:45 v #27581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:45 v #27582 > > 00:22:45 v #27583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:45 v #27584 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:45 v #27585 > > │ ### velocity_ftv │ 00:22:45 v #27586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:45 v #27587 > > 00:22:45 v #27588 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:45 v #27589 > > inl newton_second_tv m fs (t, v0) = 00:22:45 v #27590 > > inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum 00:22:45 v #27591 > > inl acc = f_net / m 00:22:45 v #27592 > > 1, acc 00:22:45 v #27593 > > 00:22:45 v #27594 > > inl update_tv dt m fs (t, v0) = 00:22:45 v #27595 > > inl dtdt, dvdt = newton_second_tv m fs (t, v0) 00:22:45 v #27596 > > t + dtdt * dt, v0 + dvdt * dt 00:22:45 v #27597 > > 00:22:45 v #27598 > > inl velocity_ftv dt m tv0 fs t = 00:22:45 v #27599 > > stream.iterate (join update_tv dt m fs) tv0 00:22:45 v #27600 > > |> stream.try_item (t / dt |> math.round |> abs) 00:22:45 v #27601 > > |> optionm.map snd 00:22:45 v #27602 > > |> optionm'.default_value 0 00:22:45 v #27603 > > 00:22:45 v #27604 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:45 v #27605 > > //// test 00:22:45 v #27606 > > 00:22:45 v #27607 > > inl x = am'.init_series 0 100 0.1 00:22:45 v #27608 > > inl y = 00:22:45 v #27609 > > x 00:22:45 v #27610 > > |> am'.map_base ( 00:22:45 v #27611 > > velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_, 00:22:45 v #27612 > > v) => f_air 2 1.225 0.5 v ]] 00:22:45 v #27613 > > ) 00:22:45 v #27614 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)", 00:22:45 v #27615 > > x, y ]] 00:22:46 v #27616 > > 00:22:46 v #27617 > > ╭─[ 664.28ms - return value ]──────────────────────────────────────────────────╮ 00:22:46 v #27618 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:46 v #27619 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:46 v #27620 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:46 v #27621 > > │ stroke="none"/> │ 00:22:46 v #27622 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:46 v #27623 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:46 v #27624 > > │ fill="#FFFFFF"> │ 00:22:46 v #27625 > > │ pedaling and coasting with air │ 00:22:46 v #27626 > > │ </text> │ 00:22:46 v #27627 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:22:46 v #27628 > > │ y2="75"/> │ 00:22:46 v #27629 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:46 v #27630 > > │ y2="75"/> │ 00:22:46 v #27631 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:22:46 v #27632 > > │ y2="75"/> │ 00:22:46 v #27633 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:22:46 v #27634 > > │ y2="75"/> │ 00:22:46 v #27635 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:22:46 v #27636 > > │ y2="75"/> │ 00:22:46 v #27637 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:22:46 v #27638 > > │ x2="109" y2="75"/> │ 00:22:46 v #27639 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:46 v #27640 > > │ x2="119" y2="75"/> │ 00:22:46 v #27641 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:22:46 v #27642 > > │ x2="129" y2="75"/> │ 00:22:46 v #27643 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:22:46 v #27644 > > │ x2="139" y2="75"/> │ 00:22:46 v #27645 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:22:46 v #27646 > > │ x2="149" y2="75"/> │ 00:22:46 v #27647 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:22:46 v #27648 > > │ x2="159" y2="75"/> │ 00:22:46 v #27649 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:22:46 v #27650 > > │ x2="169" y2="75"/> │ 00:22:46 v #27651 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:22:46 v #27652 > > │ x2="179" y2="75"/> │ 00:22:46 v #27653 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121 500,119 500,118 │ 00:22:46 v #27654 > > │ 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109 505,108 │ 00:22:46 v #27655 > > │ 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99 │ 00:22:46 v #27656 > > │ 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91 │ 00:22:46 v #27657 > > │ 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93 │ 00:22:46 v #27658 > > │ 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123 │ 00:22:46 v #27659 > > │ 525,126 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148 │ 00:22:46 v #27660 > > │ 530,150 530,153 531,155 531,158 532,160 532,162 533,165 533,167 534,169 │ 00:22:46 v #27661 > > │ 534,171 535,173 535,175 536,177 536,179 537,181 537,183 538,185 538,187 │ 00:22:46 v #27662 > > │ 539,189 539,190 540,192 540,194 541,196 541,197 542,199 542,201 543,202 │ 00:22:46 v #27663 > > │ 543,204 544,205 544,207 545,208 545,210 546,211 546,213 547,214 547,216 │ 00:22:46 v #27664 > > │ 548,217 548,219 549,220 549,221 550,223 550,224 551,225 551,226 552,228 │ 00:22:46 v #27665 > > │ 552,229 553,230 553,231 554,232 554,234 555,235 555,236 556,237 556,238 │ 00:22:46 v #27666 > > │ 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247 561,248 │ 00:22:46 v #27667 > > │ 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256 │ 00:22:46 v #27668 > > │ 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/> │ 00:22:46 v #27669 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none" │ 00:22:46 v #27670 > > │ stroke="#FFFFFF"/> │ 00:22:46 v #27671 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" │ 00:22:46 v #27672 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:46 v #27673 > > │ fill="#FFFFFF"> │ 00:22:46 v #27674 > > │ velocity of bike (m/s) │ 00:22:46 v #27675 > > │ </text> │ 00:22:46 v #27676 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:46 v #27677 > > │ points="420,250 440,250 "/> │ 00:22:46 v #27678 > > │ </svg> │ 00:22:46 v #27679 > > │ │ 00:22:46 v #27680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:46 v #27681 > > 00:22:46 v #27682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:46 v #27683 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:46 v #27684 > > │ ### velocity_ftxv │ 00:22:46 v #27685 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:46 v #27686 > > 00:22:46 v #27687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:46 v #27688 > > nominal state_1d = time * position * velocity 00:22:46 v #27689 > > nominal rrr = f64 * f64 * f64 00:22:46 v #27690 > > 00:22:46 v #27691 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) = 00:22:46 v #27692 > > inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |> 00:22:46 v #27693 > > listm'.sum 00:22:46 v #27694 > > inl acc = f_net / m 00:22:46 v #27695 > > rrr (1f64, v0, acc) 00:22:46 v #27696 > > 00:22:46 v #27697 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:22:46 v #27698 > > inl (rrr (_, _, dvdt)) = deriv t 00:22:46 v #27699 > > inl t1 = t0 + dt 00:22:46 v #27700 > > inl x1 = x0 + v0 * dt 00:22:46 v #27701 > > inl v1 = v0 + dvdt * dt 00:22:46 v #27702 > > state_1d (t1, x1, v1) 00:22:46 v #27703 > > 00:22:46 v #27704 > > inl update_txv dt m fs = 00:22:46 v #27705 > > newton_second_1d m fs |> euler_1d dt 00:22:46 v #27706 > > 00:22:46 v #27707 > > inl states_txv dt m txv0 fs = 00:22:46 v #27708 > > seq.iterate_ (update_txv dt m fs) txv0 00:22:46 v #27709 > > 00:22:46 v #27710 > > inl velocity_1d sts t = 00:22:46 v #27711 > > inl (state_1d (t0, _, _)) = sts 0 00:22:46 v #27712 > > inl (state_1d (t1, _, _)) = sts 1 00:22:46 v #27713 > > inl dt = t1 - t0 00:22:46 v #27714 > > inl num_steps = t / dt |> math.round |> abs 00:22:46 v #27715 > > inl (state_1d (_, _, v0)) = sts num_steps 00:22:46 v #27716 > > v0 00:22:46 v #27717 > > 00:22:46 v #27718 > > inl velocity_ftxv dt m txv0 fs = 00:22:46 v #27719 > > states_txv dt m txv0 fs |> velocity_1d 00:22:46 v #27720 > > 00:22:46 v #27721 > > inl position_1d sts t = 00:22:46 v #27722 > > inl (state_1d (t0, _, _)) = sts 0 00:22:46 v #27723 > > inl (state_1d (t1, _, _)) = sts 1 00:22:46 v #27724 > > inl dt = t1 - t0 00:22:46 v #27725 > > inl num_steps = t / dt |> math.round |> abs 00:22:46 v #27726 > > inl (state_1d (_, x0, _)) = sts num_steps 00:22:46 v #27727 > > x0 00:22:46 v #27728 > > 00:22:46 v #27729 > > inl position_ftxv dt m txv0 fs = 00:22:46 v #27730 > > states_txv dt m txv0 fs |> position_1d 00:22:46 v #27731 > > 00:22:46 v #27732 > > inl spring_force k (state_1d (_, x0, _)) = 00:22:46 v #27733 > > -k * x0 00:22:46 v #27734 > > 00:22:46 v #27735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:46 v #27736 > > //// test 00:22:46 v #27737 > > 00:22:46 v #27738 > > inl damped_ho_forces () = 00:22:46 v #27739 > > [[ 00:22:46 v #27740 > > spring_force 0.8 00:22:46 v #27741 > > fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0 00:22:46 v #27742 > > fun _ => -0.0027 * 9.80665 00:22:46 v #27743 > > ]] 00:22:46 v #27744 > > 00:22:46 v #27745 > > inl damped_ho_states () = 00:22:46 v #27746 > > states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) 00:22:46 v #27747 > > 00:22:46 v #27748 > > inl pingpong_position t = 00:22:46 v #27749 > > position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:22:46 v #27750 > > 00:22:46 v #27751 > > inl x = am'.init_series 0 3 0.01 00:22:46 v #27752 > > inl y = x |> am'.map_base pingpong_position 00:22:46 v #27753 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]] 00:22:47 v #27754 > > 00:22:47 v #27755 > > ╭─[ 504.77ms - return value ]──────────────────────────────────────────────────╮ 00:22:47 v #27756 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:47 v #27757 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:47 v #27758 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:47 v #27759 > > │ stroke="none"/> │ 00:22:47 v #27760 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:47 v #27761 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:47 v #27762 > > │ fill="#FFFFFF"> │ 00:22:47 v #27763 > > │ ping pong ball on a slinky │ 00:22:47 v #27764 > > │ </text> │ 00:22:47 v #27765 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:22:47 v #27766 > > │ y2="75"/> │ 00:22:47 v #27767 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:47 v #27768 > > │ y2="75"/> │ 00:22:47 v #27769 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:22:47 v #27770 > > │ y2="75"/> │ 00:22:47 v #27771 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:22:47 v #27772 > > │ y2="75"/> │ 00:22:47 v #27773 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:47 v #27774 > > │ y2="75"/> │ 00:22:47 v #27775 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:22:47 v #27776 > > │ x2="103" y2="75"/> │ 00:22:47 v #27777 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:22:47 v #27778 > > │ x2="111" y2="75"/> │ 00:22:47 v #27779 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:47 v #27780 > > │ x2="119" y2="75"/> │ 00:22:47 v #27781 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:22:47 v #27782 > > │ x2="128" y2="75"/> │ 00:22:47 v #27783 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:22:47 v #27784 > > │ x2="136" y2="75"/> │ 00:22:47 v #27785 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:47 v #27786 > > │ x2="144" y2="75"/> │ 00:22:47 v #27787 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:22:47 v #27788 > > │ x2="153" y2="75"/> │ 00:22:47 v #27789 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:22:47 v #27790 > > │ x2="161" y2="75"/> │ 00:22:47 v #27791 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360 342,363 344,362 │ 00:22:47 v #27792 > > │ 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265 359,247 │ 00:22:47 v #27793 > > │ 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153 │ 00:22:47 v #27794 > > │ 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260 │ 00:22:47 v #27795 > > │ 391,277 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356 │ 00:22:47 v #27796 > > │ 406,354 407,349 409,341 410,331 412,319 414,305 415,289 417,273 419,256 │ 00:22:47 v #27797 > > │ 420,239 422,223 424,208 425,194 427,182 429,172 430,165 432,161 434,159 │ 00:22:47 v #27798 > > │ 435,160 437,164 439,171 440,180 442,192 444,205 445,220 447,235 449,252 │ 00:22:47 v #27799 > > │ 450,268 452,284 454,299 455,313 457,325 459,335 460,342 462,347 464,350 │ 00:22:47 v #27800 > > │ 465,349 467,346 469,340 470,332 472,321 474,309 475,295 477,280 479,264 │ 00:22:47 v #27801 > > │ 480,248 482,232 484,217 485,204 487,192 489,181 490,173 492,168 494,165 │ 00:22:47 v #27802 > > │ 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229 509,244 │ 00:22:47 v #27803 > > │ 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344 │ 00:22:47 v #27804 > > │ 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271 │ 00:22:47 v #27805 > > │ 540,256 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171 │ 00:22:47 v #27806 > > │ 555,169 557,170 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/> │ 00:22:47 v #27807 > > │ <rect x="464" y="235" width="116" height="30" opacity="1" fill="none" │ 00:22:47 v #27808 > > │ stroke="#FFFFFF"/> │ 00:22:47 v #27809 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start" │ 00:22:47 v #27810 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:47 v #27811 > > │ fill="#FFFFFF"> │ 00:22:47 v #27812 > > │ position (m) │ 00:22:47 v #27813 > > │ </text> │ 00:22:47 v #27814 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:47 v #27815 > > │ points="474,250 494,250 "/> │ 00:22:47 v #27816 > > │ </svg> │ 00:22:47 v #27817 > > │ │ 00:22:47 v #27818 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:47 v #27819 > > 00:22:47 v #27820 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:47 v #27821 > > //// test 00:22:47 v #27822 > > 00:22:47 v #27823 > > inl pingpong_velocity t = 00:22:47 v #27824 > > velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:22:47 v #27825 > > 00:22:47 v #27826 > > inl x = am'.init_series 0 3 0.01 00:22:47 v #27827 > > inl y = x |> am'.map_base pingpong_velocity 00:22:47 v #27828 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]] 00:22:47 v #27829 > > 00:22:47 v #27830 > > ╭─[ 444.03ms - return value ]──────────────────────────────────────────────────╮ 00:22:47 v #27831 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:22:47 v #27832 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:22:47 v #27833 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:22:47 v #27834 > > │ stroke="none"/> │ 00:22:47 v #27835 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:22:47 v #27836 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:47 v #27837 > > │ fill="#FFFFFF"> │ 00:22:47 v #27838 > > │ ping pong ball on a slinky │ 00:22:47 v #27839 > > │ </text> │ 00:22:47 v #27840 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:22:47 v #27841 > > │ y2="75"/> │ 00:22:47 v #27842 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:22:47 v #27843 > > │ y2="75"/> │ 00:22:47 v #27844 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:22:47 v #27845 > > │ y2="75"/> │ 00:22:47 v #27846 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:22:47 v #27847 > > │ y2="75"/> │ 00:22:47 v #27848 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:22:47 v #27849 > > │ y2="75"/> │ 00:22:47 v #27850 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:22:47 v #27851 > > │ x2="103" y2="75"/> │ 00:22:47 v #27852 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:22:47 v #27853 > > │ x2="111" y2="75"/> │ 00:22:47 v #27854 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:22:47 v #27855 > > │ x2="119" y2="75"/> │ 00:22:47 v #27856 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:22:47 v #27857 > > │ x2="128" y2="75"/> │ 00:22:47 v #27858 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:22:47 v #27859 > > │ x2="136" y2="75"/> │ 00:22:47 v #27860 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:22:47 v #27861 > > │ x2="144" y2="75"/> │ 00:22:47 v #27862 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:22:47 v #27863 > > │ x2="153" y2="75"/> │ 00:22:47 v #27864 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:22:47 v #27865 > > │ x2="161" y2="75"/> │ 00:22:47 v #27866 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269 342,250 344,231 │ 00:22:47 v #27867 > > │ 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136 359,136 │ 00:22:47 v #27868 > > │ 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253 │ 00:22:47 v #27869 > > │ 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349 │ 00:22:47 v #27870 > > │ 391,346 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241 │ 00:22:47 v #27871 > > │ 406,223 407,206 409,190 410,176 412,164 414,154 415,148 417,144 419,143 │ 00:22:47 v #27872 > > │ 420,145 422,150 424,158 425,168 427,180 429,194 430,210 432,227 434,244 │ 00:22:47 v #27873 > > │ 435,261 437,278 439,293 440,307 442,320 444,330 445,337 447,341 449,343 │ 00:22:47 v #27874 > > │ 450,342 452,338 454,331 455,322 457,310 459,297 460,282 462,266 464,249 │ 00:22:47 v #27875 > > │ 465,233 467,216 469,201 470,187 472,174 474,164 475,156 477,151 479,149 │ 00:22:47 v #27876 > > │ 480,149 482,153 484,159 485,167 487,178 489,190 490,204 492,220 494,236 │ 00:22:47 v #27877 > > │ 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334 509,337 │ 00:22:47 v #27878 > > │ 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257 │ 00:22:47 v #27879 > > │ 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154 │ 00:22:47 v #27880 > > │ 540,154 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228 │ 00:22:47 v #27881 > > │ 555,244 557,259 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/> │ 00:22:47 v #27882 > > │ <rect x="454" y="235" width="126" height="30" opacity="1" fill="none" │ 00:22:47 v #27883 > > │ stroke="#FFFFFF"/> │ 00:22:47 v #27884 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start" │ 00:22:47 v #27885 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:22:47 v #27886 > > │ fill="#FFFFFF"> │ 00:22:47 v #27887 > > │ velocity (m/s) │ 00:22:47 v #27888 > > │ </text> │ 00:22:47 v #27889 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:22:47 v #27890 > > │ points="464,250 484,250 "/> │ 00:22:47 v #27891 > > │ </svg> │ 00:22:47 v #27892 > > │ │ 00:22:47 v #27893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:47 v #27894 > > 00:22:47 v #27895 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:47 v #27896 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:47 v #27897 > > │ ### shift │ 00:22:47 v #27898 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:47 v #27899 > > 00:22:47 v #27900 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:47 v #27901 > > type update_function s = s -> s 00:22:47 v #27902 > > 00:22:47 v #27903 > > type differential_equation s ds = s -> ds 00:22:47 v #27904 > > 00:22:47 v #27905 > > type numerical_method s ds = differential_equation s ds -> update_function s 00:22:47 v #27906 > > 00:22:47 v #27907 > > 00:22:47 v #27908 > > inl solver method = 00:22:47 v #27909 > > method >> seq.iterate 00:22:47 v #27910 > > inl solver' method = 00:22:47 v #27911 > > method >> seq.iterate' 00:22:47 v #27912 > > inl solver_ method = 00:22:47 v #27913 > > method >> seq.iterate_ 00:22:47 v #27914 > > 00:22:47 v #27915 > > 00:22:47 v #27916 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:22:47 v #27917 > > inl (rrr (_, _, dvdt)) = deriv t 00:22:47 v #27918 > > inl t1 = t0 + dt 00:22:47 v #27919 > > inl v1 = v0 + dvdt * dt 00:22:47 v #27920 > > inl x1 = x0 + v1 * dt 00:22:47 v #27921 > > state_1d (t1, x1, v1) 00:22:47 v #27922 > > 00:22:47 v #27923 > > inl update_txv_ec dt m fs = 00:22:47 v #27924 > > euler_cromer_1d dt (newton_second_1d m fs) 00:22:47 v #27925 > > 00:22:47 v #27926 > > prototype (+++) ds : ds -> ds -> ds 00:22:47 v #27927 > > prototype scale ds : f64 -> ds -> ds 00:22:47 v #27928 > > 00:22:47 v #27929 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1)) 00:22:47 v #27930 > > => 00:22:47 v #27931 > > rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1) 00:22:47 v #27932 > > 00:22:47 v #27933 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) => 00:22:47 v #27934 > > rrr (w * dtdt0, w * dxdt0, w * dvdt0) 00:22:47 v #27935 > > 00:22:47 v #27936 > > prototype shift s : forall ds. f64 -> ds -> s -> s 00:22:47 v #27937 > > 00:22:47 v #27938 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) => 00:22:47 v #27939 > > inl dtdt, dxdt, dvdt = 00:22:47 v #27940 > > real 00:22:47 v #27941 > > match ds with 00:22:47 v #27942 > > | rrr x => x 00:22:47 v #27943 > > | state_1d x => x 00:22:47 v #27944 > > state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt) 00:22:47 v #27945 > > 00:22:47 v #27946 > > inl euler dt deriv st0 = 00:22:47 v #27947 > > shift dt (deriv st0) st0 00:22:47 v #27948 > > 00:22:47 v #27949 > > inl runge_kutta_4 dt deriv st0 = 00:22:47 v #27950 > > inl m0 = deriv st0 00:22:47 v #27951 > > inl m1 = deriv (shift (dt / 2) m0 st0) 00:22:47 v #27952 > > inl m2 = deriv (shift (dt / 2) m1 st0) 00:22:47 v #27953 > > inl m3 = deriv (shift dt m2 st0) 00:22:47 v #27954 > > shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0 00:22:47 v #27955 > > 00:22:47 v #27956 > > inl exponential (_, x0, v0) = 00:22:47 v #27957 > > 1f64, v0, x0 00:22:47 v #27958 > > 00:22:47 v #27959 > > inl of_state_1d (state_1d (t, x, v)) = 00:22:47 v #27960 > > t, x, v 00:22:48 v #27961 > > 00:22:48 v #27962 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:48 v #27963 > > //// test 00:22:48 v #27964 > > 00:22:48 v #27965 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1, 00:22:48 v #27966 > > 1)) 800i32 00:22:48 v #27967 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326, 00:22:48 v #27968 > > 2864.8311229272326)) 00:22:48 v #27969 > > 00:22:48 v #27970 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0, 00:22:48 v #27971 > > 1, 1)) 80i32 00:22:48 v #27972 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009, 00:22:48 v #27973 > > 2895.0121485099035)) 00:22:48 v #27974 > > 00:22:48 v #27975 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1, 00:22:48 v #27976 > > 1)) 8i32 00:22:48 v #27977 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849)) 00:22:48 v #27978 > > 00:22:48 v #27979 > > ╭─[ 625.20ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:48 v #27980 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123) / expected: │ 00:22:48 v #27981 > > │ struct (8.0, 2864.831123, 2864.831123) │ 00:22:48 v #27982 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149) / expected: │ 00:22:48 v #27983 > > │ struct (8.0, 3043.379245, 2895.012149) │ 00:22:48 v #27984 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039) / expected: │ 00:22:48 v #27985 > > │ struct (8.0, 2894.789039, 2894.789039) │ 00:22:48 v #27986 > > │ │ 00:22:48 v #27987 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:48 v #27988 > > 00:22:48 v #27989 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:48 v #27990 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:48 v #27991 > > │ ### vec │ 00:22:48 v #27992 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:48 v #27993 > > 00:22:48 v #27994 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:48 v #27995 > > type vec = 00:22:48 v #27996 > > { 00:22:48 v #27997 > > x : f64 00:22:48 v #27998 > > y : f64 00:22:48 v #27999 > > z : f64 00:22:48 v #28000 > > } 00:22:48 v #28001 > > 00:22:48 v #28002 > > inl vec x y z : vec = 00:22:48 v #28003 > > { x y z } 00:22:49 v #28004 > > 00:22:49 v #28005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:49 v #28006 > > //// test 00:22:49 v #28007 > > 00:22:49 v #28008 > > vec 1 2 3 .z 00:22:49 v #28009 > > |> _assert_eq 3 00:22:49 v #28010 > > 00:22:49 v #28011 > > ╭─[ 393.15ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:49 v #28012 > > │ __assert_eq / actual: 3.0 / expected: 3.0 │ 00:22:49 v #28013 > > │ │ 00:22:49 v #28014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:49 v #28015 > > 00:22:49 v #28016 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:49 v #28017 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:49 v #28018 > > │ #### consts │ 00:22:49 v #28019 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:49 v #28020 > > 00:22:49 v #28021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:49 v #28022 > > inl i_hat () = vec 1 0 0 00:22:49 v #28023 > > inl j_hat () = vec 0 1 0 00:22:49 v #28024 > > inl k_hat () = vec 0 0 1 00:22:49 v #28025 > > inl zero_vec () = vec 0 0 0 00:22:50 v #28026 > > 00:22:50 v #28027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:50 v #28028 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:50 v #28029 > > │ #### ^+^ │ 00:22:50 v #28030 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:50 v #28031 > > 00:22:50 v #28032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:50 v #28033 > > inl (^+^) (a : vec) (b : vec) = 00:22:50 v #28034 > > vec (a.x + b.x) (a.y + b.y) (a.z + b.z) 00:22:50 v #28035 > > 00:22:50 v #28036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:50 v #28037 > > //// test 00:22:50 v #28038 > > 00:22:50 v #28039 > > vec 1 2 3 ^+^ vec 4 5 6 00:22:50 v #28040 > > |> _assert_eq (vec 5 7 9) 00:22:51 v #28041 > > 00:22:51 v #28042 > > ╭─[ 414.69ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:51 v #28043 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0, │ 00:22:51 v #28044 > > │ 9.0) │ 00:22:51 v #28045 > > │ │ 00:22:51 v #28046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:51 v #28047 > > 00:22:51 v #28048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:51 v #28049 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:51 v #28050 > > │ #### sum_vec │ 00:22:51 v #28051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:51 v #28052 > > 00:22:51 v #28053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:51 v #28054 > > inl sum_vec vs = 00:22:51 v #28055 > > vs |> listm.fold (^+^) (zero_vec ()) 00:22:51 v #28056 > > 00:22:51 v #28057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:51 v #28058 > > //// test 00:22:51 v #28059 > > 00:22:51 v #28060 > > [[ vec 1 2 3; vec 4 5 6 ]] 00:22:51 v #28061 > > |> sum_vec 00:22:51 v #28062 > > |> _assert_eq (vec 5 7 9) 00:22:52 v #28063 > > 00:22:52 v #28064 > > ╭─[ 474.59ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:52 v #28065 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0, │ 00:22:52 v #28066 > > │ 9.0) │ 00:22:52 v #28067 > > │ │ 00:22:52 v #28068 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:52 v #28069 > > 00:22:52 v #28070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:52 v #28071 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:52 v #28072 > > │ #### *^ │ 00:22:52 v #28073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:52 v #28074 > > 00:22:52 v #28075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:52 v #28076 > > inl (*^) c { x y z } = 00:22:52 v #28077 > > vec (c * x) (c * y) (c * z) 00:22:52 v #28078 > > 00:22:52 v #28079 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:52 v #28080 > > //// test 00:22:52 v #28081 > > 00:22:52 v #28082 > > 5 *^ vec 1 2 3 00:22:52 v #28083 > > |> _assert_eq (vec 5 10 15) 00:22:52 v #28084 > > 00:22:52 v #28085 > > ╭─[ 447.19ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:52 v #28086 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0, │ 00:22:52 v #28087 > > │ 10.0, 15.0) │ 00:22:52 v #28088 > > │ │ 00:22:52 v #28089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:52 v #28090 > > 00:22:52 v #28091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:52 v #28092 > > //// test 00:22:52 v #28093 > > 00:22:52 v #28094 > > 3 *^ i_hat () ^+^ 4 *^ k_hat () 00:22:52 v #28095 > > |> _assert_eq (vec 3 0 4) 00:22:53 v #28096 > > 00:22:53 v #28097 > > ╭─[ 469.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:53 v #28098 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected: struct (3.0, 0.0, │ 00:22:53 v #28099 > > │ 4.0) │ 00:22:53 v #28100 > > │ │ 00:22:53 v #28101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:53 v #28102 > > 00:22:53 v #28103 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:53 v #28104 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:53 v #28105 > > │ #### ^* │ 00:22:53 v #28106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:53 v #28107 > > 00:22:53 v #28108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:53 v #28109 > > inl (^*) v c = 00:22:53 v #28110 > > (*^) c v 00:22:53 v #28111 > > 00:22:53 v #28112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:53 v #28113 > > //// test 00:22:53 v #28114 > > 00:22:53 v #28115 > > vec 1 2 3 ^* 5 00:22:53 v #28116 > > |> _assert_eq (vec 5 10 15) 00:22:54 v #28117 > > 00:22:54 v #28118 > > ╭─[ 438.63ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:54 v #28119 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0, │ 00:22:54 v #28120 > > │ 10.0, 15.0) │ 00:22:54 v #28121 > > │ │ 00:22:54 v #28122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:54 v #28123 > > 00:22:54 v #28124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:54 v #28125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:54 v #28126 > > │ #### ^/ │ 00:22:54 v #28127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:54 v #28128 > > 00:22:54 v #28129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:54 v #28130 > > inl (^/) { x y z } c = 00:22:54 v #28131 > > vec (x / c) (y / c) (z / c) 00:22:54 v #28132 > > 00:22:54 v #28133 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:54 v #28134 > > //// test 00:22:54 v #28135 > > 00:22:54 v #28136 > > vec 1 2 3 ^/ 5 00:22:54 v #28137 > > |> _assert_eq (vec 0.2 0.4 0.6) 00:22:55 v #28138 > > 00:22:55 v #28139 > > ╭─[ 464.18ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:55 v #28140 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected: struct (0.2, 0.4, │ 00:22:55 v #28141 > > │ 0.6) │ 00:22:55 v #28142 > > │ │ 00:22:55 v #28143 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:55 v #28144 > > 00:22:55 v #28145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:55 v #28146 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:55 v #28147 > > │ #### negate_vec │ 00:22:55 v #28148 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:55 v #28149 > > 00:22:55 v #28150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:55 v #28151 > > inl negate_vec v = 00:22:55 v #28152 > > v ^* -1 00:22:55 v #28153 > > 00:22:55 v #28154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:55 v #28155 > > //// test 00:22:55 v #28156 > > 00:22:55 v #28157 > > vec 1 2 3 00:22:55 v #28158 > > |> negate_vec 00:22:55 v #28159 > > |> _assert_eq (vec -1 -2 -3) 00:22:55 v #28160 > > 00:22:55 v #28161 > > ╭─[ 463.37ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:55 v #28162 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected: struct (-1.0, │ 00:22:55 v #28163 > > │ -2.0, -3.0) │ 00:22:55 v #28164 > > │ │ 00:22:55 v #28165 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:55 v #28166 > > 00:22:55 v #28167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:55 v #28168 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:55 v #28169 > > │ #### ^-^ │ 00:22:55 v #28170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:55 v #28171 > > 00:22:55 v #28172 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:55 v #28173 > > inl (^-^) a b = 00:22:55 v #28174 > > a ^+^ (negate_vec b) 00:22:56 v #28175 > > 00:22:56 v #28176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:56 v #28177 > > //// test 00:22:56 v #28178 > > 00:22:56 v #28179 > > vec 1 2 3 ^-^ vec 4 5 6 00:22:56 v #28180 > > |> _assert_eq (vec -3 -3 -3) 00:22:56 v #28181 > > 00:22:56 v #28182 > > ╭─[ 412.81ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:56 v #28183 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected: struct (-3.0, │ 00:22:56 v #28184 > > │ -3.0, -3.0) │ 00:22:56 v #28185 > > │ │ 00:22:56 v #28186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:56 v #28187 > > 00:22:56 v #28188 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:56 v #28189 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:56 v #28190 > > │ #### <.> │ 00:22:56 v #28191 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:56 v #28192 > > 00:22:56 v #28193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:56 v #28194 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } = 00:22:56 v #28195 > > ax * bx + ay * by + az * bz 00:22:57 v #28196 > > 00:22:57 v #28197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:57 v #28198 > > //// test 00:22:57 v #28199 > > 00:22:57 v #28200 > > vec 1 2 3 <.> vec 4 5 6 00:22:57 v #28201 > > |> _assert_eq 32 00:22:57 v #28202 > > 00:22:57 v #28203 > > ╭─[ 458.89ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:57 v #28204 > > │ __assert_eq / actual: 32.0 / expected: 32.0 │ 00:22:57 v #28205 > > │ │ 00:22:57 v #28206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:57 v #28207 > > 00:22:57 v #28208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:57 v #28209 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:57 v #28210 > > │ #### \>\< │ 00:22:57 v #28211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:57 v #28212 > > 00:22:57 v #28213 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:57 v #28214 > > inl (><) (a : vec) (b : vec) = 00:22:57 v #28215 > > vec 00:22:57 v #28216 > > (a.y * b.z - a.z * b.y) 00:22:57 v #28217 > > (a.z * b.x - a.x * b.z) 00:22:57 v #28218 > > (a.x * b.y - a.y * b.x) 00:22:58 v #28219 > > 00:22:58 v #28220 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:58 v #28221 > > //// test 00:22:58 v #28222 > > 00:22:58 v #28223 > > vec 1 2 3 >< vec 4 5 6 00:22:58 v #28224 > > |> _assert_eq (vec -3 6 -3) 00:22:58 v #28225 > > 00:22:58 v #28226 > > ╭─[ 429.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:58 v #28227 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected: struct (-3.0, │ 00:22:58 v #28228 > > │ 6.0, -3.0) │ 00:22:58 v #28229 > > │ │ 00:22:58 v #28230 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:58 v #28231 > > 00:22:58 v #28232 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:58 v #28233 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:58 v #28234 > > │ #### magnitude │ 00:22:58 v #28235 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:58 v #28236 > > 00:22:58 v #28237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:58 v #28238 > > inl magnitude v = 00:22:58 v #28239 > > v <.> v |> sqrt 00:22:58 v #28240 > > 00:22:58 v #28241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:58 v #28242 > > //// test 00:22:58 v #28243 > > 00:22:58 v #28244 > > vec 1 2 3 00:22:58 v #28245 > > |> magnitude 00:22:58 v #28246 > > |> _assert_approx_eq None 3.7416573867739413 00:22:59 v #28247 > > 00:22:59 v #28248 > > ╭─[ 437.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:22:59 v #28249 > > │ __assert_approx_eq / actual: 3.741657387 / expected: 3.741657387 │ 00:22:59 v #28250 > > │ │ 00:22:59 v #28251 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:59 v #28252 > > 00:22:59 v #28253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:59 v #28254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:22:59 v #28255 > > │ #### v1 │ 00:22:59 v #28256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:22:59 v #28257 > > 00:22:59 v #28258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:59 v #28259 > > inl v1 t = 00:22:59 v #28260 > > 2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat 00:22:59 v #28261 > > ())) 00:22:59 v #28262 > > 00:22:59 v #28263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:59 v #28264 > > //// test 00:22:59 v #28265 > > 00:22:59 v #28266 > > v1 1 00:22:59 v #28267 > > |> _assert_eq (vec 2 6 6) 00:23:00 v #28268 > > 00:23:00 v #28269 > > ╭─[ 457.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:00 v #28270 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected: struct (2.0, 6.0, │ 00:23:00 v #28271 > > │ 6.0) │ 00:23:00 v #28272 > > │ │ 00:23:00 v #28273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:00 v #28274 > > 00:23:00 v #28275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:00 v #28276 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:00 v #28277 > > │ #### vec_derivative │ 00:23:00 v #28278 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:00 v #28279 > > 00:23:00 v #28280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:00 v #28281 > > type vec_derivative = (f64 -> vec) -> f64 -> vec 00:23:00 v #28282 > > 00:23:00 v #28283 > > inl vec_derivative dt : vec_derivative = 00:23:00 v #28284 > > fun v t => 00:23:00 v #28285 > > (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt 00:23:00 v #28286 > > 00:23:00 v #28287 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:00 v #28288 > > //// test 00:23:00 v #28289 > > 00:23:00 v #28290 > > vec_derivative 0.01 v1 3 .x 00:23:00 v #28291 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3) 00:23:01 v #28292 > > 00:23:01 v #28293 > > ╭─[ 505.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:01 v #28294 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0 │ 00:23:01 v #28295 > > │ │ 00:23:01 v #28296 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:01 v #28297 > > 00:23:01 v #28298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:01 v #28299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:01 v #28300 > > │ ### states_ps │ 00:23:01 v #28301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:01 v #28302 > > 00:23:01 v #28303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:01 v #28304 > > nominal particle_state = 00:23:01 v #28305 > > { 00:23:01 v #28306 > > mass : f64 00:23:01 v #28307 > > charge : f64 00:23:01 v #28308 > > time : f64 00:23:01 v #28309 > > pos_vec : vec 00:23:01 v #28310 > > velocity : vec 00:23:01 v #28311 > > } 00:23:01 v #28312 > > 00:23:01 v #28313 > > inl default_particle_state () : particle_state = 00:23:01 v #28314 > > particle_state { 00:23:01 v #28315 > > mass = 1 00:23:01 v #28316 > > charge = 0 00:23:01 v #28317 > > time = 0 00:23:01 v #28318 > > pos_vec = zero_vec () 00:23:01 v #28319 > > velocity = zero_vec () 00:23:01 v #28320 > > } 00:23:01 v #28321 > > 00:23:01 v #28322 > > type one_body_force = particle_state -> vec 00:23:01 v #28323 > > 00:23:01 v #28324 > > nominal d_particle_state = 00:23:01 v #28325 > > { 00:23:01 v #28326 > > dmdt : f64 00:23:01 v #28327 > > dqdt : f64 00:23:01 v #28328 > > dtdt : f64 00:23:01 v #28329 > > drdt : vec 00:23:01 v #28330 > > dvdt : vec 00:23:01 v #28331 > > } 00:23:01 v #28332 > > 00:23:01 v #28333 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) : 00:23:01 v #28334 > > d_particle_state = 00:23:01 v #28335 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:23:01 v #28336 > > d_particle_state { 00:23:01 v #28337 > > dmdt = 0 00:23:01 v #28338 > > dqdt = 0 00:23:01 v #28339 > > dtdt = 1 00:23:01 v #28340 > > drdt = st.velocity 00:23:01 v #28341 > > dvdt = f_net ^/ st.mass 00:23:01 v #28342 > > } 00:23:01 v #28343 > > 00:23:01 v #28344 > > inl earth_surface_gravity (st : particle_state) = 00:23:01 v #28345 > > inl g = 9.80665 00:23:01 v #28346 > > -st.mass * g *^ k_hat () 00:23:01 v #28347 > > 00:23:01 v #28348 > > inl air_resistance drag rho area (st : particle_state) = 00:23:01 v #28349 > > -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity 00:23:01 v #28350 > > 00:23:01 v #28351 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state) 00:23:01 v #28352 > > (particle_state st) = 00:23:01 v #28353 > > inl dst : d_particle_state = deriv (particle_state st) 00:23:01 v #28354 > > inl v' = st.velocity ^+^ dst.dvdt ^* dt 00:23:01 v #28355 > > particle_state { st with 00:23:01 v #28356 > > time = st.time + dt 00:23:01 v #28357 > > pos_vec = st.pos_vec ^+^ v' ^* dt 00:23:01 v #28358 > > velocity = st.velocity ^+^ dst.dvdt ^* dt 00:23:01 v #28359 > > } 00:23:01 v #28360 > > 00:23:01 v #28361 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' : 00:23:01 v #28362 > > d_particle_state) => 00:23:01 v #28363 > > d_particle_state { 00:23:01 v #28364 > > dmdt = dps.dmdt + dps'.dmdt 00:23:01 v #28365 > > dqdt = dps.dqdt + dps'.dqdt 00:23:01 v #28366 > > dtdt = dps.dtdt + dps'.dtdt 00:23:01 v #28367 > > drdt = dps.drdt ^+^ dps'.drdt 00:23:01 v #28368 > > dvdt = dps.dvdt ^+^ dps'.dvdt 00:23:01 v #28369 > > } 00:23:01 v #28370 > > 00:23:01 v #28371 > > instance scale d_particle_state = fun w (dps : d_particle_state) => 00:23:01 v #28372 > > d_particle_state { 00:23:01 v #28373 > > dmdt = w * dps.dmdt 00:23:01 v #28374 > > dqdt = w * dps.dqdt 00:23:01 v #28375 > > dtdt = w * dps.dtdt 00:23:01 v #28376 > > drdt = w *^ dps.drdt 00:23:01 v #28377 > > dvdt = w *^ dps.dvdt 00:23:01 v #28378 > > } 00:23:01 v #28379 > > 00:23:01 v #28380 > > instance shift particle_state = fun dt dps (particle_state st) => 00:23:01 v #28381 > > inl (d_particle_state dps) = 00:23:01 v #28382 > > real 00:23:01 v #28383 > > match dps with 00:23:01 v #28384 > > | d_particle_state _ => dps 00:23:01 v #28385 > > particle_state { st with 00:23:01 v #28386 > > time = st.time + dps.dtdt * dt 00:23:01 v #28387 > > pos_vec = st.pos_vec ^+^ dps.drdt ^* dt 00:23:01 v #28388 > > velocity = st.velocity ^+^ dps.dvdt ^* dt 00:23:01 v #28389 > > } 00:23:01 v #28390 > > 00:23:01 v #28391 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ -> 00:23:01 v #28392 > > _ -> i32 -> particle_state = 00:23:01 v #28393 > > newton_second_ps >> method >> seq.iterate_ 00:23:01 v #28394 > > 00:23:01 v #28395 > > inl z_ge0 sts = 00:23:01 v #28396 > > sts 00:23:01 v #28397 > > |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0) 00:23:01 v #28398 > > 00:23:01 v #28399 > > inl trajectory sts = 00:23:01 v #28400 > > sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z) 00:23:01 v #28401 > > 00:23:01 v #28402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:01 v #28403 > > //// test 00:23:01 v #28404 > > 00:23:01 v #28405 > > inl update_ps (method : numerical_method particle_state d_particle_state) = 00:23:01 v #28406 > > newton_second_ps >> method 00:23:01 v #28407 > > 00:23:01 v #28408 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs 00:23:01 v #28409 > > st t = 00:23:01 v #28410 > > inl states : i32 -> particle_state = states_ps method fs st 00:23:01 v #28411 > > inl dt = (states 1).time - (states 0).time 00:23:01 v #28412 > > inl num_steps = t / dt |> math.round |> abs 00:23:01 v #28413 > > inl st1 = solver' method (newton_second_ps fs) st num_steps 00:23:01 v #28414 > > st1.pos_vec 00:23:01 v #28415 > > 00:23:01 v #28416 > > inl sun_gravity (st : particle_state) : vec = 00:23:01 v #28417 > > inl big_g = 0.0000000000667408 00:23:01 v #28418 > > inl sun_mass = 1988480000000000000000000000000 00:23:01 v #28419 > > -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3 00:23:01 v #28420 > > 00:23:01 v #28421 > > inl wind_force v_wind drag rho area (st : particle_state) = 00:23:01 v #28422 > > inl v_rel = st.velocity ^-^ v_wind 00:23:01 v #28423 > > -0.5 * drag * rho * area * magnitude v_rel *^ v_rel 00:23:01 v #28424 > > 00:23:01 v #28425 > > inl rock_state () = 00:23:01 v #28426 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:01 v #28427 > > particle_state { default_particle_state' with 00:23:01 v #28428 > > mass = 2 00:23:01 v #28429 > > velocity = vec 3 0 4 00:23:01 v #28430 > > } 00:23:01 v #28431 > > 00:23:01 v #28432 > > inl halley_update dt = 00:23:01 v #28433 > > update_ps (euler_cromer_ps dt) [[ sun_gravity ]] 00:23:01 v #28434 > > 00:23:01 v #28435 > > inl halley_initial () = 00:23:01 v #28436 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:01 v #28437 > > particle_state { default_particle_state' with 00:23:01 v #28438 > > mass = 220000000000000 00:23:01 v #28439 > > pos_vec = 87660000000 *^ i_hat () 00:23:01 v #28440 > > velocity = 54569 *^ j_hat () 00:23:01 v #28441 > > } 00:23:02 v #28442 > > 00:23:02 v #28443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:02 v #28444 > > //// test 00:23:02 v #28445 > > 00:23:02 v #28446 > > inl baseball_forces () = 00:23:02 v #28447 > > inl area = pi * (0.074 / 2) ** 2 00:23:02 v #28448 > > [[ 00:23:02 v #28449 > > earth_surface_gravity 00:23:02 v #28450 > > air_resistance 0.3 1.225 area 00:23:02 v #28451 > > ]] 00:23:02 v #28452 > > 00:23:02 v #28453 > > inl baseball_trajectory dt v0 theta_deg = 00:23:02 v #28454 > > inl theta_rad = theta_deg * pi / 180 00:23:02 v #28455 > > inl vy0 = v0 * cos theta_rad 00:23:02 v #28456 > > inl vz0 = v0 * sin theta_rad 00:23:02 v #28457 > > inl initial_state = 00:23:02 v #28458 > > particle_state { 00:23:02 v #28459 > > mass = 0.145 00:23:02 v #28460 > > charge = 0 00:23:02 v #28461 > > time = 0 00:23:02 v #28462 > > pos_vec = zero_vec () 00:23:02 v #28463 > > velocity = vec 0 vy0 vz0 00:23:02 v #28464 > > } 00:23:02 v #28465 > > states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state 00:23:02 v #28466 > > >> Some 00:23:02 v #28467 > > |> z_ge0 00:23:02 v #28468 > > |> trajectory 00:23:02 v #28469 > > 00:23:02 v #28470 > > inl baseball_range dt v0 theta_deg = 00:23:02 v #28471 > > baseball_trajectory dt v0 theta_deg 00:23:02 v #28472 > > |> listm.fold (fun _ (y, _) => y) 0 00:23:02 v #28473 > > 00:23:02 v #28474 > > inl x = am'.init_series 10 80 1 00:23:02 v #28475 > > inl y = x |> am'.map_base (baseball_range 0.01 45) 00:23:02 v #28476 > > "range for a baseball hit at 45 m/s", 00:23:02 v #28477 > > "angle above horizontal (degrees)", 00:23:02 v #28478 > > "", 00:23:02 v #28479 > > ;[[ "horizontal range (m)", x, y ]] 00:23:03 v #28480 > > 00:23:03 v #28481 > > ╭─[ 1.20s - return value ]─────────────────────────────────────────────────────╮ 00:23:03 v #28482 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:03 v #28483 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:03 v #28484 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:03 v #28485 > > │ stroke="none"/> │ 00:23:03 v #28486 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:03 v #28487 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:03 v #28488 > > │ fill="#FFFFFF"> │ 00:23:03 v #28489 > > │ range for a baseball hit at 45 m/s │ 00:23:03 v #28490 > > │ </text> │ 00:23:03 v #28491 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │ 00:23:03 v #28492 > > │ y2="75"/> │ 00:23:03 v #28493 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:23:03 v #28494 > > │ y2="75"/> │ 00:23:03 v #28495 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:03 v #28496 > > │ y2="75"/> │ 00:23:03 v #28497 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:23:03 v #28498 > > │ y2="75"/> │ 00:23:03 v #28499 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84" y1="424" x2="84" │ 00:23:03 v #28500 > > │ y2="75"/> │ 00:23:03 v #28501 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91" y1="424" x2="91" │ 00:23:03 v #28502 > > │ y2="75"/> │ 00:23:03 v #28503 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98" y1="424" x2="98" │ 00:23:03 v #28504 > > │ y2="75"/> │ 00:23:03 v #28505 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424" │ 00:23:03 v #28506 > > │ x2="105" y2="75"/> │ 00:23:03 v #28507 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112" y1="424" │ 00:23:03 v #28508 > > │ x2="112" y2="75"/> │ 00:23:03 v #28509 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:23:03 v #28510 > > │ x2="119" y2="75"/> │ 00:23:03 v #28511 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127" y1="424" │ 00:23:03 v #28512 > > │ x2="127" y2="75"/> │ 00:23:03 v #28513 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134" y1="424" │ 00:23:03 v #28514 > > │ x2="134" y2="75"/> │ 00:23:03 v #28515 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424" │ 00:23:03 v #28516 > > │ x2="141" y2="75"/> │ 00:23:03 v #28517 > > │ <li...nts="585,199 590,199 "/> │ 00:23:03 v #28518 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start" │ 00:23:03 v #28519 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:03 v #28520 > > │ fill="#FFFFFF"> │ 00:23:03 v #28521 > > │ 100.0 │ 00:23:03 v #28522 > > │ </text> │ 00:23:03 v #28523 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:23:03 v #28524 > > │ points="585,156 590,156 "/> │ 00:23:03 v #28525 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start" │ 00:23:03 v #28526 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:03 v #28527 > > │ fill="#FFFFFF"> │ 00:23:03 v #28528 > > │ 110.0 │ 00:23:03 v #28529 > > │ </text> │ 00:23:03 v #28530 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:23:03 v #28531 > > │ points="585,114 590,114 "/> │ 00:23:03 v #28532 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:03 v #28533 > > │ points="69,343 77,325 84,307 91,290 98,275 105,259 112,245 119,231 127,219 │ 00:23:03 v #28534 > > │ 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139 191,132 │ 00:23:03 v #28535 > > │ 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91 262,89 │ 00:23:03 v #28536 > > │ 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95 340,98 │ 00:23:03 v #28537 > > │ 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146 │ 00:23:03 v #28538 > > │ 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228 │ 00:23:03 v #28539 > > │ 476,239 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340 │ 00:23:03 v #28540 > > │ 540,355 547,369 554,384 561,399 569,415 "/> │ 00:23:03 v #28541 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none" │ 00:23:03 v #28542 > > │ stroke="#FFFFFF"/> │ 00:23:03 v #28543 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" │ 00:23:03 v #28544 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:03 v #28545 > > │ fill="#FFFFFF"> │ 00:23:03 v #28546 > > │ horizontal range (m) │ 00:23:03 v #28547 > > │ </text> │ 00:23:03 v #28548 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:03 v #28549 > > │ points="431,250 451,250 "/> │ 00:23:03 v #28550 > > │ </svg> │ 00:23:03 v #28551 > > │ │ 00:23:03 v #28552 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:03 v #28553 > > 00:23:03 v #28554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:03 v #28555 > > //// test 00:23:03 v #28556 > > 00:23:03 v #28557 > > inl best_angle (min, max) = 00:23:03 v #28558 > > let rec loop theta_deg (best_range, best_theta_deg) = 00:23:03 v #28559 > > if theta_deg > max 00:23:03 v #28560 > > then best_range, best_theta_deg 00:23:03 v #28561 > > else 00:23:03 v #28562 > > inl range = baseball_range 0.01 45 theta_deg 00:23:03 v #28563 > > loop 00:23:03 v #28564 > > (theta_deg + 1) 00:23:03 v #28565 > > (if range > best_range 00:23:03 v #28566 > > then range, theta_deg 00:23:03 v #28567 > > else best_range, best_theta_deg) 00:23:03 v #28568 > > loop min (0f64, min) 00:23:03 v #28569 > > 00:23:03 v #28570 > > best_angle (30f64, 60f64) 00:23:03 v #28571 > > |> _assert_eq (116.77499158246208, 41) 00:23:04 v #28572 > > 00:23:04 v #28573 > > ╭─[ 844.76ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:04 v #28574 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected: struct │ 00:23:04 v #28575 > > │ (116.7749916, 41.0) │ 00:23:04 v #28576 > > │ │ 00:23:04 v #28577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:04 v #28578 > > 00:23:04 v #28579 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:04 v #28580 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:04 v #28581 > > │ ### relativity_ps │ 00:23:04 v #28582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:04 v #28583 > > 00:23:04 v #28584 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:04 v #28585 > > inl relativity_ps fs (st : particle_state) = 00:23:04 v #28586 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:23:04 v #28587 > > inl c = 299792458 00:23:04 v #28588 > > inl u = st.velocity ^/ c 00:23:04 v #28589 > > inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass 00:23:04 v #28590 > > d_particle_state { 00:23:04 v #28591 > > dmdt = 0 00:23:04 v #28592 > > dqdt = 0 00:23:04 v #28593 > > dtdt = 1 00:23:04 v #28594 > > drdt = st.velocity 00:23:04 v #28595 > > dvdt = acc 00:23:04 v #28596 > > } 00:23:04 v #28597 > > 00:23:04 v #28598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:04 v #28599 > > //// test 00:23:04 v #28600 > > 00:23:04 v #28601 > > inl year = 365.25 * 24 * 60 * 60 00:23:04 v #28602 > > inl c = 299792458 00:23:04 v #28603 > > inl ~method = runge_kutta_4 100000 00:23:04 v #28604 > > inl forces = [[ fun _ => 10 *^ i_hat () ]] 00:23:04 v #28605 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:04 v #28606 > > inl initial_state = 00:23:04 v #28607 > > particle_state { default_particle_state' with 00:23:04 v #28608 > > mass = 1 00:23:04 v #28609 > > } 00:23:04 v #28610 > > 00:23:04 v #28611 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:23:04 v #28612 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:23:04 v #28613 > > 00:23:04 v #28614 > > inl newton_x, newton_y = 00:23:04 v #28615 > > newton_states 00:23:04 v #28616 > > >> Some 00:23:04 v #28617 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:23:04 v #28618 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:23:04 v #28619 > > |> listm'.unzip 00:23:04 v #28620 > > 00:23:04 v #28621 > > inl _, relativity_y = 00:23:04 v #28622 > > relativity_states 00:23:04 v #28623 > > >> Some 00:23:04 v #28624 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:23:04 v #28625 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:23:04 v #28626 > > |> listm'.unzip 00:23:04 v #28627 > > 00:23:04 v #28628 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:23:04 v #28629 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:23:04 v #28630 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:23:04 v #28631 > > 00:23:04 v #28632 > > "response to a constant force", 00:23:04 v #28633 > > "time (years)", 00:23:04 v #28634 > > "velocity (multiples of c)", 00:23:04 v #28635 > > ;[[ 00:23:04 v #28636 > > "newtonian", newton_x, newton_y 00:23:04 v #28637 > > "relativistic", newton_x, relativity_y 00:23:04 v #28638 > > ]] 00:23:05 v #28639 > > 00:23:05 v #28640 > > ╭─[ 741.71ms - return value ]──────────────────────────────────────────────────╮ 00:23:05 v #28641 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:05 v #28642 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:05 v #28643 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:05 v #28644 > > │ stroke="none"/> │ 00:23:05 v #28645 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:05 v #28646 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:05 v #28647 > > │ fill="#FFFFFF"> │ 00:23:05 v #28648 > > │ response to a constant force │ 00:23:05 v #28649 > > │ </text> │ 00:23:05 v #28650 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:23:05 v #28651 > > │ y2="75"/> │ 00:23:05 v #28652 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:05 v #28653 > > │ y2="75"/> │ 00:23:05 v #28654 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:23:05 v #28655 > > │ y2="75"/> │ 00:23:05 v #28656 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:23:05 v #28657 > > │ y2="75"/> │ 00:23:05 v #28658 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:23:05 v #28659 > > │ y2="75"/> │ 00:23:05 v #28660 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:23:05 v #28661 > > │ x2="109" y2="75"/> │ 00:23:05 v #28662 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:23:05 v #28663 > > │ x2="119" y2="75"/> │ 00:23:05 v #28664 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:23:05 v #28665 > > │ x2="129" y2="75"/> │ 00:23:05 v #28666 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:23:05 v #28667 > > │ x2="139" y2="75"/> │ 00:23:05 v #28668 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:23:05 v #28669 > > │ x2="149" y2="75"/> │ 00:23:05 v #28670 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:23:05 v #28671 > > │ x2="159" y2="75"/> │ 00:23:05 v #28672 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:23:05 v #28673 > > │ x2="169" y2="75"/> │ 00:23:05 v #28674 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:23:05 v #28675 > > │ x2="179" y2="75"/> │ 00:23:05 v #28676 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235 402,235 404,234 │ 00:23:05 v #28677 > > │ 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230 418,229 │ 00:23:05 v #28678 > > │ 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224 │ 00:23:05 v #28679 > > │ 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220 │ 00:23:05 v #28680 > > │ 448,219 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215 │ 00:23:05 v #28681 > > │ 462,215 464,214 466,214 467,213 469,213 470,213 472,212 473,212 475,211 │ 00:23:05 v #28682 > > │ 477,211 478,210 480,210 481,209 483,209 485,208 486,208 488,208 489,207 │ 00:23:05 v #28683 > > │ 491,207 492,206 494,206 496,205 497,205 499,204 500,204 502,204 504,203 │ 00:23:05 v #28684 > > │ 505,203 507,202 508,202 510,202 511,201 513,201 515,200 516,200 518,200 │ 00:23:05 v #28685 > > │ 519,199 521,199 523,198 524,198 526,198 527,197 529,197 531,196 532,196 │ 00:23:05 v #28686 > > │ 534,196 535,195 537,195 538,194 540,194 542,194 543,193 545,193 546,193 │ 00:23:05 v #28687 > > │ 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190 561,189 │ 00:23:05 v #28688 > > │ 562,189 564,189 565,188 567,188 569,188 "/> │ 00:23:05 v #28689 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none" │ 00:23:05 v #28690 > > │ stroke="#FFFFFF"/> │ 00:23:05 v #28691 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" │ 00:23:05 v #28692 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:05 v #28693 > > │ fill="#FFFFFF"> │ 00:23:05 v #28694 > > │ newtonian │ 00:23:05 v #28695 > > │ </text> │ 00:23:05 v #28696 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" │ 00:23:05 v #28697 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:05 v #28698 > > │ fill="#FFFFFF"> │ 00:23:05 v #28699 > > │ relativistic │ 00:23:05 v #28700 > > │ </text> │ 00:23:05 v #28701 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:05 v #28702 > > │ points="474,242 494,242 "/> │ 00:23:05 v #28703 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:23:05 v #28704 > > │ points="474,257 494,257 "/> │ 00:23:05 v #28705 > > │ </svg> │ 00:23:05 v #28706 > > │ │ 00:23:05 v #28707 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:05 v #28708 > > 00:23:05 v #28709 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:05 v #28710 > > inl uniform_lorentz_force v_e v_b (st : particle_state) = 00:23:05 v #28711 > > st.charge *^ (v_e ^+^ st.velocity >< v_b) 00:23:05 v #28712 > > 00:23:05 v #28713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:05 v #28714 > > //// test 00:23:05 v #28715 > > 00:23:05 v #28716 > > inl c : f64 = 299792458 00:23:05 v #28717 > > inl ~method = runge_kutta_4 0.000000001 00:23:05 v #28718 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]] 00:23:05 v #28719 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:05 v #28720 > > inl initial_state = 00:23:05 v #28721 > > particle_state { default_particle_state' with 00:23:05 v #28722 > > mass = 0.000000000000000000000000001672621898 00:23:05 v #28723 > > charge = 0.0000000000000000001602176621 00:23:05 v #28724 > > velocity = 0.8 *^ (c *^ j_hat ()) 00:23:05 v #28725 > > } 00:23:05 v #28726 > > 00:23:05 v #28727 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:23:05 v #28728 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:23:05 v #28729 > > 00:23:05 v #28730 > > inl newton_x, newton_y = 00:23:05 v #28731 > > newton_states 00:23:05 v #28732 > > >> Some 00:23:05 v #28733 > > |> seq.take_while_ (fun (particle_state st) i => i < 100i32) 00:23:05 v #28734 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:23:05 v #28735 > > |> listm'.unzip 00:23:05 v #28736 > > 00:23:05 v #28737 > > inl relativity_x, relativity_y = 00:23:05 v #28738 > > relativity_states 00:23:05 v #28739 > > >> Some 00:23:05 v #28740 > > |> seq.take_while_ (fun (particle_state st) i => i < 165i32) 00:23:05 v #28741 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:23:05 v #28742 > > |> listm'.unzip 00:23:05 v #28743 > > 00:23:05 v #28744 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:23:05 v #28745 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:23:05 v #28746 > > 00:23:05 v #28747 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array' 00:23:05 v #28748 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:23:05 v #28749 > > 00:23:05 v #28750 > > "proton in a 1-t magnetic field", 00:23:05 v #28751 > > "x (m)", 00:23:05 v #28752 > > "y (m)", 00:23:05 v #28753 > > ;[[ 00:23:05 v #28754 > > "newtonian", newton_x, newton_y 00:23:05 v #28755 > > "relativistic", relativity_x, relativity_y 00:23:05 v #28756 > > ]] 00:23:06 v #28757 > > 00:23:06 v #28758 > > ╭─[ 722.29ms - return value ]──────────────────────────────────────────────────╮ 00:23:06 v #28759 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:06 v #28760 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:06 v #28761 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:06 v #28762 > > │ stroke="none"/> │ 00:23:06 v #28763 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:06 v #28764 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:06 v #28765 > > │ fill="#FFFFFF"> │ 00:23:06 v #28766 > > │ proton in a 1-t magnetic field │ 00:23:06 v #28767 > > │ </text> │ 00:23:06 v #28768 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │ 00:23:06 v #28769 > > │ y2="75"/> │ 00:23:06 v #28770 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:06 v #28771 > > │ y2="75"/> │ 00:23:06 v #28772 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │ 00:23:06 v #28773 > > │ y2="75"/> │ 00:23:06 v #28774 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:23:06 v #28775 > > │ y2="75"/> │ 00:23:06 v #28776 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424" │ 00:23:06 v #28777 > > │ x2="105" y2="75"/> │ 00:23:06 v #28778 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117" y1="424" │ 00:23:06 v #28779 > > │ x2="117" y2="75"/> │ 00:23:06 v #28780 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:23:06 v #28781 > > │ x2="129" y2="75"/> │ 00:23:06 v #28782 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424" │ 00:23:06 v #28783 > > │ x2="141" y2="75"/> │ 00:23:06 v #28784 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:23:06 v #28785 > > │ x2="153" y2="75"/> │ 00:23:06 v #28786 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165" y1="424" │ 00:23:06 v #28787 > > │ x2="165" y2="75"/> │ 00:23:06 v #28788 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177" y1="424" │ 00:23:06 v #28789 > > │ x2="177" y2="75"/> │ 00:23:06 v #28790 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189" y1="424" │ 00:23:06 v #28791 > > │ x2="189" y2="75"/> │ 00:23:06 v #28792 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201" y1="424" │ 00:23:06 v #28793 > > │ x2="201" y2="75"/> │ 00:23:06 v #28794 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253 568,263 566,272 │ 00:23:06 v #28795 > > │ 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342 517,350 │ 00:23:06 v #28796 > > │ 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402 │ 00:23:06 v #28797 > > │ 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414 │ 00:23:06 v #28798 > > │ 276,412 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383 │ 00:23:06 v #28799 > > │ 160,377 149,371 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 │ 00:23:06 v #28800 > > │ 81,300 77,290 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 │ 00:23:06 v #28801 > > │ 83,197 88,188 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 │ 00:23:06 v #28802 > > │ 164,121 176,115 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87 │ 00:23:06 v #28803 > > │ 295,86 310,85 324,85 338,86 353,87 367,88 381,90 394,93 408,96 421,100 │ 00:23:06 v #28804 > > │ 434,104 447,109 459,114 470,119 482,125 492,131 502,138 512,145 520,153 │ 00:23:06 v #28805 > > │ 529,161 536,169 543,177 549,186 554,194 558,203 562,213 565,222 567,231 │ 00:23:06 v #28806 > > │ 568,241 569,250 "/> │ 00:23:06 v #28807 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none" │ 00:23:06 v #28808 > > │ stroke="#FFFFFF"/> │ 00:23:06 v #28809 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" │ 00:23:06 v #28810 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:06 v #28811 > > │ fill="#FFFFFF"> │ 00:23:06 v #28812 > > │ newtonian │ 00:23:06 v #28813 > > │ </text> │ 00:23:06 v #28814 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" │ 00:23:06 v #28815 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:06 v #28816 > > │ fill="#FFFFFF"> │ 00:23:06 v #28817 > > │ relativistic │ 00:23:06 v #28818 > > │ </text> │ 00:23:06 v #28819 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:06 v #28820 > > │ points="474,242 494,242 "/> │ 00:23:06 v #28821 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:23:06 v #28822 > > │ points="474,257 494,257 "/> │ 00:23:06 v #28823 > > │ </svg> │ 00:23:06 v #28824 > > │ │ 00:23:06 v #28825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:06 v #28826 > > 00:23:06 v #28827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:06 v #28828 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:06 v #28829 > > │ #### system kinetic energy versus time 1 │ 00:23:06 v #28830 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:06 v #28831 > > 00:23:06 v #28832 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:06 v #28833 > > //// test 00:23:06 v #28834 > > 00:23:06 v #28835 > > inl central_force f (particle_state st1) (particle_state st2) = 00:23:06 v #28836 > > inl r1 = st1.pos_vec 00:23:06 v #28837 > > inl r2 = st2.pos_vec 00:23:06 v #28838 > > inl r21 = r2 ^-^ r1 00:23:06 v #28839 > > inl r21mag = magnitude r21 00:23:06 v #28840 > > f r21mag *^ r21 ^/ r21mag 00:23:06 v #28841 > > 00:23:06 v #28842 > > inl billiard_force k re = 00:23:06 v #28843 > > inl f r = 00:23:06 v #28844 > > if r >= re 00:23:06 v #28845 > > then 0 00:23:06 v #28846 > > else -k * (r - re) 00:23:06 v #28847 > > central_force f 00:23:06 v #28848 > > 00:23:06 v #28849 > > type force_vector = vec 00:23:06 v #28850 > > type two_body_force = particle_state -> particle_state -> force_vector 00:23:06 v #28851 > > 00:23:06 v #28852 > > union force = 00:23:06 v #28853 > > | ExternalForce : i32 * one_body_force 00:23:06 v #28854 > > | InternalForce : i32 * i32 * two_body_force 00:23:06 v #28855 > > 00:23:06 v #28856 > > nominal multi_particle_state = list particle_state 00:23:06 v #28857 > > 00:23:06 v #28858 > > nominal d_multi_particle_state = list d_particle_state 00:23:06 v #28859 > > 00:23:06 v #28860 > > inl force_on n sts force = 00:23:06 v #28861 > > match force with 00:23:06 v #28862 > > | ExternalForce (n0, f_one_body) => 00:23:06 v #28863 > > if n = n0 00:23:06 v #28864 > > then f_one_body 00:23:06 v #28865 > > else fun _ => zero_vec () 00:23:06 v #28866 > > | InternalForce (n0, n1, f_two_body) => 00:23:06 v #28867 > > if n = n0 00:23:06 v #28868 > > then f_two_body (sts |> listm'.item n1) 00:23:06 v #28869 > > elif n = n1 00:23:06 v #28870 > > then f_two_body (sts |> listm'.item n0) 00:23:06 v #28871 > > else fun _ => zero_vec () 00:23:06 v #28872 > > 00:23:06 v #28873 > > inl forces_on n (multi_particle_state sts) fs = 00:23:06 v #28874 > > fs |> listm.map (force_on n sts) 00:23:06 v #28875 > > 00:23:06 v #28876 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state = 00:23:06 v #28877 > > inl deriv (n, st) = 00:23:06 v #28878 > > newton_second_ps (forces_on n (multi_particle_state sts) fs) st 00:23:06 v #28879 > > sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state 00:23:06 v #28880 > > 00:23:06 v #28881 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1) 00:23:06 v #28882 > > (d_multi_particle_state dsts2) => 00:23:06 v #28883 > > d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2) 00:23:06 v #28884 > > 00:23:06 v #28885 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:23:06 v #28886 > > d_multi_particle_state (dsts |> listm.map (scale w)) 00:23:06 v #28887 > > 00:23:06 v #28888 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:23:06 v #28889 > > inl (d_multi_particle_state dsts) = 00:23:06 v #28890 > > real 00:23:06 v #28891 > > match dsts with 00:23:06 v #28892 > > | d_multi_particle_state _ => dsts 00:23:06 v #28893 > > listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state 00:23:06 v #28894 > > 00:23:06 v #28895 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:23:06 v #28896 > > d_multi_particle_state = 00:23:06 v #28897 > > fun deriv mpst0 => 00:23:06 v #28898 > > inl mpst1 = euler dt deriv mpst0 00:23:06 v #28899 > > inl (multi_particle_state sts0) = mpst0 00:23:06 v #28900 > > inl (multi_particle_state sts1) = mpst1 00:23:06 v #28901 > > sts1 00:23:06 v #28902 > > |> listm'.zip_ sts0 00:23:06 v #28903 > > |> listm.map (fun ((particle_state st0), (particle_state st1)) => 00:23:06 v #28904 > > particle_state { 00:23:06 v #28905 > > st1 with 00:23:06 v #28906 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:23:06 v #28907 > > } 00:23:06 v #28908 > > ) 00:23:06 v #28909 > > |> multi_particle_state 00:23:06 v #28910 > > 00:23:06 v #28911 > > inl update_mps (method : numerical_method multi_particle_state 00:23:06 v #28912 > > d_multi_particle_state) = 00:23:06 v #28913 > > newton_second_mps >> method 00:23:06 v #28914 > > 00:23:06 v #28915 > > inl states_mps (method : numerical_method multi_particle_state 00:23:06 v #28916 > > d_multi_particle_state) = 00:23:06 v #28917 > > newton_second_mps >> method >> seq.iterate_ 00:23:06 v #28918 > > 00:23:06 v #28919 > > 00:23:06 v #28920 > > inl kinetic_energy (particle_state st) = 00:23:06 v #28921 > > inl m = st.mass 00:23:06 v #28922 > > inl v = magnitude st.velocity 00:23:06 v #28923 > > 0.5 * m * v ** 2 00:23:06 v #28924 > > 00:23:06 v #28925 > > inl system_ke (multi_particle_state sts) = 00:23:06 v #28926 > > sts |> listm.map kinetic_energy |> listm'.sum 00:23:06 v #28927 > > 00:23:06 v #28928 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:23:06 v #28929 > > inl r1 = st1.pos_vec 00:23:06 v #28930 > > inl r2 = st2.pos_vec 00:23:06 v #28931 > > inl r21 = r2 ^-^ r1 00:23:06 v #28932 > > inl r21mag = magnitude r21 00:23:06 v #28933 > > k * (r21mag - re) ** 2 / 2 00:23:06 v #28934 > > 00:23:06 v #28935 > > inl earth_surface_gravity_pe (particle_state st) = 00:23:06 v #28936 > > inl g = 9.80665 00:23:06 v #28937 > > inl m = st.mass 00:23:06 v #28938 > > inl z = st.pos_vec.z 00:23:06 v #28939 > > m * g * z 00:23:06 v #28940 > > 00:23:06 v #28941 > > inl two_springs_pe (multi_particle_state sts) = 00:23:06 v #28942 > > inl st0 = sts |> listm'.item 0i32 00:23:06 v #28943 > > inl st1 = sts |> listm'.item 1i32 00:23:06 v #28944 > > linear_spring_pe 100 0.5 (default_particle_state ()) st0 00:23:06 v #28945 > > + linear_spring_pe 100 0.5 st0 st1 00:23:06 v #28946 > > + earth_surface_gravity_pe st0 00:23:06 v #28947 > > + earth_surface_gravity_pe st1 00:23:06 v #28948 > > 00:23:06 v #28949 > > inl two_springs_me mpst = 00:23:06 v #28950 > > system_ke mpst + two_springs_pe mpst 00:23:06 v #28951 > > 00:23:06 v #28952 > > inl ball_radius () = 0.03 00:23:06 v #28953 > > 00:23:06 v #28954 > > inl billiard_forces k = 00:23:06 v #28955 > > [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]] 00:23:06 v #28956 > > 00:23:06 v #28957 > > inl billiard_update n_method k dt = 00:23:06 v #28958 > > update_mps (n_method dt) (billiard_forces k) 00:23:06 v #28959 > > 00:23:06 v #28960 > > inl billiard_initial () = 00:23:06 v #28961 > > inl ball_mass = 0.160 00:23:06 v #28962 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:06 v #28963 > > multi_particle_state [[ 00:23:06 v #28964 > > particle_state { 00:23:06 v #28965 > > default_particle_state' with 00:23:06 v #28966 > > mass = ball_mass 00:23:06 v #28967 > > pos_vec = zero_vec () 00:23:06 v #28968 > > velocity = 0.2 *^ i_hat () 00:23:06 v #28969 > > } 00:23:06 v #28970 > > particle_state { 00:23:06 v #28971 > > default_particle_state' with 00:23:06 v #28972 > > mass = ball_mass 00:23:06 v #28973 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:23:06 v #28974 > > velocity = zero_vec () 00:23:06 v #28975 > > } 00:23:06 v #28976 > > ]] 00:23:06 v #28977 > > 00:23:06 v #28978 > > inl billiard_states ~n_method k dt = 00:23:06 v #28979 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:23:06 v #28980 > > 00:23:06 v #28981 > > inl billiard_states_finite n_method k dt = 00:23:06 v #28982 > > billiard_states n_method k dt 00:23:06 v #28983 > > >> Some 00:23:06 v #28984 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:23:06 v #28985 > > (mpst |> listm'.item 0i32).time <= 10 00:23:06 v #28986 > > ) 00:23:06 v #28987 > > 00:23:06 v #28988 > > inl momentum (particle_state st) = 00:23:06 v #28989 > > inl m = st.mass 00:23:06 v #28990 > > inl v = st.velocity 00:23:06 v #28991 > > m *^ v 00:23:06 v #28992 > > 00:23:06 v #28993 > > inl system_p (multi_particle_state sts) = 00:23:06 v #28994 > > sts |> listm.map momentum |> sum_vec 00:23:06 v #28995 > > 00:23:06 v #28996 > > 00:23:06 v #28997 > > inl time_ke_ec_x, time_ke_ec_y = 00:23:06 v #28998 > > billiard_states_finite euler_cromer_mps 30 0.03 00:23:06 v #28999 > > |> listm.map (fun (multi_particle_state mpst) => 00:23:06 v #29000 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:23:06 v #29001 > > ) 00:23:06 v #29002 > > |> listm'.unzip 00:23:06 v #29003 > > 00:23:06 v #29004 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:23:06 v #29005 > > billiard_states_finite runge_kutta_4 30 0.03 00:23:06 v #29006 > > |> listm.map (fun (multi_particle_state mpst) => 00:23:06 v #29007 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:23:06 v #29008 > > ) 00:23:06 v #29009 > > |> listm'.unzip 00:23:06 v #29010 > > 00:23:06 v #29011 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:23:06 v #29012 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:23:06 v #29013 > > 00:23:06 v #29014 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:23:06 v #29015 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:23:06 v #29016 > > 00:23:06 v #29017 > > "system kinetic energy versus time", 00:23:06 v #29018 > > "time (s)", 00:23:06 v #29019 > > "system kinetic energy (j)", 00:23:06 v #29020 > > ;[[ 00:23:06 v #29021 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:23:06 v #29022 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:23:06 v #29023 > > ]] 00:23:07 v #29024 > > 00:23:07 v #29025 > > ╭─[ 1.43s - return value ]─────────────────────────────────────────────────────╮ 00:23:07 v #29026 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:07 v #29027 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:07 v #29028 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:07 v #29029 > > │ stroke="none"/> │ 00:23:07 v #29030 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:07 v #29031 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:07 v #29032 > > │ fill="#FFFFFF"> │ 00:23:07 v #29033 > > │ system kinetic energy versus time │ 00:23:07 v #29034 > > │ </text> │ 00:23:07 v #29035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:23:07 v #29036 > > │ y2="75"/> │ 00:23:07 v #29037 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:07 v #29038 > > │ y2="75"/> │ 00:23:07 v #29039 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:23:07 v #29040 > > │ y2="75"/> │ 00:23:07 v #29041 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:23:07 v #29042 > > │ y2="75"/> │ 00:23:07 v #29043 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:23:07 v #29044 > > │ y2="75"/> │ 00:23:07 v #29045 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:23:07 v #29046 > > │ x2="109" y2="75"/> │ 00:23:07 v #29047 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:23:07 v #29048 > > │ x2="119" y2="75"/> │ 00:23:07 v #29049 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:23:07 v #29050 > > │ x2="129" y2="75"/> │ 00:23:07 v #29051 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:23:07 v #29052 > > │ x2="139" y2="75"/> │ 00:23:07 v #29053 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:23:07 v #29054 > > │ x2="149" y2="75"/> │ 00:23:07 v #29055 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:23:07 v #29056 > > │ x2="159" y2="75"/> │ 00:23:07 v #29057 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:23:07 v #29058 > > │ x2="169" y2="75"/> │ 00:23:07 v #29059 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:23:07 v #29060 > > │ x2="179" y2="75"/> │ 00:23:07 v #29061 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104 │ 00:23:07 v #29062 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104 │ 00:23:07 v #29063 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 │ 00:23:07 v #29064 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 │ 00:23:07 v #29065 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 │ 00:23:07 v #29066 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104 │ 00:23:07 v #29067 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104 │ 00:23:07 v #29068 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104 │ 00:23:07 v #29069 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104 │ 00:23:07 v #29070 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104 │ 00:23:07 v #29071 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104 │ 00:23:07 v #29072 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104 │ 00:23:07 v #29073 > > │ 564,104 566,104 567,104 569,104 "/> │ 00:23:07 v #29074 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none" │ 00:23:07 v #29075 > > │ stroke="#FFFFFF"/> │ 00:23:07 v #29076 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" │ 00:23:07 v #29077 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:07 v #29078 > > │ fill="#FFFFFF"> │ 00:23:07 v #29079 > > │ euler-cromer │ 00:23:07 v #29080 > > │ </text> │ 00:23:07 v #29081 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" │ 00:23:07 v #29082 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:07 v #29083 > > │ fill="#FFFFFF"> │ 00:23:07 v #29084 > > │ runge-kutta 4 │ 00:23:07 v #29085 > > │ </text> │ 00:23:07 v #29086 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:07 v #29087 > > │ points="469,242 489,242 "/> │ 00:23:07 v #29088 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:23:07 v #29089 > > │ points="469,257 489,257 "/> │ 00:23:07 v #29090 > > │ </svg> │ 00:23:07 v #29091 > > │ │ 00:23:07 v #29092 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:07 v #29093 > > 00:23:07 v #29094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:07 v #29095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:07 v #29096 > > │ #### wave 1 │ 00:23:07 v #29097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:07 v #29098 > > 00:23:07 v #29099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:07 v #29100 > > //// test 00:23:07 v #29101 > > 00:23:07 v #29102 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:23:07 v #29103 > > inl r1 = st1.pos_vec 00:23:07 v #29104 > > inl r2 = st2.pos_vec 00:23:07 v #29105 > > inl r21 = r2 ^-^ r1 00:23:07 v #29106 > > inl r21mag = magnitude r21 00:23:07 v #29107 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:23:07 v #29108 > > 00:23:07 v #29109 > > inl fixed_linear_spring k re r1 = 00:23:07 v #29110 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:07 v #29111 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:23:07 v #29112 > > r1 }) 00:23:07 v #29113 > > 00:23:07 v #29114 > > inl forces_string () = 00:23:07 v #29115 > > [[ 00:23:07 v #29116 > > ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ())) 00:23:07 v #29117 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:23:07 v #29118 > > ]] ++ ( 00:23:07 v #29119 > > listm'.init_series 0 59 1 00:23:07 v #29120 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:23:07 v #29121 > > ) 00:23:07 v #29122 > > 00:23:07 v #29123 > > inl string_update dt = 00:23:07 v #29124 > > update_mps (runge_kutta_4 dt) (forces_string ()) 00:23:07 v #29125 > > 00:23:07 v #29126 > > inl string_initial_overtone n = 00:23:07 v #29127 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:23:07 v #29128 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:07 v #29129 > > listm'.init_series 0.01 0.64 0.01 00:23:07 v #29130 > > |> listm.map (fun x => 00:23:07 v #29131 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:23:07 v #29132 > > particle_state { 00:23:07 v #29133 > > default_particle_state' with 00:23:07 v #29134 > > mass = ball_mass 00:23:07 v #29135 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:23:07 v #29136 > > velocity = zero_vec () 00:23:07 v #29137 > > } 00:23:07 v #29138 > > ) 00:23:07 v #29139 > > |> multi_particle_state 00:23:07 v #29140 > > 00:23:07 v #29141 > > inl string_initial_pluck () = 00:23:07 v #29142 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:23:07 v #29143 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:07 v #29144 > > listm'.init_series 0.01 0.64 0.01 00:23:07 v #29145 > > |> listm.map (fun x => 00:23:07 v #29146 > > inl y = 00:23:07 v #29147 > > inl n = if x <= 0.51 then 0 else 0.65 00:23:07 v #29148 > > 0.005 / (0.51 - n) * (x - n) 00:23:07 v #29149 > > particle_state { 00:23:07 v #29150 > > default_particle_state' with 00:23:07 v #29151 > > mass = ball_mass 00:23:07 v #29152 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:23:07 v #29153 > > velocity = zero_vec () 00:23:07 v #29154 > > } 00:23:07 v #29155 > > ) 00:23:07 v #29156 > > |> multi_particle_state 00:23:07 v #29157 > > 00:23:07 v #29158 > > let main () = 00:23:07 v #29159 > > inl ~frames = listm'.init_series 0 9 1f64 00:23:07 v #29160 > > inl initial_state = string_initial_overtone 3i32 00:23:07 v #29161 > > inl frames = 00:23:07 v #29162 > > frames 00:23:07 v #29163 > > |> listm.map (fun n => 00:23:07 v #29164 > > inl (multi_particle_state sts) = 00:23:07 v #29165 > > seq.iterate' (string_update 0.000025) initial_state |> fun f => 00:23:07 v #29166 > > f 0f64 00:23:07 v #29167 > > inl rs = 00:23:07 v #29168 > > [[ zero_vec () ]] 00:23:07 v #29169 > > ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec)) 00:23:07 v #29170 > > ++ [[ 0.65 *^ i_hat () ]] 00:23:07 v #29171 > > inl x, y = 00:23:07 v #29172 > > rs 00:23:07 v #29173 > > |> listm.map (fun r => r.x, r.y) 00:23:07 v #29174 > > |> listm'.unzip 00:23:07 v #29175 > > inl x = x |> listm'.box |> listm'.to_array' 00:23:07 v #29176 > > inl y = y |> listm'.box |> listm'.to_array' 00:23:07 v #29177 > > x, y 00:23:07 v #29178 > > ) 00:23:07 v #29179 > > |> listm'.box |> listm'.to_array' 00:23:07 v #29180 > > 00:23:07 v #29181 > > inl n = 0i32 00:23:07 v #29182 > > 00:23:07 v #29183 > > inl x, y = a frames |> am'.index n 00:23:07 v #29184 > > 00:23:07 v #29185 > > "wave", 00:23:07 v #29186 > > "position (m)", 00:23:07 v #29187 > > "displacement (m)", 00:23:07 v #29188 > > ;[[ 00:23:07 v #29189 > > ($'$"{!n}"' : string), x, y 00:23:07 v #29190 > > ]] 00:23:09 v #29191 > > 00:23:09 v #29192 > > ╭─[ 1.06s - return value ]─────────────────────────────────────────────────────╮ 00:23:09 v #29193 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:09 v #29194 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:09 v #29195 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:09 v #29196 > > │ stroke="none"/> │ 00:23:09 v #29197 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:09 v #29198 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:09 v #29199 > > │ fill="#FFFFFF"> │ 00:23:09 v #29200 > > │ wave │ 00:23:09 v #29201 > > │ </text> │ 00:23:09 v #29202 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:23:09 v #29203 > > │ y2="75"/> │ 00:23:09 v #29204 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:09 v #29205 > > │ y2="75"/> │ 00:23:09 v #29206 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:23:09 v #29207 > > │ y2="75"/> │ 00:23:09 v #29208 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │ 00:23:09 v #29209 > > │ y2="75"/> │ 00:23:09 v #29210 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:23:09 v #29211 > > │ y2="75"/> │ 00:23:09 v #29212 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424" │ 00:23:09 v #29213 > > │ x2="100" y2="75"/> │ 00:23:09 v #29214 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424" │ 00:23:09 v #29215 > > │ x2="108" y2="75"/> │ 00:23:09 v #29216 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424" │ 00:23:09 v #29217 > > │ x2="116" y2="75"/> │ 00:23:09 v #29218 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424" │ 00:23:09 v #29219 > > │ x2="123" y2="75"/> │ 00:23:09 v #29220 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424" │ 00:23:09 v #29221 > > │ x2="131" y2="75"/> │ 00:23:09 v #29222 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:23:09 v #29223 > > │ x2="139" y2="75"/> │ 00:23:09 v #29224 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424" │ 00:23:09 v #29225 > > │ x2="146" y2="75"/> │ 00:23:09 v #29226 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154" y1="424" │ 00:23:09 v #29227 > > │ x2="154" y2="75"/> │ 00:23:09 v #29228 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1" stroke="#FFFFFF" │ 00:23:09 v #29229 > > │ stroke-width="1" points="585,250 590,250 "/> │ 00:23:09 v #29230 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:23:09 v #29231 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:23:09 v #29232 > > │ 0.0 │ 00:23:09 v #29233 > > │ </text> │ 00:23:09 v #29234 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:23:09 v #29235 > > │ points="585,184 590,184 "/> │ 00:23:09 v #29236 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:23:09 v #29237 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:23:09 v #29238 > > │ 0.0 │ 00:23:09 v #29239 > > │ </text> │ 00:23:09 v #29240 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:23:09 v #29241 > > │ points="585,118 590,118 "/> │ 00:23:09 v #29242 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:09 v #29243 > > │ points="69,250 77,226 85,203 93,181 100,160 108,141 116,124 123,110 131,99 │ 00:23:09 v #29244 > > │ 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129 200,147 208,167 │ 00:23:09 v #29245 > > │ 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347 277,365 │ 00:23:09 v #29246 > > │ 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394 │ 00:23:09 v #29247 > > │ 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211 │ 00:23:09 v #29248 > > │ 423,188 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87 │ 00:23:09 v #29249 > > │ 499,91 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226 │ 00:23:09 v #29250 > > │ 569,250 "/> │ 00:23:09 v #29251 > > │ <rect x="525" y="235" width="55" height="30" opacity="1" fill="none" │ 00:23:09 v #29252 > > │ stroke="#FFFFFF"/> │ 00:23:09 v #29253 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start" │ 00:23:09 v #29254 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:09 v #29255 > > │ fill="#FFFFFF"> │ 00:23:09 v #29256 > > │ 0 │ 00:23:09 v #29257 > > │ </text> │ 00:23:09 v #29258 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:09 v #29259 > > │ points="535,250 555,250 "/> │ 00:23:09 v #29260 > > │ </svg> │ 00:23:09 v #29261 > > │ │ 00:23:09 v #29262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:09 v #29263 > > 00:23:09 v #29264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:09 v #29265 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:09 v #29266 > > │ #### system kinetic energy versus time 2 │ 00:23:09 v #29267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:09 v #29268 > > 00:23:09 v #29269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:09 v #29270 > > //// test 00:23:09 v #29271 > > 00:23:09 v #29272 > > inl central_force f (particle_state st1) (particle_state st2) = 00:23:09 v #29273 > > inl r1 = st1.pos_vec 00:23:09 v #29274 > > inl r2 = st2.pos_vec 00:23:09 v #29275 > > inl r21 = r2 ^-^ r1 00:23:09 v #29276 > > inl r21mag = magnitude r21 00:23:09 v #29277 > > f r21mag *^ r21 ^/ r21mag 00:23:09 v #29278 > > 00:23:09 v #29279 > > inl billiard_force k re = 00:23:09 v #29280 > > inl f r = 00:23:09 v #29281 > > if r >= re 00:23:09 v #29282 > > then 0 00:23:09 v #29283 > > else -k * (r - re) 00:23:09 v #29284 > > central_force f 00:23:09 v #29285 > > 00:23:09 v #29286 > > type force_vector = vec 00:23:09 v #29287 > > type two_body_force = particle_state -> particle_state -> force_vector 00:23:09 v #29288 > > 00:23:09 v #29289 > > union force t = 00:23:09 v #29290 > > | ExternalForce : t * one_body_force 00:23:09 v #29291 > > | InternalForce : t * t * two_body_force 00:23:09 v #29292 > > 00:23:09 v #29293 > > nominal multi_particle_state = stream.stream particle_state 00:23:09 v #29294 > > 00:23:09 v #29295 > > nominal d_multi_particle_state = stream.stream d_particle_state 00:23:09 v #29296 > > 00:23:09 v #29297 > > inl force_on n s force = 00:23:09 v #29298 > > match force with 00:23:09 v #29299 > > | ExternalForce (n0, f_one_body) => 00:23:09 v #29300 > > if n = n0 00:23:09 v #29301 > > then f_one_body 00:23:09 v #29302 > > else fun _ => zero_vec () 00:23:09 v #29303 > > | InternalForce (n0, n1, f_two_body) => 00:23:09 v #29304 > > if n = n0 00:23:09 v #29305 > > then s |> stream.try_item n1 |> optionm.map f_two_body 00:23:09 v #29306 > > elif n = n1 00:23:09 v #29307 > > then s |> stream.try_item n0 |> optionm.map f_two_body 00:23:09 v #29308 > > else None 00:23:09 v #29309 > > |> optionm'.default_value (fun _ => zero_vec ()) 00:23:09 v #29310 > > 00:23:09 v #29311 > > inl forces_on n (multi_particle_state sts) fs = 00:23:09 v #29312 > > fs 00:23:09 v #29313 > > |> listm.map (force_on n sts) 00:23:09 v #29314 > > 00:23:09 v #29315 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) = 00:23:09 v #29316 > > inl deriv (n, st) = 00:23:09 v #29317 > > newton_second_ps (forces_on n mpst fs) st 00:23:09 v #29318 > > sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state 00:23:09 v #29319 > > 00:23:09 v #29320 > > instance (+++) d_multi_particle_state = 00:23:09 v #29321 > > fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) => 00:23:09 v #29322 > > (dsts1, dsts2) 00:23:09 v #29323 > > ||> stream.zip_with (+++) 00:23:09 v #29324 > > |> d_multi_particle_state 00:23:09 v #29325 > > 00:23:09 v #29326 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:23:09 v #29327 > > dsts 00:23:09 v #29328 > > |> stream.map (scale w) 00:23:09 v #29329 > > |> d_multi_particle_state 00:23:09 v #29330 > > 00:23:09 v #29331 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:23:09 v #29332 > > inl (d_multi_particle_state dsts) = 00:23:09 v #29333 > > real 00:23:09 v #29334 > > match dsts with 00:23:09 v #29335 > > | d_multi_particle_state _ => dsts 00:23:09 v #29336 > > (dsts, sts) 00:23:09 v #29337 > > ||> stream.zip_with (shift dt) 00:23:09 v #29338 > > |> stream.memoize 00:23:09 v #29339 > > |> fun x => x () 00:23:09 v #29340 > > |> multi_particle_state 00:23:09 v #29341 > > 00:23:09 v #29342 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:23:09 v #29343 > > d_multi_particle_state = 00:23:09 v #29344 > > fun deriv ((multi_particle_state sts0) as mpst0) => 00:23:09 v #29345 > > inl (multi_particle_state sts1) = euler dt deriv mpst0 00:23:09 v #29346 > > (sts0, sts1) 00:23:09 v #29347 > > ||> stream.zip 00:23:09 v #29348 > > |> stream.map (fun ((particle_state st0), (particle_state st1)) => 00:23:09 v #29349 > > particle_state { 00:23:09 v #29350 > > st1 with 00:23:09 v #29351 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:23:09 v #29352 > > } 00:23:09 v #29353 > > ) 00:23:09 v #29354 > > |> multi_particle_state 00:23:09 v #29355 > > 00:23:09 v #29356 > > inl update_mps (method : numerical_method multi_particle_state 00:23:09 v #29357 > > d_multi_particle_state) = 00:23:09 v #29358 > > newton_second_mps >> method 00:23:09 v #29359 > > 00:23:09 v #29360 > > inl states_mps (method : numerical_method multi_particle_state 00:23:09 v #29361 > > d_multi_particle_state) = 00:23:09 v #29362 > > newton_second_mps 00:23:09 v #29363 > > >> method 00:23:09 v #29364 > > >> (fun x (multi_particle_state y) => 00:23:09 v #29365 > > y 00:23:09 v #29366 > > |> stream.memoize 00:23:09 v #29367 > > |> (fun x => x ()) 00:23:09 v #29368 > > |> multi_particle_state |> x 00:23:09 v #29369 > > ) 00:23:09 v #29370 > > // >> stream.iterate 00:23:09 v #29371 > > >> seq.iterate' 00:23:09 v #29372 > > 00:23:09 v #29373 > > inl kinetic_energy (particle_state st) = 00:23:09 v #29374 > > inl m = st.mass 00:23:09 v #29375 > > inl v = magnitude st.velocity 00:23:09 v #29376 > > 0.5 * m * v ** 2 00:23:09 v #29377 > > 00:23:09 v #29378 > > inl system_ke (multi_particle_state sts) = 00:23:09 v #29379 > > sts 00:23:09 v #29380 > > |> stream.map kinetic_energy 00:23:09 v #29381 > > |> stream.sum 00:23:09 v #29382 > > 00:23:09 v #29383 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:23:09 v #29384 > > inl r1 = st1.pos_vec 00:23:09 v #29385 > > inl r2 = st2.pos_vec 00:23:09 v #29386 > > inl r21 = r2 ^-^ r1 00:23:09 v #29387 > > inl r21mag = magnitude r21 00:23:09 v #29388 > > k * (r21mag - re) ** 2 / 2 00:23:09 v #29389 > > 00:23:09 v #29390 > > inl earth_surface_gravity_pe (particle_state st) = 00:23:09 v #29391 > > inl g = 9.80665 00:23:09 v #29392 > > inl m = st.mass 00:23:09 v #29393 > > inl z = st.pos_vec.z 00:23:09 v #29394 > > m * g * z 00:23:09 v #29395 > > 00:23:09 v #29396 > > inl ball_radius () = 0.03 00:23:09 v #29397 > > 00:23:09 v #29398 > > inl billiard_forces k = 00:23:09 v #29399 > > [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]] 00:23:09 v #29400 > > 00:23:09 v #29401 > > inl billiard_initial () = 00:23:09 v #29402 > > inl ball_mass = 0.160 00:23:09 v #29403 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:09 v #29404 > > [[ 00:23:09 v #29405 > > particle_state { 00:23:09 v #29406 > > default_particle_state' with 00:23:09 v #29407 > > mass = ball_mass 00:23:09 v #29408 > > pos_vec = zero_vec () 00:23:09 v #29409 > > velocity = 0.2 *^ i_hat () 00:23:09 v #29410 > > } 00:23:09 v #29411 > > particle_state { 00:23:09 v #29412 > > default_particle_state' with 00:23:09 v #29413 > > mass = ball_mass 00:23:09 v #29414 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:23:09 v #29415 > > velocity = zero_vec () 00:23:09 v #29416 > > } 00:23:09 v #29417 > > ]] 00:23:09 v #29418 > > |> stream.from_list 00:23:09 v #29419 > > |> multi_particle_state 00:23:09 v #29420 > > 00:23:09 v #29421 > > inl billiard_states ~n_method k dt = 00:23:09 v #29422 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:23:09 v #29423 > > 00:23:09 v #29424 > > inl billiard_states_finite n_method k dt = 00:23:09 v #29425 > > billiard_states n_method k dt 00:23:09 v #29426 > > >> Some 00:23:09 v #29427 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:23:09 v #29428 > > match mpst |> stream.try_item 0i32 with 00:23:09 v #29429 > > | Some st => 00:23:09 v #29430 > > st.time <= 10 00:23:09 v #29431 > > | None => false 00:23:09 v #29432 > > ) 00:23:09 v #29433 > > 00:23:09 v #29434 > > inl momentum (particle_state st) = 00:23:09 v #29435 > > inl m = st.mass 00:23:09 v #29436 > > inl v = st.velocity 00:23:09 v #29437 > > m *^ v 00:23:09 v #29438 > > 00:23:09 v #29439 > > inl system_p (multi_particle_state sts) = 00:23:09 v #29440 > > sts 00:23:09 v #29441 > > |> stream.map momentum 00:23:09 v #29442 > > |> stream.fold (^+^) (zero_vec ()) 00:23:09 v #29443 > > 00:23:09 v #29444 > > inl time_ke_ec_x, time_ke_ec_y = 00:23:09 v #29445 > > billiard_states_finite euler_cromer_mps 30 0.03 00:23:09 v #29446 > > |> listm.map (fun (multi_particle_state mpst) => 00:23:09 v #29447 > > mpst |> stream.try_item 0i32 00:23:09 v #29448 > > |> optionm.map (fun st => 00:23:09 v #29449 > > st.time, system_ke (multi_particle_state mpst) 00:23:09 v #29450 > > ) 00:23:09 v #29451 > > ) 00:23:09 v #29452 > > // |> stream.to_list 00:23:09 v #29453 > > |> listm'.choose id 00:23:09 v #29454 > > |> listm'.unzip 00:23:09 v #29455 > > 00:23:09 v #29456 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:23:09 v #29457 > > billiard_states_finite runge_kutta_4 30 0.03 00:23:09 v #29458 > > |> listm.map (fun (multi_particle_state mpst) => 00:23:09 v #29459 > > mpst |> stream.try_item 0i32 00:23:09 v #29460 > > |> optionm.map (fun st => 00:23:09 v #29461 > > st.time, system_ke (multi_particle_state mpst) 00:23:09 v #29462 > > ) 00:23:09 v #29463 > > ) 00:23:09 v #29464 > > // |> stream.to_list 00:23:09 v #29465 > > |> listm'.choose id 00:23:09 v #29466 > > |> listm'.unzip 00:23:09 v #29467 > > 00:23:09 v #29468 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:23:09 v #29469 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:23:09 v #29470 > > 00:23:09 v #29471 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:23:09 v #29472 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:23:09 v #29473 > > 00:23:09 v #29474 > > "system kinetic energy versus time", 00:23:09 v #29475 > > "time (s)", 00:23:09 v #29476 > > "system kinetic energy (j)", 00:23:09 v #29477 > > ;[[ 00:23:09 v #29478 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:23:09 v #29479 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:23:09 v #29480 > > ]] 00:23:10 v #29481 > > 00:23:10 v #29482 > > ╭─[ 1.85s - return value ]─────────────────────────────────────────────────────╮ 00:23:10 v #29483 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:10 v #29484 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:10 v #29485 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:10 v #29486 > > │ stroke="none"/> │ 00:23:10 v #29487 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:10 v #29488 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:10 v #29489 > > │ fill="#FFFFFF"> │ 00:23:10 v #29490 > > │ system kinetic energy versus time │ 00:23:10 v #29491 > > │ </text> │ 00:23:10 v #29492 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:23:10 v #29493 > > │ y2="75"/> │ 00:23:10 v #29494 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:10 v #29495 > > │ y2="75"/> │ 00:23:10 v #29496 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:23:10 v #29497 > > │ y2="75"/> │ 00:23:10 v #29498 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:23:10 v #29499 > > │ y2="75"/> │ 00:23:10 v #29500 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:23:10 v #29501 > > │ y2="75"/> │ 00:23:10 v #29502 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:23:10 v #29503 > > │ x2="109" y2="75"/> │ 00:23:10 v #29504 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:23:10 v #29505 > > │ x2="119" y2="75"/> │ 00:23:10 v #29506 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:23:10 v #29507 > > │ x2="129" y2="75"/> │ 00:23:10 v #29508 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:23:10 v #29509 > > │ x2="139" y2="75"/> │ 00:23:10 v #29510 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:23:10 v #29511 > > │ x2="149" y2="75"/> │ 00:23:10 v #29512 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:23:10 v #29513 > > │ x2="159" y2="75"/> │ 00:23:10 v #29514 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:23:10 v #29515 > > │ x2="169" y2="75"/> │ 00:23:10 v #29516 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:23:10 v #29517 > > │ x2="179" y2="75"/> │ 00:23:10 v #29518 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104 │ 00:23:10 v #29519 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104 │ 00:23:10 v #29520 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 │ 00:23:10 v #29521 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 │ 00:23:10 v #29522 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 │ 00:23:10 v #29523 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104 │ 00:23:10 v #29524 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104 │ 00:23:10 v #29525 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104 │ 00:23:10 v #29526 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104 │ 00:23:10 v #29527 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104 │ 00:23:10 v #29528 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104 │ 00:23:10 v #29529 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104 │ 00:23:10 v #29530 > > │ 564,104 566,104 567,104 569,104 "/> │ 00:23:10 v #29531 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none" │ 00:23:10 v #29532 > > │ stroke="#FFFFFF"/> │ 00:23:10 v #29533 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" │ 00:23:10 v #29534 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:10 v #29535 > > │ fill="#FFFFFF"> │ 00:23:10 v #29536 > > │ euler-cromer │ 00:23:10 v #29537 > > │ </text> │ 00:23:10 v #29538 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" │ 00:23:10 v #29539 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:10 v #29540 > > │ fill="#FFFFFF"> │ 00:23:10 v #29541 > > │ runge-kutta 4 │ 00:23:10 v #29542 > > │ </text> │ 00:23:10 v #29543 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:10 v #29544 > > │ points="469,242 489,242 "/> │ 00:23:10 v #29545 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:23:10 v #29546 > > │ points="469,257 489,257 "/> │ 00:23:10 v #29547 > > │ </svg> │ 00:23:10 v #29548 > > │ │ 00:23:10 v #29549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:10 v #29550 > > 00:23:10 v #29551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:10 v #29552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:10 v #29553 > > │ #### wave 2 │ 00:23:10 v #29554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:10 v #29555 > > 00:23:10 v #29556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:10 v #29557 > > //// test 00:23:10 v #29558 > > 00:23:10 v #29559 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:23:10 v #29560 > > inl r1 = st1.pos_vec 00:23:10 v #29561 > > inl r2 = st2.pos_vec 00:23:10 v #29562 > > inl r21 = r2 ^-^ r1 00:23:10 v #29563 > > inl r21mag = magnitude r21 00:23:10 v #29564 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:23:10 v #29565 > > 00:23:10 v #29566 > > inl fixed_linear_spring k re r1 = 00:23:10 v #29567 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:10 v #29568 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:23:10 v #29569 > > r1 }) 00:23:10 v #29570 > > 00:23:10 v #29571 > > inl forces_string () = 00:23:10 v #29572 > > [[ 00:23:10 v #29573 > > ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ())) 00:23:10 v #29574 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:23:10 v #29575 > > ]] ++ ( 00:23:10 v #29576 > > listm'.init_series 0 59 1 00:23:10 v #29577 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:23:10 v #29578 > > ) 00:23:10 v #29579 > > 00:23:10 v #29580 > > inl string_update dt = 00:23:10 v #29581 > > update_mps (join runge_kutta_4 dt) (join forces_string ()) 00:23:10 v #29582 > > 00:23:10 v #29583 > > inl string_initial_overtone n = 00:23:10 v #29584 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:23:10 v #29585 > > inl (particle_state default_particle_state') = default_particle_state () 00:23:10 v #29586 > > listm'.init_series 0.01 0.64 0.01 00:23:10 v #29587 > > |> listm.map (fun x => 00:23:10 v #29588 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:23:10 v #29589 > > particle_state { 00:23:10 v #29590 > > default_particle_state' with 00:23:10 v #29591 > > mass = ball_mass 00:23:10 v #29592 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:23:10 v #29593 > > velocity = zero_vec () 00:23:10 v #29594 > > } 00:23:10 v #29595 > > ) 00:23:10 v #29596 > > |> stream.from_list 00:23:10 v #29597 > > |> multi_particle_state 00:23:10 v #29598 > > 00:23:10 v #29599 > > let main () = 00:23:10 v #29600 > > inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list 00:23:10 v #29601 > > inl ~initial_state = string_initial_overtone 3i32 00:23:10 v #29602 > > inl frames = 00:23:10 v #29603 > > frames 00:23:10 v #29604 > > |> stream.map (fun n => 00:23:10 v #29605 > > inl (multi_particle_state sts) = 00:23:10 v #29606 > > stream.iterate (string_update 0.000025) initial_state |> 00:23:10 v #29607 > > stream.item n 00:23:10 v #29608 > > inl x, y = 00:23:10 v #29609 > > [[ zero_vec () ]] 00:23:10 v #29610 > > ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |> 00:23:10 v #29611 > > stream.to_list) 00:23:10 v #29612 > > ++ [[ 0.65 *^ i_hat () ]] 00:23:10 v #29613 > > |> listm.map (fun r => r.x, r.y) 00:23:10 v #29614 > > |> stream.from_list 00:23:10 v #29615 > > |> stream.unzip 00:23:10 v #29616 > > inl x = x |> stream.to_list |> listm'.box |> listm'.to_array' 00:23:10 v #29617 > > inl y = y |> stream.to_list |> listm'.box |> listm'.to_array' 00:23:10 v #29618 > > x, y 00:23:10 v #29619 > > ) 00:23:10 v #29620 > > 00:23:10 v #29621 > > inl plots = 00:23:10 v #29622 > > frames 00:23:10 v #29623 > > |> stream.indexed 00:23:10 v #29624 > > |> stream.map (fun ((n : i32), (x, y)) => 00:23:10 v #29625 > > "wave", 00:23:10 v #29626 > > "position (m)", 00:23:10 v #29627 > > "displacement (m)", 00:23:10 v #29628 > > ;[[ 00:23:10 v #29629 > > ($'$"{!n}"' : string), x, y 00:23:10 v #29630 > > ]] 00:23:10 v #29631 > > ) 00:23:10 v #29632 > > 00:23:10 v #29633 > > plots |> stream.to_list |> listm'.box |> listm'.to_array' 00:23:16 v #29634 > > 00:23:16 v #29635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:16 v #29636 > > ╭─[ 5.14s - diagnostics ]──────────────────────────────────────────────────────╮ 00:23:16 v #29637 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete pattern matches │ 00:23:16 v #29638 > > │ on this expression. For example, the value 'UH7_1 (_, _, _, _)' may indicate │ 00:23:16 v #29639 > > │ a case not covered by the pattern(s). │ 00:23:16 v #29640 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:16 v #29641 > > 00:23:16 v #29642 > > ╭─[ 5.34s - return value ]─────────────────────────────────────────────────────╮ 00:23:16 v #29643 > > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │ 00:23:16 v #29644 > > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480" │ 00:23:16 v #29645 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:23:16 v #29646 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:23:16 v #29647 > > │ stroke="none"/> │ 00:23:16 v #29648 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:23:16 v #29649 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:16 v #29650 > > │ fill="#FFFFFF"> │ 00:23:16 v #29651 > > │ wave │ 00:23:16 v #29652 > > │ </text> │ 00:23:16 v #29653 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:23:16 v #29654 > > │ y2="75"/> │ 00:23:16 v #29655 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:23:16 v #29656 > > │ y2="75"/> │ 00:23:16 v #29657 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:23:16 v #29658 > > │ y2="75"/> │ 00:23:16 v #29659 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │ 00:23:16 v #29660 > > │ y2="75"/> │ 00:23:16 v #29661 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:23:16 v #29662 > > │ y2="75"/> │ 00:23:16 v #29663 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424" │ 00:23:16 v #29664 > > │ x2="100" y2="75"/> │ 00:23:16 v #29665 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424" │ 00:23:16 v #29666 > > │ x2="108" y2="75"/> │ 00:23:16 v #29667 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424" │ 00:23:16 v #29668 > > │ x2="116" y2="75"/> │ 00:23:16 v #29669 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424" │ 00:23:16 v #29670 > > │ x2="123" y2="75"/> │ 00:23:16 v #29671 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424" │ 00:23:16 v #29672 > > │ x2="131" y2="75"/> │ 00:23:16 v #29673 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:23:16 v #29674 > > │ x2="139" y2="75"/> │ 00:23:16 v #29675 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424" │ 00:23:16 v #29676 > > │ x2="146" y2="75"/> │ 00:23:16 v #29677 > > │ <line opacity="1" stroke="#...28 590,128 "/> │ 00:23:16 v #29678 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:16 v #29679 > > │ points="69,363 77,322 85,283 92,246 100,211 107,179 115,151 122,127 130,108 │ 00:23:16 v #29680 > > │ 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159 198,188 205,220 │ 00:23:16 v #29681 > > │ 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334 223,344 │ 00:23:16 v #29682 > > │ 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406 │ 00:23:16 v #29683 > > │ 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400 │ 00:23:16 v #29684 > > │ 224,395 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339 │ 00:23:16 v #29685 > > │ 224,332 224,327 224,322 224,318 224,314 224,312 224,311 539,239 546,279 │ 00:23:16 v #29686 > > │ 569,403 561,363 "/> │ 00:23:16 v #29687 > > │ <rect x="519" y="235" width="61" height="30" opacity="1" fill="none" │ 00:23:16 v #29688 > > │ stroke="#FFFFFF"/> │ 00:23:16 v #29689 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start" │ 00:23:16 v #29690 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:23:16 v #29691 > > │ fill="#FFFFFF"> │ 00:23:16 v #29692 > > │ 65 │ 00:23:16 v #29693 > > │ </text> │ 00:23:16 v #29694 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:23:16 v #29695 > > │ points="529,250 549,250 "/> │ 00:23:16 v #29696 > > │ </svg> │ 00:23:16 v #29697 > > │ </td></tr></tbody></table><style> │ 00:23:16 v #29698 > > │ .dni-code-hint { │ 00:23:16 v #29699 > > │ font-style: italic; │ 00:23:16 v #29700 > > │ overflow: hidden; │ 00:23:16 v #29701 > > │ white-space: nowrap; │ 00:23:16 v #29702 > > │ } │ 00:23:16 v #29703 > > │ .dni-treeview { │ 00:23:16 v #29704 > > │ white-space: nowrap; │ 00:23:16 v #29705 > > │ } │ 00:23:16 v #29706 > > │ .dni-treeview td { │ 00:23:16 v #29707 > > │ vertical-align: top; │ 00:23:16 v #29708 > > │ text-align: start; │ 00:23:16 v #29709 > > │ } │ 00:23:16 v #29710 > > │ details.dni-treeview { │ 00:23:16 v #29711 > > │ padding-left: 1em; │ 00:23:16 v #29712 > > │ } │ 00:23:16 v #29713 > > │ table td { │ 00:23:16 v #29714 > > │ text-align: start; │ 00:23:16 v #29715 > > │ } │ 00:23:16 v #29716 > > │ table tr { │ 00:23:16 v #29717 > > │ vertical-align: top; │ 00:23:16 v #29718 > > │ margin: 0em 0px; │ 00:23:16 v #29719 > > │ } │ 00:23:16 v #29720 > > │ table tr td pre │ 00:23:16 v #29721 > > │ { │ 00:23:16 v #29722 > > │ vertical-align: top !important; │ 00:23:16 v #29723 > > │ margin: 0em 0px !important; │ 00:23:16 v #29724 > > │ } │ 00:23:16 v #29725 > > │ table th { │ 00:23:16 v #29726 > > │ text-align: start; │ 00:23:16 v #29727 > > │ } │ 00:23:16 v #29728 > > │ </style> │ 00:23:16 v #29729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:16 v #29730 > > 00:23:16 v #29731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:16 v #29732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:16 v #29733 > > │ ## end │ 00:23:16 v #29734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:16 v #29735 > 00:01:01 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 157679 } 00:23:16 v #29736 > 00:01:01 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:17 v #29737 > 00:01:03 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/physics.dib.ipynb to html 00:23:17 v #29738 > 00:01:03 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:23:17 v #29739 > 00:01:03 v #7 ! validate(nb) 00:23:18 v #29740 > 00:01:03 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:23:18 v #29741 > 00:01:03 v #9 ! return _pygments_highlight( 00:23:22 v #29742 > 00:01:07 v #10 ! [NbConvertApp] Writing 2508212 bytes to c:\home\git\polyglot\lib\spiral\physics.dib.html 00:23:22 v #29743 > 00:01:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 857 } 00:23:22 v #29744 > 00:01:07 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 857 } 00:23:22 v #29745 > 00:01:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:22 v #29746 > 00:01:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:23:22 v #29747 > 00:01:07 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:23:22 v #29748 > 00:01:07 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 158595 } 00:23:22 d #29749 runtime.execute_with_options_async / { exit_code = 0; output_length = 167009 } 00:23:22 d #32 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path physics.dib --retries 3 00:23:22 d #29750 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path seq.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:22 v #29751 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) } 00:23:22 v #29752 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/seq.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/seq.dib" --output-path "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:23:24 v #29753 > > 00:23:24 v #29754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #29755 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:24 v #29756 > > │ # seq │ 00:23:24 v #29757 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:27 v #29758 > > 00:23:27 v #29759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:27 v #29760 > > //// test 00:23:27 v #29761 > > 00:23:27 v #29762 > > open testing 00:23:28 v #29763 > > 00:23:28 v #29764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:28 v #29765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:28 v #29766 > > │ ## seq │ 00:23:28 v #29767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:28 v #29768 > > 00:23:28 v #29769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:28 v #29770 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:28 v #29771 > > │ ### seq │ 00:23:28 v #29772 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:28 v #29773 > > 00:23:28 v #29774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:28 v #29775 > > type seq dim el = dim -> option el 00:23:29 v #29776 > > 00:23:29 v #29777 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:29 v #29778 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:29 v #29779 > > │ ### try_item │ 00:23:29 v #29780 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:29 v #29781 > > 00:23:29 v #29782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:29 v #29783 > > inl try_item n s = 00:23:29 v #29784 > > n |> s 00:23:29 v #29785 > > 00:23:29 v #29786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:29 v #29787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:29 v #29788 > > │ ### from_list │ 00:23:29 v #29789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:29 v #29790 > > 00:23:29 v #29791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:29 v #29792 > > inl from_list list = 00:23:29 v #29793 > > fun n => 00:23:29 v #29794 > > list 00:23:29 v #29795 > > |> listm'.try_item n 00:23:30 v #29796 > > 00:23:30 v #29797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:30 v #29798 > > //// test 00:23:30 v #29799 > > 00:23:30 v #29800 > > listm.init 10i32 print_and_return 00:23:30 v #29801 > > |> from_list 00:23:30 v #29802 > > |> try_item 5i32 00:23:30 v #29803 > > |> _assert_eq (Some 5i32) 00:23:31 v #29804 > > 00:23:31 v #29805 > > ╭─[ 1.37s - stdout ]───────────────────────────────────────────────────────────╮ 00:23:31 v #29806 > > │ print_and_return / x: 0 │ 00:23:31 v #29807 > > │ print_and_return / x: 1 │ 00:23:31 v #29808 > > │ print_and_return / x: 2 │ 00:23:31 v #29809 > > │ print_and_return / x: 3 │ 00:23:31 v #29810 > > │ print_and_return / x: 4 │ 00:23:31 v #29811 > > │ print_and_return / x: 5 │ 00:23:31 v #29812 > > │ print_and_return / x: 6 │ 00:23:31 v #29813 > > │ print_and_return / x: 7 │ 00:23:31 v #29814 > > │ print_and_return / x: 8 │ 00:23:31 v #29815 > > │ print_and_return / x: 9 │ 00:23:31 v #29816 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:23:31 v #29817 > > │ │ 00:23:31 v #29818 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:31 v #29819 > > 00:23:31 v #29820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:31 v #29821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:31 v #29822 > > │ ### map │ 00:23:31 v #29823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:31 v #29824 > > 00:23:31 v #29825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:31 v #29826 > > inl map fn s = 00:23:31 v #29827 > > fun n => 00:23:31 v #29828 > > n 00:23:31 v #29829 > > |> s 00:23:31 v #29830 > > |> optionm.map fn 00:23:31 v #29831 > > 00:23:31 v #29832 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:31 v #29833 > > //// test 00:23:31 v #29834 > > 00:23:31 v #29835 > > listm.init 10i32 id 00:23:31 v #29836 > > |> from_list 00:23:31 v #29837 > > |> map ((*) 2) 00:23:31 v #29838 > > |> try_item 5i32 00:23:31 v #29839 > > |> _assert_eq (Some 10i32) 00:23:32 v #29840 > > 00:23:32 v #29841 > > ╭─[ 501.39ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:32 v #29842 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 │ 00:23:32 v #29843 > > │ │ 00:23:32 v #29844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:32 v #29845 > > 00:23:32 v #29846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:32 v #29847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:32 v #29848 > > │ ### mapi │ 00:23:32 v #29849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:32 v #29850 > > 00:23:32 v #29851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:32 v #29852 > > inl mapi fn s = 00:23:32 v #29853 > > fun n => 00:23:32 v #29854 > > n 00:23:32 v #29855 > > |> s 00:23:32 v #29856 > > |> optionm.map (fn n) 00:23:32 v #29857 > > 00:23:32 v #29858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:32 v #29859 > > //// test 00:23:32 v #29860 > > 00:23:32 v #29861 > > listm.init 10i32 print_and_return 00:23:32 v #29862 > > |> from_list 00:23:32 v #29863 > > |> mapi fun i x => i + x 00:23:32 v #29864 > > |> try_item 5i32 00:23:32 v #29865 > > |> _assert_eq (Some 10i32) 00:23:33 v #29866 > > 00:23:33 v #29867 > > ╭─[ 492.61ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:33 v #29868 > > │ print_and_return / x: 0 │ 00:23:33 v #29869 > > │ print_and_return / x: 1 │ 00:23:33 v #29870 > > │ print_and_return / x: 2 │ 00:23:33 v #29871 > > │ print_and_return / x: 3 │ 00:23:33 v #29872 > > │ print_and_return / x: 4 │ 00:23:33 v #29873 > > │ print_and_return / x: 5 │ 00:23:33 v #29874 > > │ print_and_return / x: 6 │ 00:23:33 v #29875 > > │ print_and_return / x: 7 │ 00:23:33 v #29876 > > │ print_and_return / x: 8 │ 00:23:33 v #29877 > > │ print_and_return / x: 9 │ 00:23:33 v #29878 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 │ 00:23:33 v #29879 > > │ │ 00:23:33 v #29880 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:33 v #29881 > > 00:23:33 v #29882 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:33 v #29883 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:33 v #29884 > > │ ### choose │ 00:23:33 v #29885 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:33 v #29886 > > 00:23:33 v #29887 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:33 v #29888 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq 00:23:33 v #29889 > > dim u = 00:23:33 v #29890 > > fun n => 00:23:33 v #29891 > > inl rec body fn s i i' = 00:23:33 v #29892 > > match i |> s with 00:23:33 v #29893 > > | None => None 00:23:33 v #29894 > > | Some x => 00:23:33 v #29895 > > match x |> fn with 00:23:33 v #29896 > > | Some x when n = i' => Some x 00:23:33 v #29897 > > | Some _ => loop (i + 1) (i' + 1) 00:23:33 v #29898 > > | _ => loop (i + 1) i' 00:23:33 v #29899 > > and inl loop i i' = 00:23:33 v #29900 > > if n |> var_is |> not 00:23:33 v #29901 > > then body fn s i i' 00:23:33 v #29902 > > else 00:23:33 v #29903 > > inl fn = join fn 00:23:33 v #29904 > > inl s = join s 00:23:33 v #29905 > > join body fn s i i' 00:23:33 v #29906 > > loop 0 0 00:23:33 v #29907 > > 00:23:33 v #29908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:33 v #29909 > > //// test 00:23:33 v #29910 > > 00:23:33 v #29911 > > listm.init 10i32 print_and_return 00:23:33 v #29912 > > |> from_list 00:23:33 v #29913 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:23:33 v #29914 > > |> try_item 1i32 00:23:33 v #29915 > > |> _assert_eq (Some 2i32) 00:23:34 v #29916 > > 00:23:34 v #29917 > > ╭─[ 501.72ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:34 v #29918 > > │ print_and_return / x: 0 │ 00:23:34 v #29919 > > │ print_and_return / x: 1 │ 00:23:34 v #29920 > > │ print_and_return / x: 2 │ 00:23:34 v #29921 > > │ print_and_return / x: 3 │ 00:23:34 v #29922 > > │ print_and_return / x: 4 │ 00:23:34 v #29923 > > │ print_and_return / x: 5 │ 00:23:34 v #29924 > > │ print_and_return / x: 6 │ 00:23:34 v #29925 > > │ print_and_return / x: 7 │ 00:23:34 v #29926 > > │ print_and_return / x: 8 │ 00:23:34 v #29927 > > │ print_and_return / x: 9 │ 00:23:34 v #29928 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 │ 00:23:34 v #29929 > > │ │ 00:23:34 v #29930 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:34 v #29931 > > 00:23:34 v #29932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:34 v #29933 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:34 v #29934 > > │ ### indexed │ 00:23:34 v #29935 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:34 v #29936 > > 00:23:34 v #29937 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:34 v #29938 > > inl indexed s = 00:23:34 v #29939 > > s 00:23:34 v #29940 > > |> mapi fun i x => 00:23:34 v #29941 > > i, x 00:23:34 v #29942 > > 00:23:34 v #29943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:34 v #29944 > > //// test 00:23:34 v #29945 > > 00:23:34 v #29946 > > listm.init 10i32 ((*) 2) 00:23:34 v #29947 > > |> from_list 00:23:34 v #29948 > > |> indexed 00:23:34 v #29949 > > |> try_item 5i32 00:23:34 v #29950 > > |> _assert_eq (Some (5i32, 10i32)) 00:23:35 v #29951 > > 00:23:35 v #29952 > > ╭─[ 444.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:35 v #29953 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10) │ 00:23:35 v #29954 > > │ │ 00:23:35 v #29955 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:35 v #29956 > > 00:23:35 v #29957 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:35 v #29958 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:35 v #29959 > > │ ### zip │ 00:23:35 v #29960 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:35 v #29961 > > 00:23:35 v #29962 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:35 v #29963 > > inl zip n seq1 seq2 = 00:23:35 v #29964 > > seq1 n, seq2 n 00:23:35 v #29965 > > 00:23:35 v #29966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:35 v #29967 > > //// test 00:23:35 v #29968 > > 00:23:35 v #29969 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:23:35 v #29970 > > ||> zip 5i32 00:23:35 v #29971 > > |> _assert_eq (Some 5, Some 10) 00:23:35 v #29972 > > 00:23:35 v #29973 > > ╭─[ 415.45ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:35 v #29974 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected: struct (US0_0 │ 00:23:35 v #29975 > > │ 5, US0_0 10) │ 00:23:35 v #29976 > > │ │ 00:23:35 v #29977 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:35 v #29978 > > 00:23:35 v #29979 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:35 v #29980 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:35 v #29981 > > │ ### zip_with │ 00:23:35 v #29982 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:35 v #29983 > > 00:23:35 v #29984 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:35 v #29985 > > inl zip_with fn seq1 seq2 = 00:23:35 v #29986 > > fun n => 00:23:35 v #29987 > > fn (seq1 n) (seq2 n) 00:23:36 v #29988 > > 00:23:36 v #29989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:36 v #29990 > > //// test 00:23:36 v #29991 > > 00:23:36 v #29992 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:23:36 v #29993 > > ||> zip_with (optionm'.choose (+)) 00:23:36 v #29994 > > |> try_item 2i32 00:23:36 v #29995 > > |> _assert_eq (Some 6) 00:23:36 v #29996 > > 00:23:36 v #29997 > > ╭─[ 456.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:36 v #29998 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6 │ 00:23:36 v #29999 > > │ │ 00:23:36 v #30000 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:36 v #30001 > > 00:23:36 v #30002 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:36 v #30003 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:36 v #30004 > > │ ### fold │ 00:23:36 v #30005 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:36 v #30006 > > 00:23:36 v #30007 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:36 v #30008 > > inl fold fn init seq = 00:23:36 v #30009 > > inl rec loop acc n = 00:23:36 v #30010 > > match seq n with 00:23:36 v #30011 > > | Some x => loop (fn acc x) (n + 1) 00:23:36 v #30012 > > | None => acc 00:23:36 v #30013 > > loop init 0 00:23:36 v #30014 > > 00:23:36 v #30015 > > inl fold_ fn init seq = 00:23:36 v #30016 > > let rec loop acc n = 00:23:36 v #30017 > > match seq n with 00:23:36 v #30018 > > | Some x => loop (fn acc x) (n + 1) 00:23:36 v #30019 > > | None => acc 00:23:36 v #30020 > > loop init 0 00:23:37 v #30021 > > 00:23:37 v #30022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:37 v #30023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:37 v #30024 > > │ ### sum │ 00:23:37 v #30025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:37 v #30026 > > 00:23:37 v #30027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:37 v #30028 > > inl sum seq = 00:23:37 v #30029 > > seq |> fold (+) 0 00:23:37 v #30030 > > 00:23:37 v #30031 > > inl sum_ seq = 00:23:37 v #30032 > > seq |> fold_ (+) 0 00:23:37 v #30033 > > 00:23:37 v #30034 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:37 v #30035 > > //// test 00:23:37 v #30036 > > 00:23:37 v #30037 > > listm.init 10i32 id 00:23:37 v #30038 > > |> from_list 00:23:37 v #30039 > > |> fun f (n : i32) => f n 00:23:37 v #30040 > > |> sum 00:23:37 v #30041 > > |> _assert_eq 45 00:23:38 v #30042 > > 00:23:38 v #30043 > > ╭─[ 448.92ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:38 v #30044 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:23:38 v #30045 > > │ │ 00:23:38 v #30046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:38 v #30047 > > 00:23:38 v #30048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:38 v #30049 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:38 v #30050 > > │ ### to_list │ 00:23:38 v #30051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:38 v #30052 > > 00:23:38 v #30053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:38 v #30054 > > inl to_list seq = 00:23:38 v #30055 > > seq 00:23:38 v #30056 > > |> fold (fun acc x => x :: acc) [[]] 00:23:38 v #30057 > > |> listm.rev 00:23:38 v #30058 > > 00:23:38 v #30059 > > inl to_list_ seq = 00:23:38 v #30060 > > seq 00:23:38 v #30061 > > |> fold_ (fun acc x => x :: acc) [[]] 00:23:38 v #30062 > > |> listm.rev 00:23:38 v #30063 > > 00:23:38 v #30064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:38 v #30065 > > //// test 00:23:38 v #30066 > > 00:23:38 v #30067 > > listm.init 10i32 id 00:23:38 v #30068 > > |> from_list 00:23:38 v #30069 > > |> fun f (n : i32) => f n 00:23:38 v #30070 > > |> to_list 00:23:38 v #30071 > > |> _assert_eq (listm.init 10i32 id) 00:23:38 v #30072 > > 00:23:38 v #30073 > > ╭─[ 508.03ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:38 v #30074 > > │ __assert_eq / actual: UH0_1 │ 00:23:38 v #30075 > > │ (0, │ 00:23:38 v #30076 > > │ UH0_1 │ 00:23:38 v #30077 > > │ (1, │ 00:23:38 v #30078 > > │ UH0_1 │ 00:23:38 v #30079 > > │ (2, │ 00:23:38 v #30080 > > │ UH0_1 │ 00:23:38 v #30081 > > │ (3, │ 00:23:38 v #30082 > > │ UH0_1 │ 00:23:38 v #30083 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9, │ 00:23:38 v #30084 > > │ UH0_0)))))))))) / expected: UH0_1 │ 00:23:38 v #30085 > > │ (0, │ 00:23:38 v #30086 > > │ UH0_1 │ 00:23:38 v #30087 > > │ (1, │ 00:23:38 v #30088 > > │ UH0_1 │ 00:23:38 v #30089 > > │ (2, │ 00:23:38 v #30090 > > │ UH0_1 │ 00:23:38 v #30091 > > │ (3, │ 00:23:38 v #30092 > > │ UH0_1 │ 00:23:38 v #30093 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9, │ 00:23:38 v #30094 > > │ UH0_0)))))))))) │ 00:23:38 v #30095 > > │ │ 00:23:38 v #30096 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:38 v #30097 > > 00:23:38 v #30098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:38 v #30099 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:38 v #30100 > > │ ### from_array │ 00:23:38 v #30101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:38 v #30102 > > 00:23:38 v #30103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:38 v #30104 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el = 00:23:38 v #30105 > > fun n => 00:23:38 v #30106 > > if n >= length array 00:23:38 v #30107 > > then None 00:23:38 v #30108 > > else index array n |> Some 00:23:39 v #30109 > > 00:23:39 v #30110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:39 v #30111 > > //// test 00:23:39 v #30112 > > 00:23:39 v #30113 > > a ;[[ 1; 2; 3 ]] 00:23:39 v #30114 > > |> from_array 00:23:39 v #30115 > > |> try_item 1i32 00:23:39 v #30116 > > |> _assert_eq (Some 2i32) 00:23:39 v #30117 > > 00:23:39 v #30118 > > ╭─[ 544.70ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:39 v #30119 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 │ 00:23:39 v #30120 > > │ │ 00:23:39 v #30121 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:39 v #30122 > > 00:23:39 v #30123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:39 v #30124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:39 v #30125 > > │ ### to_array │ 00:23:39 v #30126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:39 v #30127 > > 00:23:39 v #30128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:39 v #30129 > > inl to_array seq = 00:23:39 v #30130 > > inl ar = a ;[[]] |> mut 00:23:39 v #30131 > > ((), seq) 00:23:39 v #30132 > > ||> fold fun _ x => 00:23:39 v #30133 > > ar <- *ar ++ a ;[[x]] 00:23:39 v #30134 > > *ar 00:23:39 v #30135 > > 00:23:39 v #30136 > > inl to_array_ seq = 00:23:39 v #30137 > > inl ar = a ;[[]] |> mut 00:23:39 v #30138 > > ((), seq) 00:23:39 v #30139 > > ||> fold_ fun _ x => 00:23:39 v #30140 > > ar <- *ar ++ a ;[[x]] 00:23:39 v #30141 > > *ar 00:23:40 v #30142 > > 00:23:40 v #30143 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:40 v #30144 > > //// test 00:23:40 v #30145 > > 00:23:40 v #30146 > > listm.init 10i32 id 00:23:40 v #30147 > > |> from_list 00:23:40 v #30148 > > |> fun (x : i32 -> _) => x 00:23:40 v #30149 > > |> to_array 00:23:40 v #30150 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _) 00:23:40 v #30151 > > 00:23:40 v #30152 > > ╭─[ 657.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:40 v #30153 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] / expected: [|0; 1; │ 00:23:40 v #30154 > > │ 2; 3; 4; 5; 6; 7; 8; 9|] │ 00:23:40 v #30155 > > │ │ 00:23:40 v #30156 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:40 v #30157 > > 00:23:40 v #30158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:40 v #30159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:40 v #30160 > > │ ### take_while │ 00:23:40 v #30161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:40 v #30162 > > 00:23:40 v #30163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:40 v #30164 > > inl take_while cond seq = 00:23:40 v #30165 > > inl rec loop acc i = 00:23:40 v #30166 > > match seq i with 00:23:40 v #30167 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:23:40 v #30168 > > | _ => acc |> listm.rev 00:23:40 v #30169 > > loop [[]] 0 00:23:41 v #30170 > > 00:23:41 v #30171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:41 v #30172 > > //// test 00:23:41 v #30173 > > 00:23:41 v #30174 > > listm.init 10i32 id 00:23:41 v #30175 > > |> from_list 00:23:41 v #30176 > > |> take_while (fun n (_ : i32) => n < 5) 00:23:41 v #30177 > > |> listm'.sum 00:23:41 v #30178 > > |> _assert_eq 10 00:23:41 v #30179 > > 00:23:41 v #30180 > > ╭─[ 513.45ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:41 v #30181 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:41 v #30182 > > │ │ 00:23:41 v #30183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:41 v #30184 > > 00:23:41 v #30185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:41 v #30186 > > //// test 00:23:41 v #30187 > > 00:23:41 v #30188 > > stream.new_finite_stream print_and_return 10i32 00:23:41 v #30189 > > |> flip stream.try_item 00:23:41 v #30190 > > |> take_while (fun n (_ : i32) => n < 5) 00:23:41 v #30191 > > |> listm'.sum 00:23:41 v #30192 > > |> _assert_eq 10 00:23:42 v #30193 > > 00:23:42 v #30194 > > ╭─[ 483.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:42 v #30195 > > │ print_and_return / x: 0 │ 00:23:42 v #30196 > > │ print_and_return / x: 1 │ 00:23:42 v #30197 > > │ print_and_return / x: 1 │ 00:23:42 v #30198 > > │ print_and_return / x: 2 │ 00:23:42 v #30199 > > │ print_and_return / x: 1 │ 00:23:42 v #30200 > > │ print_and_return / x: 2 │ 00:23:42 v #30201 > > │ print_and_return / x: 3 │ 00:23:42 v #30202 > > │ print_and_return / x: 1 │ 00:23:42 v #30203 > > │ print_and_return / x: 2 │ 00:23:42 v #30204 > > │ print_and_return / x: 3 │ 00:23:42 v #30205 > > │ print_and_return / x: 4 │ 00:23:42 v #30206 > > │ print_and_return / x: 1 │ 00:23:42 v #30207 > > │ print_and_return / x: 2 │ 00:23:42 v #30208 > > │ print_and_return / x: 3 │ 00:23:42 v #30209 > > │ print_and_return / x: 4 │ 00:23:42 v #30210 > > │ print_and_return / x: 5 │ 00:23:42 v #30211 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:42 v #30212 > > │ │ 00:23:42 v #30213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:42 v #30214 > > 00:23:42 v #30215 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:42 v #30216 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:42 v #30217 > > │ ### take_while_ │ 00:23:42 v #30218 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:42 v #30219 > > 00:23:42 v #30220 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:42 v #30221 > > inl take_while_ cond seq = 00:23:42 v #30222 > > let rec loop acc i = 00:23:42 v #30223 > > match seq i with 00:23:42 v #30224 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:23:42 v #30225 > > | _ => acc |> listm.rev 00:23:42 v #30226 > > loop [[]] 0 00:23:42 v #30227 > > 00:23:42 v #30228 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:42 v #30229 > > //// test 00:23:42 v #30230 > > 00:23:42 v #30231 > > stream.new_infinite_stream_ print_and_return 00:23:42 v #30232 > > |> flip stream.try_item 00:23:42 v #30233 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:23:42 v #30234 > > |> listm'.sum 00:23:42 v #30235 > > |> _assert_eq 10 00:23:43 v #30236 > > 00:23:43 v #30237 > > ╭─[ 644.42ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:43 v #30238 > > │ print_and_return / x: 0 │ 00:23:43 v #30239 > > │ print_and_return / x: 1 │ 00:23:43 v #30240 > > │ print_and_return / x: 1 │ 00:23:43 v #30241 > > │ print_and_return / x: 2 │ 00:23:43 v #30242 > > │ print_and_return / x: 1 │ 00:23:43 v #30243 > > │ print_and_return / x: 2 │ 00:23:43 v #30244 > > │ print_and_return / x: 3 │ 00:23:43 v #30245 > > │ print_and_return / x: 1 │ 00:23:43 v #30246 > > │ print_and_return / x: 2 │ 00:23:43 v #30247 > > │ print_and_return / x: 3 │ 00:23:43 v #30248 > > │ print_and_return / x: 4 │ 00:23:43 v #30249 > > │ print_and_return / x: 1 │ 00:23:43 v #30250 > > │ print_and_return / x: 2 │ 00:23:43 v #30251 > > │ print_and_return / x: 3 │ 00:23:43 v #30252 > > │ print_and_return / x: 4 │ 00:23:43 v #30253 > > │ print_and_return / x: 5 │ 00:23:43 v #30254 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:43 v #30255 > > │ │ 00:23:43 v #30256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:43 v #30257 > > 00:23:43 v #30258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:43 v #30259 > > //// test 00:23:43 v #30260 > > 00:23:43 v #30261 > > stream.new_infinite_stream_ print_and_return 00:23:43 v #30262 > > |> stream.memoize 00:23:43 v #30263 > > |> fun list => 00:23:43 v #30264 > > inl list = list () 00:23:43 v #30265 > > fun n => 00:23:43 v #30266 > > list |> stream.try_item n 00:23:43 v #30267 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:23:43 v #30268 > > |> listm'.sum 00:23:43 v #30269 > > |> _assert_eq 10 00:23:44 v #30270 > > 00:23:44 v #30271 > > ╭─[ 541.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:44 v #30272 > > │ print_and_return / x: 0 │ 00:23:44 v #30273 > > │ print_and_return / x: 1 │ 00:23:44 v #30274 > > │ print_and_return / x: 2 │ 00:23:44 v #30275 > > │ print_and_return / x: 3 │ 00:23:44 v #30276 > > │ print_and_return / x: 4 │ 00:23:44 v #30277 > > │ print_and_return / x: 5 │ 00:23:44 v #30278 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:44 v #30279 > > │ │ 00:23:44 v #30280 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:44 v #30281 > > 00:23:44 v #30282 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:44 v #30283 > > //// test 00:23:44 v #30284 > > 00:23:44 v #30285 > > stream.new_finite_stream print_and_return 10i32 00:23:44 v #30286 > > |> stream.memoize 00:23:44 v #30287 > > |> fun list => 00:23:44 v #30288 > > inl list = list () 00:23:44 v #30289 > > fun n => 00:23:44 v #30290 > > list |> stream.try_item n 00:23:44 v #30291 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:23:44 v #30292 > > |> listm'.sum 00:23:44 v #30293 > > |> _assert_eq 10 00:23:44 v #30294 > > 00:23:44 v #30295 > > ╭─[ 528.65ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:44 v #30296 > > │ print_and_return / x: 0 │ 00:23:44 v #30297 > > │ print_and_return / x: 1 │ 00:23:44 v #30298 > > │ print_and_return / x: 2 │ 00:23:44 v #30299 > > │ print_and_return / x: 3 │ 00:23:44 v #30300 > > │ print_and_return / x: 4 │ 00:23:44 v #30301 > > │ print_and_return / x: 5 │ 00:23:44 v #30302 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:44 v #30303 > > │ │ 00:23:44 v #30304 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:44 v #30305 > > 00:23:44 v #30306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:44 v #30307 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:44 v #30308 > > │ ### memoize │ 00:23:44 v #30309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:44 v #30310 > > 00:23:44 v #30311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:44 v #30312 > > inl memoize seq = 00:23:44 v #30313 > > inl state = mut [[]] 00:23:44 v #30314 > > fun n => 00:23:44 v #30315 > > match *state |> listm'.try_find (fun (n', _) => n' = n) with 00:23:44 v #30316 > > | Some (_, v) => v 00:23:44 v #30317 > > | None => 00:23:44 v #30318 > > inl new_state = seq n 00:23:44 v #30319 > > state <- (n, new_state) :: *state 00:23:44 v #30320 > > new_state 00:23:44 v #30321 > > 00:23:44 v #30322 > > inl memoize_ seq = 00:23:44 v #30323 > > inl state = mut [[]] 00:23:44 v #30324 > > fun n => 00:23:44 v #30325 > > match *state |> listm'.try_find_ (fun (n', _) => n' = n) with 00:23:44 v #30326 > > | Some (_, v) => v 00:23:44 v #30327 > > | None => 00:23:44 v #30328 > > inl new_state = seq n 00:23:44 v #30329 > > state <- (n, new_state) :: *state 00:23:44 v #30330 > > new_state 00:23:44 v #30331 > > 00:23:44 v #30332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:44 v #30333 > > //// test 00:23:44 v #30334 > > 00:23:44 v #30335 > > inl seq = 00:23:44 v #30336 > > fun n => 00:23:44 v #30337 > > n |> print_and_return |> Some 00:23:44 v #30338 > > |> memoize_ 00:23:44 v #30339 > > 00:23:44 v #30340 > > seq 00:23:44 v #30341 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:23:44 v #30342 > > |> listm'.sum 00:23:44 v #30343 > > |> _assert_eq 10 00:23:44 v #30344 > > 00:23:44 v #30345 > > seq 00:23:44 v #30346 > > |> take_while_ (fun n _ => n < 5) 00:23:44 v #30347 > > |> listm'.sum 00:23:44 v #30348 > > |> _assert_eq 10 00:23:45 v #30349 > > 00:23:45 v #30350 > > ╭─[ 554.54ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:45 v #30351 > > │ print_and_return / x: 0 │ 00:23:45 v #30352 > > │ print_and_return / x: 1 │ 00:23:45 v #30353 > > │ print_and_return / x: 2 │ 00:23:45 v #30354 > > │ print_and_return / x: 3 │ 00:23:45 v #30355 > > │ print_and_return / x: 4 │ 00:23:45 v #30356 > > │ print_and_return / x: 5 │ 00:23:45 v #30357 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:45 v #30358 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:23:45 v #30359 > > │ │ 00:23:45 v #30360 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:45 v #30361 > > 00:23:45 v #30362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:45 v #30363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:45 v #30364 > > │ ### iterate │ 00:23:45 v #30365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:45 v #30366 > > 00:23:45 v #30367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:45 v #30368 > > inl iterate f x0 num_steps = 00:23:45 v #30369 > > inl rec loop x n = 00:23:45 v #30370 > > if n <= 0 00:23:45 v #30371 > > then x 00:23:45 v #30372 > > else loop (f x) (n - 1) 00:23:45 v #30373 > > loop x0 num_steps 00:23:45 v #30374 > > 00:23:45 v #30375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:45 v #30376 > > //// test 00:23:45 v #30377 > > 00:23:45 v #30378 > > 10i32 |> iterate ((*) 2) 1i32 00:23:45 v #30379 > > |> _assert_eq 1024 00:23:46 v #30380 > > 00:23:46 v #30381 > > ╭─[ 493.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:46 v #30382 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:23:46 v #30383 > > │ │ 00:23:46 v #30384 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:46 v #30385 > > 00:23:46 v #30386 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:46 v #30387 > > inl iterate_ f x0 num_steps = 00:23:46 v #30388 > > let rec loop x n = 00:23:46 v #30389 > > if n <= 0 00:23:46 v #30390 > > then x 00:23:46 v #30391 > > else loop (f x) (n - 1) 00:23:46 v #30392 > > loop x0 num_steps 00:23:46 v #30393 > > 00:23:46 v #30394 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:46 v #30395 > > //// test 00:23:46 v #30396 > > 00:23:46 v #30397 > > 10i32 |> iterate_ ((*) 2) 1i32 00:23:46 v #30398 > > |> _assert_eq 1024 00:23:47 v #30399 > > 00:23:47 v #30400 > > ╭─[ 466.57ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:47 v #30401 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:23:47 v #30402 > > │ │ 00:23:47 v #30403 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:47 v #30404 > > 00:23:47 v #30405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:47 v #30406 > > inl iterate' f x0 num_steps = 00:23:47 v #30407 > > listm.init num_steps id 00:23:47 v #30408 > > |> listm.fold (fun x _ => f x) x0 00:23:47 v #30409 > > 00:23:47 v #30410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:47 v #30411 > > //// test 00:23:47 v #30412 > > 00:23:47 v #30413 > > 10i32 |> iterate' ((*) 2) 1i32 00:23:47 v #30414 > > |> _assert_eq 1024 00:23:48 v #30415 > > 00:23:48 v #30416 > > ╭─[ 428.41ms - stdout ]────────────────────────────────────────────────────────╮ 00:23:48 v #30417 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:23:48 v #30418 > > │ │ 00:23:48 v #30419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:48 v #30420 > > 00:23:48 v #30421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #30422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:48 v #30423 > > │ ### find_last │ 00:23:48 v #30424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:48 v #30425 > > 00:23:48 v #30426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #30427 > > inl find_last forall item result. fold_fn fn target : option result = 00:23:48 v #30428 > > fold_fn (fun (item : item) (result : option result) => 00:23:48 v #30429 > > match result with 00:23:48 v #30430 > > | None => fn item 00:23:48 v #30431 > > | result => result 00:23:48 v #30432 > > ) target (None : option result) 00:23:48 v #30433 > > 00:23:48 v #30434 > > inl array_find_last forall item result. (fn : item -> option result) (target : a 00:23:48 v #30435 > > i32 item) : option result = 00:23:48 v #30436 > > find_last am.foldBack fn target 00:23:48 v #30437 > > 00:23:48 v #30438 > > inl list_find_last forall item result. (fn : item -> option result) (target : 00:23:48 v #30439 > > list item) : option result = 00:23:48 v #30440 > > find_last listm.foldBack fn target 00:23:48 v #30441 > > 00:23:48 v #30442 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #30443 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:48 v #30444 > > │ ## fsharp │ 00:23:48 v #30445 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:48 v #30446 > > 00:23:48 v #30447 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #30448 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:48 v #30449 > > │ ### seq' │ 00:23:48 v #30450 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:48 v #30451 > > 00:23:48 v #30452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #30453 > > nominal seq' t = $"backend_switch `({ Fsharp : $'`t seq'; Python : $'list' })" 00:23:49 v #30454 > > 00:23:49 v #30455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:49 v #30456 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:49 v #30457 > > │ ### length' │ 00:23:49 v #30458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:49 v #30459 > > 00:23:49 v #30460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:49 v #30461 > > inl length' forall t. (items : seq' t) : int = 00:23:49 v #30462 > > backend_switch { 00:23:49 v #30463 > > Fsharp = fun () => items |> $'Seq.length' : int 00:23:49 v #30464 > > Python = fun () => $'len(!items)' : int 00:23:49 v #30465 > > } 00:23:49 v #30466 > > 00:23:49 v #30467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:49 v #30468 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:49 v #30469 > > │ ### to_list' │ 00:23:49 v #30470 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:49 v #30471 > > 00:23:49 v #30472 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:49 v #30473 > > inl to_list' forall t. (items : seq' t) : listm'.list' t = 00:23:49 v #30474 > > backend_switch { 00:23:49 v #30475 > > Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t 00:23:49 v #30476 > > Python = fun () => $'!items ' : listm'.list' t 00:23:49 v #30477 > > } 00:23:49 v #30478 > > 00:23:49 v #30479 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:49 v #30480 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:49 v #30481 > > │ ### new_seq │ 00:23:49 v #30482 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:49 v #30483 > > 00:23:49 v #30484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:49 v #30485 > > inl new_seq forall t. fn : seq' t = 00:23:49 v #30486 > > backend_switch { 00:23:49 v #30487 > > Fsharp = fun () => 00:23:49 v #30488 > > fun () => 00:23:49 v #30489 > > $'seq {' 00:23:49 v #30490 > > fn |> indent 00:23:49 v #30491 > > $'}' : () 00:23:49 v #30492 > > |> let' 00:23:49 v #30493 > > |> fun x => x : seq' t 00:23:49 v #30494 > > Python = fun () => 00:23:49 v #30495 > > $'list(!fn())' : seq' t 00:23:49 v #30496 > > } 00:23:50 v #30497 > > 00:23:50 v #30498 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:50 v #30499 > > //// test 00:23:50 v #30500 > > ///! fsharp 00:23:50 v #30501 > > ///! cuda 00:23:50 v #30502 > > 00:23:50 v #30503 > > fun () => 00:23:50 v #30504 > > "a" |> yield 00:23:50 v #30505 > > "b" |> yield 00:23:50 v #30506 > > |> new_seq 00:23:50 v #30507 > > |> to_list' 00:23:50 v #30508 > > |> listm'.unbox 00:23:50 v #30509 > > |> _assert_eq [[ "a"; "b" ]] 00:23:51 v #30510 > > 00:23:51 v #30511 > > ╭─[ 1.40s - return value ]─────────────────────────────────────────────────────╮ 00:23:51 v #30512 > > │ .py output (Cuda): │ 00:23:51 v #30513 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) / │ 00:23:51 v #30514 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) │ 00:23:51 v #30515 > > │ │ 00:23:51 v #30516 > > │ │ 00:23:51 v #30517 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:51 v #30518 > > 00:23:51 v #30519 > > ╭─[ 1.40s - stdout ]───────────────────────────────────────────────────────────╮ 00:23:51 v #30520 > > │ .fsx output: │ 00:23:51 v #30521 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:23:51 v #30522 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:23:51 v #30523 > > │ │ 00:23:51 v #30524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:51 v #30525 > > 00:23:51 v #30526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:51 v #30527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:23:51 v #30528 > > │ ### of_array' │ 00:23:51 v #30529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:23:51 v #30530 > > 00:23:51 v #30531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:51 v #30532 > > inl of_array' forall dim t. (items : a dim t) : seq' t = 00:23:51 v #30533 > > backend_switch { 00:23:51 v #30534 > > Fsharp = fun () => 00:23:51 v #30535 > > fun () => 00:23:51 v #30536 > > $'for i = 0 to !items.Length - 1 do yield !items.[[i]]' 00:23:51 v #30537 > > |> new_seq 00:23:51 v #30538 > > |> fun x => x : seq' t 00:23:51 v #30539 > > Python = fun () => $'[[item for item in !items]]' : seq' t 00:23:51 v #30540 > > } 00:23:52 v #30541 > > 00:23:52 v #30542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:52 v #30543 > > //// test 00:23:52 v #30544 > > ///! fsharp 00:23:52 v #30545 > > ///! cuda 00:23:52 v #30546 > > ///! rust 00:23:52 v #30547 > > ///! typescript 00:23:52 v #30548 > > ///! python 00:23:52 v #30549 > > 00:23:52 v #30550 > > (a ;[[ "a"; "b" ]] : _ int _) 00:23:52 v #30551 > > |> of_array' 00:23:52 v #30552 > > |> to_list' 00:23:52 v #30553 > > |> listm'.unbox 00:23:52 v #30554 > > |> _assert_eq [[ "a"; "b" ]] 00:24:08 v #30555 > > 00:24:08 v #30556 > > ╭─[ 16.37s - return value ]────────────────────────────────────────────────────╮ 00:24:08 v #30557 > > │ .py output (Cuda): │ 00:24:08 v #30558 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) / │ 00:24:08 v #30559 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) │ 00:24:08 v #30560 > > │ │ 00:24:08 v #30561 > > │ .rs output: │ 00:24:08 v #30562 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a", │ 00:24:08 v #30563 > > │ UH0_1("b", UH0_0)) │ 00:24:08 v #30564 > > │ │ 00:24:08 v #30565 > > │ .ts output: │ 00:24:08 v #30566 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a, │ 00:24:08 v #30567 > > │ UH0_1 (b, UH0_0)) │ 00:24:08 v #30568 > > │ │ 00:24:08 v #30569 > > │ .py output: │ 00:24:08 v #30570 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:08 v #30571 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:08 v #30572 > > │ │ 00:24:08 v #30573 > > │ │ 00:24:08 v #30574 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:08 v #30575 > > 00:24:08 v #30576 > > ╭─[ 16.37s - stdout ]──────────────────────────────────────────────────────────╮ 00:24:08 v #30577 > > │ .fsx output: │ 00:24:08 v #30578 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:08 v #30579 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:08 v #30580 > > │ │ 00:24:08 v #30581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:08 v #30582 > > 00:24:08 v #30583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:08 v #30584 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:08 v #30585 > > │ ### of_array │ 00:24:08 v #30586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:08 v #30587 > > 00:24:08 v #30588 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:08 v #30589 > > inl of_array forall dim t. (items : a dim t) : seq' t = 00:24:08 v #30590 > > backend_switch { 00:24:08 v #30591 > > Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t 00:24:08 v #30592 > > Python = fun () => $'list(iter(!items))' : seq' t 00:24:08 v #30593 > > } 00:24:09 v #30594 > > 00:24:09 v #30595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:09 v #30596 > > //// test 00:24:09 v #30597 > > ///! fsharp 00:24:09 v #30598 > > ///! cuda 00:24:09 v #30599 > > ///! rust 00:24:09 v #30600 > > ///! typescript 00:24:09 v #30601 > > ///! python 00:24:09 v #30602 > > 00:24:09 v #30603 > > (a ;[[ "a"; "b" ]] : _ int _) 00:24:09 v #30604 > > |> of_array 00:24:09 v #30605 > > |> to_list' 00:24:09 v #30606 > > |> listm'.unbox 00:24:09 v #30607 > > |> _assert_eq [[ "a"; "b" ]] 00:24:12 v #30608 > > 00:24:12 v #30609 > > ╭─[ 3.53s - return value ]─────────────────────────────────────────────────────╮ 00:24:12 v #30610 > > │ .py output (Cuda): │ 00:24:12 v #30611 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) / │ 00:24:12 v #30612 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) │ 00:24:12 v #30613 > > │ │ 00:24:12 v #30614 > > │ .rs output: │ 00:24:12 v #30615 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a", │ 00:24:12 v #30616 > > │ UH0_1("b", UH0_0)) │ 00:24:12 v #30617 > > │ │ 00:24:12 v #30618 > > │ .ts output: │ 00:24:12 v #30619 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a, │ 00:24:12 v #30620 > > │ UH0_1 (b, UH0_0)) │ 00:24:12 v #30621 > > │ │ 00:24:12 v #30622 > > │ .py output: │ 00:24:12 v #30623 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:12 v #30624 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:12 v #30625 > > │ │ 00:24:12 v #30626 > > │ │ 00:24:12 v #30627 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:12 v #30628 > > 00:24:12 v #30629 > > ╭─[ 3.53s - stdout ]───────────────────────────────────────────────────────────╮ 00:24:12 v #30630 > > │ .fsx output: │ 00:24:12 v #30631 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:12 v #30632 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:12 v #30633 > > │ │ 00:24:12 v #30634 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:12 v #30635 > > 00:24:12 v #30636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:12 v #30637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:12 v #30638 > > │ ### of_array_base │ 00:24:12 v #30639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:12 v #30640 > > 00:24:12 v #30641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:12 v #30642 > > inl of_array_base forall t. (items : array_base t) : seq' t = 00:24:12 v #30643 > > a items 00:24:12 v #30644 > > |> fun x => x : _ int _ 00:24:12 v #30645 > > |> of_array 00:24:13 v #30646 > > 00:24:13 v #30647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:13 v #30648 > > //// test 00:24:13 v #30649 > > ///! fsharp 00:24:13 v #30650 > > ///! cuda 00:24:13 v #30651 > > ///! rust 00:24:13 v #30652 > > ///! typescript 00:24:13 v #30653 > > ///! python 00:24:13 v #30654 > > 00:24:13 v #30655 > > ;[[ "a"; "b" ]] 00:24:13 v #30656 > > |> of_array_base 00:24:13 v #30657 > > |> to_list' 00:24:13 v #30658 > > |> listm'.unbox 00:24:13 v #30659 > > |> _assert_eq [[ "a"; "b" ]] 00:24:15 v #30660 > > 00:24:15 v #30661 > > ╭─[ 2.87s - return value ]─────────────────────────────────────────────────────╮ 00:24:15 v #30662 > > │ .py output (Cuda): │ 00:24:15 v #30663 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) / │ 00:24:15 v #30664 > > │ expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) │ 00:24:15 v #30665 > > │ │ 00:24:15 v #30666 > > │ .rs output: │ 00:24:15 v #30667 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a", │ 00:24:15 v #30668 > > │ UH0_1("b", UH0_0)) │ 00:24:15 v #30669 > > │ │ 00:24:15 v #30670 > > │ .ts output: │ 00:24:15 v #30671 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a, │ 00:24:15 v #30672 > > │ UH0_1 (b, UH0_0)) │ 00:24:15 v #30673 > > │ │ 00:24:15 v #30674 > > │ .py output: │ 00:24:15 v #30675 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:15 v #30676 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:15 v #30677 > > │ │ 00:24:15 v #30678 > > │ │ 00:24:15 v #30679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:15 v #30680 > > 00:24:15 v #30681 > > ╭─[ 2.87s - stdout ]───────────────────────────────────────────────────────────╮ 00:24:15 v #30682 > > │ .fsx output: │ 00:24:15 v #30683 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:15 v #30684 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:15 v #30685 > > │ │ 00:24:15 v #30686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:15 v #30687 > > 00:24:15 v #30688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:15 v #30689 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:15 v #30690 > > │ ### to_array' │ 00:24:15 v #30691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:15 v #30692 > > 00:24:15 v #30693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30694 > > inl to_array' forall dim t. (items : seq' t) : a dim t = 00:24:15 v #30695 > > backend_switch { 00:24:15 v #30696 > > Fsharp = fun () => items |> $'Seq.toArray' : a dim t 00:24:15 v #30697 > > Python = fun () => $'(cp if cuda else np).array(!items)' : a dim t 00:24:15 v #30698 > > } 00:24:16 v #30699 > > 00:24:16 v #30700 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:16 v #30701 > > //// test 00:24:16 v #30702 > > ///! fsharp 00:24:16 v #30703 > > ///! cuda 00:24:16 v #30704 > > ///! rust 00:24:16 v #30705 > > ///! typescript 00:24:16 v #30706 > > ///! python 00:24:16 v #30707 > > 00:24:16 v #30708 > > ;[[ "a"; "b" ]] 00:24:16 v #30709 > > |> of_array_base 00:24:16 v #30710 > > |> to_array' 00:24:16 v #30711 > > |> fun x => x : _ int _ 00:24:16 v #30712 > > |> am'.to_list' 00:24:16 v #30713 > > |> listm'.unbox 00:24:16 v #30714 > > |> _assert_eq [[ "a"; "b" ]] 00:24:19 v #30715 > > 00:24:19 v #30716 > > ╭─[ 3.55s - return value ]─────────────────────────────────────────────────────╮ 00:24:19 v #30717 > > │ .py output (Cuda): │ 00:24:19 v #30718 > > │ __assert_eq / actual: UH0_1(v0=np.str_('a'), v1=UH0_1(v0=np.str_('b'), │ 00:24:19 v #30719 > > │ v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) │ 00:24:19 v #30720 > > │ │ 00:24:19 v #30721 > > │ .rs output: │ 00:24:19 v #30722 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) / expected: UH0_1("a", │ 00:24:19 v #30723 > > │ UH0_1("b", UH0_0)) │ 00:24:19 v #30724 > > │ │ 00:24:19 v #30725 > > │ .ts output: │ 00:24:19 v #30726 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: UH0_1 (a, │ 00:24:19 v #30727 > > │ UH0_1 (b, UH0_0)) │ 00:24:19 v #30728 > > │ │ 00:24:19 v #30729 > > │ .py output: │ 00:24:19 v #30730 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:19 v #30731 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:19 v #30732 > > │ │ 00:24:19 v #30733 > > │ │ 00:24:19 v #30734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:19 v #30735 > > 00:24:19 v #30736 > > ╭─[ 3.55s - stdout ]───────────────────────────────────────────────────────────╮ 00:24:19 v #30737 > > │ .fsx output: │ 00:24:19 v #30738 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:24:19 v #30739 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:24:19 v #30740 > > │ │ 00:24:19 v #30741 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:19 v #30742 > > 00:24:19 v #30743 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:19 v #30744 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:19 v #30745 > > │ ### of_list' │ 00:24:19 v #30746 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:19 v #30747 > > 00:24:19 v #30748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:19 v #30749 > > inl of_list' forall t. (items : listm'.list' t) : seq' t = 00:24:19 v #30750 > > backend_switch { 00:24:19 v #30751 > > Fsharp = fun () => 00:24:19 v #30752 > > fun () => 00:24:19 v #30753 > > $'for i = 0 to !items.Length - 1 do yield !items.[[i]]' 00:24:19 v #30754 > > |> new_seq 00:24:19 v #30755 > > |> fun x => x : seq' t 00:24:19 v #30756 > > Python = fun () => $'!items ' : seq' t 00:24:19 v #30757 > > } 00:24:20 v #30758 > > 00:24:20 v #30759 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:20 v #30760 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:20 v #30761 > > │ ### cast' │ 00:24:20 v #30762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:20 v #30763 > > 00:24:20 v #30764 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:20 v #30765 > > inl cast' forall t u. (items : u) : seq' t = 00:24:20 v #30766 > > backend_switch { 00:24:20 v #30767 > > Fsharp = fun () => items |> $'Seq.cast' : seq' t 00:24:20 v #30768 > > Python = fun () => $'list(!items)' : seq' t 00:24:20 v #30769 > > } 00:24:20 v #30770 > > 00:24:20 v #30771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:20 v #30772 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:20 v #30773 > > │ ### rev' │ 00:24:20 v #30774 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:20 v #30775 > > 00:24:20 v #30776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:20 v #30777 > > inl rev'' forall t. (items : seq' t) : seq' t = 00:24:20 v #30778 > > backend_switch { 00:24:20 v #30779 > > Fsharp = fun () => items |> $'Seq.rev' : seq' t 00:24:20 v #30780 > > Python = fun () => $'list(reversed(!items))' : seq' t 00:24:20 v #30781 > > } 00:24:21 v #30782 > > 00:24:21 v #30783 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:21 v #30784 > > //// test 00:24:21 v #30785 > > ///! fsharp 00:24:21 v #30786 > > ///! cuda 00:24:21 v #30787 > > ///! rust 00:24:21 v #30788 > > ///! typescript 00:24:21 v #30789 > > ///! python 00:24:21 v #30790 > > 00:24:21 v #30791 > > [[ "a"; "b" ]] 00:24:21 v #30792 > > |> listm'.box 00:24:21 v #30793 > > |> of_list' 00:24:21 v #30794 > > |> rev'' 00:24:21 v #30795 > > |> to_list' 00:24:21 v #30796 > > |> listm'.unbox 00:24:21 v #30797 > > |> _assert_eq [[ "b"; "a" ]] 00:24:36 v #30798 > > 00:24:36 v #30799 > > ╭─[ 14.78s - return value ]────────────────────────────────────────────────────╮ 00:24:36 v #30800 > > │ .py output (Cuda): │ 00:24:36 v #30801 > > │ __assert_eq / actual: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0())) / │ 00:24:36 v #30802 > > │ expected: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0())) │ 00:24:36 v #30803 > > │ │ 00:24:36 v #30804 > > │ .rs output: │ 00:24:36 v #30805 > > │ __assert_eq / actual: UH0_1("b", UH0_1("a", UH0_0)) / expected: UH0_1("b", │ 00:24:36 v #30806 > > │ UH0_1("a", UH0_0)) │ 00:24:36 v #30807 > > │ │ 00:24:36 v #30808 > > │ .ts output: │ 00:24:36 v #30809 > > │ __assert_eq / actual: UH0_1 (b, UH0_1 (a, UH0_0)) / expected: UH0_1 (b, │ 00:24:36 v #30810 > > │ UH0_1 (a, UH0_0)) │ 00:24:36 v #30811 > > │ │ 00:24:36 v #30812 > > │ .py output: │ 00:24:36 v #30813 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) / expected: UH0_1 │ 00:24:36 v #30814 > > │ ("b", UH0_1 ("a", UH0_0)) │ 00:24:36 v #30815 > > │ │ 00:24:36 v #30816 > > │ │ 00:24:36 v #30817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:36 v #30818 > > 00:24:36 v #30819 > > ╭─[ 14.78s - stdout ]──────────────────────────────────────────────────────────╮ 00:24:36 v #30820 > > │ .fsx output: │ 00:24:36 v #30821 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) / expected: UH0_1 │ 00:24:36 v #30822 > > │ ("b", UH0_1 ("a", UH0_0)) │ 00:24:36 v #30823 > > │ │ 00:24:36 v #30824 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:36 v #30825 > > 00:24:36 v #30826 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:36 v #30827 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:36 v #30828 > > │ ## rust │ 00:24:36 v #30829 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:36 v #30830 > > 00:24:36 v #30831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:36 v #30832 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:36 v #30833 > > │ ### fuse │ 00:24:36 v #30834 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:36 v #30835 > > 00:24:36 v #30836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:36 v #30837 > > nominal fuse t = 00:24:36 v #30838 > > `( 00:24:36 v #30839 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:36 v #30840 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> = 00:24:36 v #30841 > > class end" 00:24:36 v #30842 > > $'' : $'core_iter_Fuse<`t>' 00:24:36 v #30843 > > ) 00:24:36 v #30844 > 00:01:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 52475 } 00:24:36 v #30845 > 00:01:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:38 v #30846 > 00:01:15 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/seq.dib.ipynb to html 00:24:38 v #30847 > 00:01:15 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:24:38 v #30848 > 00:01:15 v #7 ! validate(nb) 00:24:38 v #30849 > 00:01:15 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:24:38 v #30850 > 00:01:15 v #9 ! return _pygments_highlight( 00:24:39 v #30851 > 00:01:16 v #10 ! [NbConvertApp] Writing 398774 bytes to c:\home\git\polyglot\lib\spiral\seq.dib.html 00:24:39 v #30852 > 00:01:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 } 00:24:39 v #30853 > 00:01:17 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 } 00:24:39 v #30854 > 00:01:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:40 v #30855 > 00:01:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:24:40 v #30856 > 00:01:17 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:24:40 v #30857 > 00:01:17 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53382 } 00:24:40 d #30858 runtime.execute_with_options_async / { exit_code = 0; output_length = 58104 } 00:24:40 d #33 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path seq.dib --retries 3 00:24:40 d #30859 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path env.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:40 v #30860 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) } 00:24:40 v #30861 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/env.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/env.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/env.dib" --output-path "c:/home/git/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:24:41 v #30862 > > 00:24:41 v #30863 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:41 v #30864 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:41 v #30865 > > │ # env │ 00:24:41 v #30866 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:44 v #30867 > > 00:24:44 v #30868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:44 v #30869 > > //// test 00:24:44 v #30870 > > 00:24:44 v #30871 > > open testing 00:24:46 v #30872 > > 00:24:46 v #30873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:46 v #30874 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:46 v #30875 > > │ ## rust │ 00:24:46 v #30876 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:46 v #30877 > > 00:24:46 v #30878 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:46 v #30879 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:46 v #30880 > > │ ### var_error │ 00:24:46 v #30881 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:46 v #30882 > > 00:24:46 v #30883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:46 v #30884 > > nominal var_error = 00:24:46 v #30885 > > `( 00:24:46 v #30886 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:46 v #30887 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError = 00:24:46 v #30888 > > class end" 00:24:46 v #30889 > > $'' : $'std_env_VarError' 00:24:46 v #30890 > > ) 00:24:46 v #30891 > > 00:24:46 v #30892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:46 v #30893 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:46 v #30894 > > │ ### get_environment_variable_comptime │ 00:24:46 v #30895 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:46 v #30896 > > 00:24:46 v #30897 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:46 v #30898 > > inl get_environment_variable_comptime (var : string) : string = 00:24:46 v #30899 > > run_target_args (fun () => var) function 00:24:46 v #30900 > > | Rust _ => fun var => 00:24:46 v #30901 > > open rust.rust_operators 00:24:46 v #30902 > > !\($'"option_env\!(\\\"" + !var + "\\\").unwrap_or(\\\"\\\")"') 00:24:46 v #30903 > > |> sm'.ref_to_std_string 00:24:46 v #30904 > > |> sm'.from_std_string 00:24:46 v #30905 > > | target => fun _ => null () 00:24:47 v #30906 > > 00:24:47 v #30907 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:47 v #30908 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:47 v #30909 > > │ ## python │ 00:24:47 v #30910 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:47 v #30911 > > 00:24:47 v #30912 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:47 v #30913 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:47 v #30914 > > │ ### os_environ │ 00:24:47 v #30915 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:47 v #30916 > > 00:24:47 v #30917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:47 v #30918 > > nominal os_environ = any 00:24:47 v #30919 > > 00:24:47 v #30920 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:47 v #30921 > > inl os_environ () : os_environ = 00:24:47 v #30922 > > backend_switch { 00:24:47 v #30923 > > Fsharp = fun () => 00:24:47 v #30924 > > open python_operators 00:24:47 v #30925 > > global "type IOsEnviron = abstract environ: x: unit -> obj" 00:24:47 v #30926 > > inl os : $'IOsEnviron' = python.import_all "os" 00:24:47 v #30927 > > !\($'"!os.environ"') : os_environ 00:24:47 v #30928 > > Python = fun () => 00:24:47 v #30929 > > global "import os" 00:24:47 v #30930 > > $'os.environ' : os_environ 00:24:47 v #30931 > > } 00:24:47 v #30932 > > 00:24:47 v #30933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:47 v #30934 > > inl environ_get (key : string) (os_environ : os_environ) : string = 00:24:47 v #30935 > > backend_switch { 00:24:47 v #30936 > > Fsharp = fun () => 00:24:47 v #30937 > > open python_operators 00:24:47 v #30938 > > !\\(key, $'"!os_environ.get($0)"') : string 00:24:47 v #30939 > > Python = fun () => 00:24:47 v #30940 > > $'!os_environ.get(!key)' : string 00:24:47 v #30941 > > } 00:24:48 v #30942 > > 00:24:48 v #30943 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:48 v #30944 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:48 v #30945 > > │ ## env │ 00:24:48 v #30946 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:48 v #30947 > > 00:24:48 v #30948 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:48 v #30949 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:24:48 v #30950 > > │ ### get_environment_variable │ 00:24:48 v #30951 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:24:48 v #30952 > > 00:24:48 v #30953 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:48 v #30954 > > let get_environment_variable (var : string) : string = 00:24:48 v #30955 > > run_target_args (fun () => var) function 00:24:48 v #30956 > > | Rust (Native) => fun var => 00:24:48 v #30957 > > inl var = join var 00:24:48 v #30958 > > open rust.rust_operators 00:24:48 v #30959 > > !\\(var, $'"std::env::var(&*$0)"') 00:24:48 v #30960 > > |> fun x => x : resultm.result' sm'.std_string var_error 00:24:48 v #30961 > > |> resultm.map' sm'.from_std_string 00:24:48 v #30962 > > |> resultm.unwrap_or' (join "") 00:24:48 v #30963 > > | Fsharp (Native) => fun var => 00:24:48 v #30964 > > var 00:24:48 v #30965 > > |> $'System.Environment.GetEnvironmentVariable' 00:24:48 v #30966 > > |> optionm'.of_obj 00:24:48 v #30967 > > |> optionm'.unbox 00:24:48 v #30968 > > |> optionm'.default_value "" 00:24:48 v #30969 > > | TypeScript _ => fun var => 00:24:48 v #30970 > > open typescript_operators 00:24:48 v #30971 > > !\\(var, $'"process.env[[$0]] ?? \\\"\\\""') 00:24:48 v #30972 > > | Python _ | Cuda _ => fun var => 00:24:48 v #30973 > > os_environ () 00:24:48 v #30974 > > |> environ_get var 00:24:48 v #30975 > > |> optionm'.of_obj 00:24:48 v #30976 > > |> optionm'.unbox 00:24:48 v #30977 > > |> optionm'.default_value "" 00:24:48 v #30978 > > | target => fun var => failwith $'$"env.get_environment_variable 00:24:48 v #30979 > > target: {!target} / var: {!var}"' 00:24:48 v #30980 > > 00:24:48 v #30981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:48 v #30982 > > //// test 00:24:48 v #30983 > > ///! fsharp 00:24:48 v #30984 > > ///! cuda 00:24:48 v #30985 > > ///! rust 00:24:48 v #30986 > > ///! typescript 00:24:48 v #30987 > > ///! python 00:24:48 v #30988 > > 00:24:48 v #30989 > > "PATH" 00:24:48 v #30990 > > |> get_environment_variable 00:24:48 v #30991 > > |> sm'.length 00:24:48 v #30992 > > |> fun x => 00:24:48 v #30993 > > if x > 0i32 00:24:48 v #30994 > > then 1 00:24:48 v #30995 > > else 0 00:24:48 v #30996 > > |> _assert_ne 0i32 00:25:04 v #30997 > > 00:25:04 v #30998 > > ╭─[ 15.45s - return value ]────────────────────────────────────────────────────╮ 00:25:04 v #30999 > > │ .py output (Cuda): │ 00:25:04 v #31000 > > │ __assert_ne / actual: 1 / expected: 0 │ 00:25:04 v #31001 > > │ │ 00:25:04 v #31002 > > │ .rs output: │ 00:25:04 v #31003 > > │ __assert_ne / actual: 1 / expected: 0 │ 00:25:04 v #31004 > > │ │ 00:25:04 v #31005 > > │ .ts output: │ 00:25:04 v #31006 > > │ __assert_ne / actual: 1 / expected: 0 │ 00:25:04 v #31007 > > │ │ 00:25:04 v #31008 > > │ .py output: │ 00:25:04 v #31009 > > │ __assert_ne / actual: 1 / expected: 0 │ 00:25:04 v #31010 > > │ │ 00:25:04 v #31011 > > │ │ 00:25:04 v #31012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:04 v #31013 > > 00:25:04 v #31014 > > ╭─[ 15.46s - stdout ]──────────────────────────────────────────────────────────╮ 00:25:04 v #31015 > > │ .fsx output: │ 00:25:04 v #31016 > > │ __assert_ne / actual: 1 / expected: 0 │ 00:25:04 v #31017 > > │ │ 00:25:04 v #31018 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:04 v #31019 > > 00:25:04 v #31020 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:04 v #31021 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:04 v #31022 > > │ ### get_entry_assembly_name │ 00:25:04 v #31023 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:04 v #31024 > > 00:25:04 v #31025 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:04 v #31026 > > let get_entry_assembly_name () : string = 00:25:04 v #31027 > > run_target function 00:25:04 v #31028 > > | Rust _ => fun () => (join "CARGO_PKG_NAME") |> 00:25:04 v #31029 > > get_environment_variable 00:25:04 v #31030 > > | Fsharp _ => fun () => 00:25:04 v #31031 > > $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name' 00:25:04 v #31032 > > | target => fun () => failwith $'$"env.get_entry_assembly_name / target: 00:25:04 v #31033 > > {!target}"' 00:25:04 v #31034 > > 00:25:04 v #31035 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:04 v #31036 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:04 v #31037 > > │ ### append_path │ 00:25:04 v #31038 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:04 v #31039 > > 00:25:04 v #31040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:04 v #31041 > > inl append_path (path : string) : option string = 00:25:04 v #31042 > > inl env_path = "PATH" |> get_environment_variable 00:25:04 v #31043 > > if env_path = "" 00:25:04 v #31044 > > then None 00:25:04 v #31045 > > else 00:25:04 v #31046 > > inl env_sep = 00:25:04 v #31047 > > if platform.is_windows () 00:25:04 v #31048 > > then ";" 00:25:04 v #31049 > > else ":" 00:25:04 v #31050 > > Some $'$"{!path}{!env_sep}{!env_path}"' 00:25:05 v #31051 > 00:00:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8901 } 00:25:05 v #31052 > 00:00:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/env.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:06 v #31053 > 00:00:26 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/env.dib.ipynb to html 00:25:06 v #31054 > 00:00:26 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:25:06 v #31055 > 00:00:26 v #7 ! validate(nb) 00:25:07 v #31056 > 00:00:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:25:07 v #31057 > 00:00:26 v #9 ! return _pygments_highlight( 00:25:07 v #31058 > 00:00:27 v #10 ! [NbConvertApp] Writing 294829 bytes to c:\home\git\polyglot\lib\spiral\env.dib.html 00:25:07 v #31059 > 00:00:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 848 } 00:25:07 v #31060 > 00:00:27 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 848 } 00:25:07 v #31061 > 00:00:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:07 v #31062 > 00:00:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:25:07 v #31063 > 00:00:27 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:25:07 v #31064 > 00:00:27 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9808 } 00:25:07 d #31065 runtime.execute_with_options_async / { exit_code = 0; output_length = 12724 } 00:25:07 d #34 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path env.dib --retries 3 00:25:07 d #31066 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path python.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:07 v #31067 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) } 00:25:07 v #31068 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/python.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/python.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/python.dib" --output-path "c:/home/git/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:25:09 v #31069 > > 00:25:09 v #31070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:09 v #31071 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:09 v #31072 > > │ # python │ 00:25:09 v #31073 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:09 v #31074 > > 00:25:09 v #31075 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:09 v #31076 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:09 v #31077 > > │ ### emit_expr │ 00:25:09 v #31078 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:12 v #31079 > > 00:25:12 v #31080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:12 v #31081 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:25:12 v #31082 > > real 00:25:12 v #31083 > > $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t 00:25:13 v #31084 > > 00:25:13 v #31085 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:13 v #31086 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:13 v #31087 > > │ ### │ 00:25:13 v #31088 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:13 v #31089 > > 00:25:13 v #31090 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:13 v #31091 > > inl (~!\) forall t. (code : string) : t = 00:25:13 v #31092 > > emit_expr () code 00:25:14 v #31093 > > 00:25:14 v #31094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:14 v #31095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:14 v #31096 > > │ ### │ 00:25:14 v #31097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:14 v #31098 > > 00:25:14 v #31099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:14 v #31100 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:25:14 v #31101 > > emit_expr args code 00:25:14 v #31102 > > 00:25:14 v #31103 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:14 v #31104 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:14 v #31105 > > │ ### │ 00:25:14 v #31106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:14 v #31107 > > 00:25:14 v #31108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:14 v #31109 > > inl import_all forall t. (file : string) : t = 00:25:14 v #31110 > > real 00:25:14 v #31111 > > $'Fable.Core.PyInterop.importAll !file ' : t 00:25:15 v #31112 > > 00:25:15 v #31113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:15 v #31114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:15 v #31115 > > │ ### │ 00:25:15 v #31116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:15 v #31117 > > 00:25:15 v #31118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:15 v #31119 > > inl import forall t. (name : string) (file : string) : t = 00:25:15 v #31120 > > real 00:25:15 v #31121 > > $'Fable.Core.PyInterop.import !name !file ' : t 00:25:15 v #31122 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2867 } 00:25:15 v #31123 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/python.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:16 v #31124 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/python.dib.ipynb to html 00:25:16 v #31125 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:25:16 v #31126 > 00:00:09 v #7 ! validate(nb) 00:25:17 v #31127 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:25:17 v #31128 > 00:00:09 v #9 ! return _pygments_highlight( 00:25:17 v #31129 > 00:00:09 v #10 ! [NbConvertApp] Writing 278614 bytes to c:\home\git\polyglot\lib\spiral\python.dib.html 00:25:17 v #31130 > 00:00:09 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 854 } 00:25:17 v #31131 > 00:00:09 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 854 } 00:25:17 v #31132 > 00:00:09 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:18 v #31133 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:25:18 v #31134 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:25:18 v #31135 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3780 } 00:25:18 d #31136 runtime.execute_with_options_async / { exit_code = 0; output_length = 6451 } 00:25:18 d #35 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path python.dib --retries 3 00:25:18 d #31137 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path typescript.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:18 v #31138 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) } 00:25:18 v #31139 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/typescript.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/typescript.dib" --output-path "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:25:19 v #31140 > > 00:25:19 v #31141 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:19 v #31142 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:19 v #31143 > > │ # typescript │ 00:25:19 v #31144 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:19 v #31145 > > 00:25:19 v #31146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:19 v #31147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:19 v #31148 > > │ ### emit_expr │ 00:25:19 v #31149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:23 v #31150 > > 00:25:23 v #31151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:23 v #31152 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:25:23 v #31153 > > real 00:25:23 v #31154 > > $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t 00:25:24 v #31155 > > 00:25:24 v #31156 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:24 v #31157 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:24 v #31158 > > │ ### │ 00:25:24 v #31159 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:24 v #31160 > > 00:25:24 v #31161 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:24 v #31162 > > inl (~!\) forall t. (code : string) : t = 00:25:24 v #31163 > > emit_expr () code 00:25:24 v #31164 > > 00:25:24 v #31165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:24 v #31166 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:24 v #31167 > > │ ### │ 00:25:24 v #31168 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:24 v #31169 > > 00:25:24 v #31170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:24 v #31171 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:25:24 v #31172 > > emit_expr args code 00:25:25 v #31173 > > 00:25:25 v #31174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:25 v #31175 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:25 v #31176 > > │ ### │ 00:25:25 v #31177 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:25 v #31178 > > 00:25:25 v #31179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:25 v #31180 > > inl import_all forall t. (file : string) : t = 00:25:25 v #31181 > > real 00:25:25 v #31182 > > $'Fable.Core.JsInterop.importAll !file ' : t 00:25:25 v #31183 > > 00:25:25 v #31184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:25 v #31185 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:25 v #31186 > > │ ### │ 00:25:25 v #31187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:25 v #31188 > > 00:25:25 v #31189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:25 v #31190 > > inl import forall t. (name : string) (file : string) : t = 00:25:25 v #31191 > > real 00:25:25 v #31192 > > $'Fable.Core.JsInterop.import !name !file ' : t 00:25:26 v #31193 > 00:00:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2867 } 00:25:26 v #31194 > 00:00:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:27 v #31195 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/typescript.dib.ipynb to html 00:25:27 v #31196 > 00:00:09 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:25:27 v #31197 > 00:00:09 v #7 ! validate(nb) 00:25:28 v #31198 > 00:00:09 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:25:28 v #31199 > 00:00:09 v #9 ! return _pygments_highlight( 00:25:28 v #31200 > 00:00:10 v #10 ! [NbConvertApp] Writing 278630 bytes to c:\home\git\polyglot\lib\spiral\typescript.dib.html 00:25:28 v #31201 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 } 00:25:28 v #31202 > 00:00:10 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 } 00:25:28 v #31203 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:28 v #31204 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:25:28 v #31205 > 00:00:10 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:25:28 v #31206 > 00:00:10 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 3788 } 00:25:28 d #31207 runtime.execute_with_options_async / { exit_code = 0; output_length = 6495 } 00:25:28 d #36 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path typescript.dib --retries 3 00:25:28 d #31208 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path file_system.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:28 v #31209 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) } 00:25:28 v #31210 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/file_system.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/file_system.dib" --output-path "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:25:30 v #31211 > > 00:25:30 v #31212 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:30 v #31213 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:30 v #31214 > > │ # file_system │ 00:25:30 v #31215 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:33 v #31216 > > 00:25:33 v #31217 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:33 v #31218 > > open sm'_operators 00:25:33 v #31219 > > open rust 00:25:33 v #31220 > > open rust_operators 00:25:34 v #31221 > > 00:25:34 v #31222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:34 v #31223 > > //// test 00:25:34 v #31224 > > 00:25:34 v #31225 > > open testing 00:25:35 v #31226 > > 00:25:35 v #31227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:35 v #31228 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:35 v #31229 > > │ ## fsharp │ 00:25:35 v #31230 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:35 v #31231 > > 00:25:35 v #31232 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:35 v #31233 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:35 v #31234 > > │ ### file_mode │ 00:25:35 v #31235 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:35 v #31236 > > 00:25:35 v #31237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:35 v #31238 > > nominal file_mode' = $'System.IO.FileMode' 00:25:35 v #31239 > > 00:25:35 v #31240 > > union file_mode = 00:25:35 v #31241 > > | ModeCreateNew 00:25:35 v #31242 > > | ModeCreate 00:25:35 v #31243 > > | ModeOpen 00:25:35 v #31244 > > | ModeOpenOrCreate 00:25:35 v #31245 > > | Truncate 00:25:35 v #31246 > > | Append 00:25:35 v #31247 > > 00:25:35 v #31248 > > inl file_mode = function 00:25:35 v #31249 > > | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode' 00:25:35 v #31250 > > | ModeCreate => $'System.IO.FileMode.Create' : file_mode' 00:25:35 v #31251 > > | ModeOpen => $'System.IO.FileMode.Open' : file_mode' 00:25:35 v #31252 > > | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode' 00:25:35 v #31253 > > | Truncate => $'System.IO.FileMode.Truncate' : file_mode' 00:25:35 v #31254 > > | Append => $'System.IO.FileMode.Append' : file_mode' 00:25:35 v #31255 > > 00:25:35 v #31256 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:35 v #31257 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:35 v #31258 > > │ ### file_access │ 00:25:35 v #31259 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:35 v #31260 > > 00:25:35 v #31261 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:35 v #31262 > > nominal file_access' = $'System.IO.FileAccess' 00:25:35 v #31263 > > 00:25:35 v #31264 > > union file_access = 00:25:35 v #31265 > > | AccessRead 00:25:35 v #31266 > > | AccessWrite 00:25:35 v #31267 > > | AccessReadWrite 00:25:35 v #31268 > > 00:25:35 v #31269 > > inl file_access = function 00:25:35 v #31270 > > | AccessRead => $'System.IO.FileAccess.Read' : file_access' 00:25:35 v #31271 > > | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:25:35 v #31272 > > | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:25:35 v #31273 > > 00:25:35 v #31274 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:35 v #31275 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:35 v #31276 > > │ ### file_share │ 00:25:35 v #31277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:35 v #31278 > > 00:25:35 v #31279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:35 v #31280 > > nominal file_share' = $'System.IO.FileShare' 00:25:35 v #31281 > > 00:25:35 v #31282 > > union file_share = 00:25:35 v #31283 > > | ShareNone 00:25:35 v #31284 > > | ShareRead 00:25:35 v #31285 > > | ShareWrite 00:25:35 v #31286 > > | ShareReadWrite 00:25:35 v #31287 > > | ShareDelete 00:25:35 v #31288 > > 00:25:35 v #31289 > > inl file_share = function 00:25:35 v #31290 > > | ShareNone => $'System.IO.FileShare.None' : file_share' 00:25:35 v #31291 > > | ShareRead => $'System.IO.FileShare.Read' : file_share' 00:25:35 v #31292 > > | ShareWrite => $'System.IO.FileShare.Write' : file_share' 00:25:35 v #31293 > > | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share' 00:25:35 v #31294 > > | ShareDelete => $'System.IO.FileShare.Delete' : file_share' 00:25:36 v #31295 > > 00:25:36 v #31296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:36 v #31297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:36 v #31298 > > │ ### file_stream │ 00:25:36 v #31299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:36 v #31300 > > 00:25:36 v #31301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:36 v #31302 > > nominal file_stream' = $'System.IO.FileStream' 00:25:36 v #31303 > > 00:25:36 v #31304 > > inl file_stream (path : string) mode access share : file_stream' = 00:25:36 v #31305 > > run_target function 00:25:36 v #31306 > > | Fsharp (Native) => fun () => 00:25:36 v #31307 > > inl mode = mode |> file_mode 00:25:36 v #31308 > > inl access = access |> file_access 00:25:36 v #31309 > > inl share = share |> file_share 00:25:36 v #31310 > > $'new System.IO.FileStream (!path, !mode, !access, !share)' 00:25:36 v #31311 > > | _ => fun () => null () 00:25:36 v #31312 > > 00:25:36 v #31313 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:36 v #31314 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:36 v #31315 > > │ ### file_info │ 00:25:36 v #31316 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:36 v #31317 > > 00:25:36 v #31318 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:36 v #31319 > > nominal file_info = 00:25:36 v #31320 > > `( 00:25:36 v #31321 > > global "#if FABLE_COMPILER\ntype System_IO_FileInfo = unit\n#else\ntype 00:25:36 v #31322 > > System_IO_FileInfo = System.IO.FileInfo\n#endif\n" 00:25:36 v #31323 > > $'' : $'System_IO_FileInfo' 00:25:36 v #31324 > > ) 00:25:36 v #31325 > > 00:25:36 v #31326 > > inl file_info (path : string) : file_info = 00:25:36 v #31327 > > run_target function 00:25:36 v #31328 > > | Fsharp (Native) => fun () => path |> convert 00:25:36 v #31329 > > | _ => fun () => null () 00:25:37 v #31330 > > 00:25:37 v #31331 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:37 v #31332 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:37 v #31333 > > │ ### directory_info │ 00:25:37 v #31334 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:37 v #31335 > > 00:25:37 v #31336 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:37 v #31337 > > nominal directory_info = 00:25:37 v #31338 > > `( 00:25:37 v #31339 > > global "#if FABLE_COMPILER\ntype System_IO_DirectoryInfo = 00:25:37 v #31340 > > unit\n#else\ntype System_IO_DirectoryInfo = System.IO.DirectoryInfo\n#endif\n" 00:25:37 v #31341 > > $'' : $'System_IO_DirectoryInfo' 00:25:37 v #31342 > > ) 00:25:37 v #31343 > > 00:25:37 v #31344 > > inl directory_info (path : string) : directory_info = 00:25:37 v #31345 > > run_target function 00:25:37 v #31346 > > | Fsharp (Native) => fun () => path |> convert 00:25:37 v #31347 > > | _ => fun () => null () 00:25:37 v #31348 > > 00:25:37 v #31349 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:37 v #31350 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:37 v #31351 > > │ ### directory_info_exists │ 00:25:37 v #31352 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:37 v #31353 > > 00:25:37 v #31354 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:37 v #31355 > > inl directory_info_exists (info : directory_info) : bool = 00:25:37 v #31356 > > run_target function 00:25:37 v #31357 > > | Fsharp (Native) => fun () => info |> $'_.Exists' 00:25:37 v #31358 > > | _ => fun () => null () 00:25:37 v #31359 > > 00:25:37 v #31360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:37 v #31361 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:37 v #31362 > > │ ### directory_info_creation_time │ 00:25:37 v #31363 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:37 v #31364 > > 00:25:37 v #31365 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:37 v #31366 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time = 00:25:37 v #31367 > > run_target function 00:25:37 v #31368 > > | Fsharp (Native) => fun () => info |> $'_.CreationTime' 00:25:37 v #31369 > > | _ => fun () => null () 00:25:38 v #31370 > > 00:25:38 v #31371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:38 v #31372 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:38 v #31373 > > │ ### directory_info_name │ 00:25:38 v #31374 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:38 v #31375 > > 00:25:38 v #31376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:38 v #31377 > > inl directory_info_name (info : directory_info) : string = 00:25:38 v #31378 > > run_target function 00:25:38 v #31379 > > | Fsharp (Native) => fun () => info |> $'_.Name' 00:25:38 v #31380 > > | _ => fun () => null () 00:25:38 v #31381 > > 00:25:38 v #31382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:38 v #31383 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:38 v #31384 > > │ ### directory_info_full_name │ 00:25:38 v #31385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:38 v #31386 > > 00:25:38 v #31387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:38 v #31388 > > inl directory_info_full_name (info : directory_info) : string = 00:25:38 v #31389 > > run_target function 00:25:38 v #31390 > > | Fsharp (Native) => fun () => info |> $'_.FullName' 00:25:38 v #31391 > > | _ => fun () => null () 00:25:39 v #31392 > > 00:25:39 v #31393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:39 v #31394 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:39 v #31395 > > │ ### file_attributes │ 00:25:39 v #31396 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:39 v #31397 > > 00:25:39 v #31398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:39 v #31399 > > nominal file_attributes = $'System.IO.FileAttributes' 00:25:39 v #31400 > > 00:25:39 v #31401 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:39 v #31402 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:39 v #31403 > > │ ### directory_info_attributes │ 00:25:39 v #31404 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:39 v #31405 > > 00:25:39 v #31406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:39 v #31407 > > let directory_info_attributes (info : directory_info) : file_attributes = 00:25:39 v #31408 > > run_target function 00:25:39 v #31409 > > | Fsharp (Native) => fun () => info |> $'_.Attributes' 00:25:39 v #31410 > > | _ => fun () => null () 00:25:40 v #31411 > > 00:25:40 v #31412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:40 v #31413 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:40 v #31414 > > │ ### file_attributes_reparse_point │ 00:25:40 v #31415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:40 v #31416 > > 00:25:40 v #31417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:40 v #31418 > > let file_attributes_reparse_point () : file_attributes = 00:25:40 v #31419 > > run_target function 00:25:40 v #31420 > > | Fsharp (Native) => fun () => $'`file_attributes.ReparsePoint' 00:25:40 v #31421 > > | _ => fun () => null () 00:25:40 v #31422 > > 00:25:40 v #31423 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:40 v #31424 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:40 v #31425 > > │ ### file_attributes_has_flag │ 00:25:40 v #31426 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:40 v #31427 > > 00:25:40 v #31428 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:40 v #31429 > > let file_attributes_has_flag (flag : file_attributes) (file_attributes : 00:25:40 v #31430 > > file_attributes) : bool = 00:25:40 v #31431 > > run_target function 00:25:40 v #31432 > > | Fsharp (Native) => fun () => $'!file_attributes.HasFlag !flag ' 00:25:40 v #31433 > > | _ => fun () => null () 00:25:40 v #31434 > > 00:25:40 v #31435 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:40 v #31436 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:40 v #31437 > > │ ### create_directory │ 00:25:40 v #31438 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:40 v #31439 > > 00:25:40 v #31440 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:40 v #31441 > > let create_directory (path : string) : directory_info = 00:25:40 v #31442 > > run_target function 00:25:40 v #31443 > > | Fsharp (Native) => fun () => path |> 00:25:40 v #31444 > > $'System.IO.Directory.CreateDirectory' 00:25:40 v #31445 > > | _ => fun () => null () 00:25:41 v #31446 > > 00:25:41 v #31447 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:41 v #31448 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:41 v #31449 > > │ ### directory_get_files │ 00:25:41 v #31450 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:41 v #31451 > > 00:25:41 v #31452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:41 v #31453 > > let directory_get_files (path : string) : array_base string = 00:25:41 v #31454 > > run_target function 00:25:41 v #31455 > > | Fsharp (Native) => fun () => path |> $'System.IO.Directory.GetFiles' 00:25:41 v #31456 > > | _ => fun () => null () 00:25:41 v #31457 > > 00:25:41 v #31458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:41 v #31459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:41 v #31460 > > │ ### file_move │ 00:25:41 v #31461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:41 v #31462 > > 00:25:41 v #31463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:41 v #31464 > > let file_move (new_path : string) (old_path : string) : () = 00:25:41 v #31465 > > run_target function 00:25:41 v #31466 > > | Fsharp (Native) => fun () => $'System.IO.File.Move (!old_path, 00:25:41 v #31467 > > !new_path)' 00:25:41 v #31468 > > | _ => fun () => () 00:25:42 v #31469 > > 00:25:42 v #31470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:42 v #31471 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:42 v #31472 > > │ ### read_all_text_async │ 00:25:42 v #31473 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:42 v #31474 > > 00:25:42 v #31475 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:42 v #31476 > > let read_all_text_async (path : string) : _ string = 00:25:42 v #31477 > > run_target function 00:25:42 v #31478 > > | Fsharp (Native) => fun () => path |> 00:25:42 v #31479 > > $'System.IO.File.ReadAllTextAsync' |> async.await_task 00:25:42 v #31480 > > | _ => fun () => null () 00:25:42 v #31481 > > 00:25:42 v #31482 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:42 v #31483 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:42 v #31484 > > │ ### write_all_text_async │ 00:25:42 v #31485 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:42 v #31486 > > 00:25:42 v #31487 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:42 v #31488 > > let write_all_text_async (path : string) (text : string) : _ () = 00:25:42 v #31489 > > run_target function 00:25:42 v #31490 > > | Fsharp (Native) => fun () => $'System.IO.File.WriteAllTextAsync 00:25:42 v #31491 > > (!path, !text)' |> async.await_task 00:25:42 v #31492 > > | _ => fun () => null () 00:25:43 v #31493 > > 00:25:43 v #31494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:43 v #31495 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:43 v #31496 > > │ ### file_system_info │ 00:25:43 v #31497 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:43 v #31498 > > 00:25:43 v #31499 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:43 v #31500 > > nominal file_system_info = $'System.IO.FileSystemInfo' 00:25:43 v #31501 > > 00:25:43 v #31502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:43 v #31503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:43 v #31504 > > │ ### get_source_directory │ 00:25:43 v #31505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:43 v #31506 > > 00:25:43 v #31507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:43 v #31508 > > inl get_source_directory () = 00:25:43 v #31509 > > $'__SOURCE_DIRECTORY__' : string 00:25:44 v #31510 > > 00:25:44 v #31511 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:44 v #31512 > > //// test 00:25:44 v #31513 > > 00:25:44 v #31514 > > get_source_directory () 00:25:44 v #31515 > > |> directory_info 00:25:44 v #31516 > > |> directory_info_name 00:25:44 v #31517 > > |> _assert_eq "spiral" 00:25:45 v #31518 > > 00:25:45 v #31519 > > ╭─[ 1.18s - stdout ]───────────────────────────────────────────────────────────╮ 00:25:45 v #31520 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:25:45 v #31521 > > │ │ 00:25:45 v #31522 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:45 v #31523 > > 00:25:45 v #31524 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:45 v #31525 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:45 v #31526 > > │ ## rust │ 00:25:45 v #31527 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:45 v #31528 > > 00:25:45 v #31529 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:45 v #31530 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:45 v #31531 > > │ ### display │ 00:25:45 v #31532 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:45 v #31533 > > 00:25:45 v #31534 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:45 v #31535 > > nominal display = 00:25:45 v #31536 > > `( 00:25:45 v #31537 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:45 v #31538 > > Fable.Core.Emit(\"std::path::Display\")>]]\ntype std_path_Display = class 00:25:45 v #31539 > > end\n#else\ntype std_path_Display = string\n#endif\n" 00:25:45 v #31540 > > $'' : $'std_path_Display' 00:25:45 v #31541 > > ) 00:25:45 v #31542 > > 00:25:45 v #31543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:45 v #31544 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:45 v #31545 > > │ ### path │ 00:25:45 v #31546 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:45 v #31547 > > 00:25:45 v #31548 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:45 v #31549 > > nominal path = 00:25:45 v #31550 > > `( 00:25:45 v #31551 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:45 v #31552 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end" 00:25:45 v #31553 > > $'' : $'std_path_Path' 00:25:45 v #31554 > > ) 00:25:46 v #31555 > > 00:25:46 v #31556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:46 v #31557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:46 v #31558 > > │ ### path_buf │ 00:25:46 v #31559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:46 v #31560 > > 00:25:46 v #31561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:46 v #31562 > > nominal path_buf = 00:25:46 v #31563 > > `( 00:25:46 v #31564 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:46 v #31565 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\ntype std_path_PathBuf = class 00:25:46 v #31566 > > end\n#else\ntype std_path_PathBuf = string\n#endif\n" 00:25:46 v #31567 > > $'' : $'std_path_PathBuf' 00:25:46 v #31568 > > ) 00:25:46 v #31569 > > 00:25:46 v #31570 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:46 v #31571 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:46 v #31572 > > │ ### new_path_buf │ 00:25:46 v #31573 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:46 v #31574 > > 00:25:46 v #31575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:46 v #31576 > > inl new_path_buf (path : sm'.std_string) : path_buf = 00:25:46 v #31577 > > run_target function 00:25:46 v #31578 > > | Rust _ => fun () => !\\(path, $'"std::path::PathBuf::from($0)"') 00:25:46 v #31579 > > | _ => fun () => path |> unbox 00:25:47 v #31580 > > 00:25:47 v #31581 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:47 v #31582 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:47 v #31583 > > │ ### path_buf_from │ 00:25:47 v #31584 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:47 v #31585 > > 00:25:47 v #31586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:47 v #31587 > > inl path_buf_from (path : rust.box path) : path_buf = 00:25:47 v #31588 > > !\\(path, $'"std::path::PathBuf::from($0)"') 00:25:47 v #31589 > > 00:25:47 v #31590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:47 v #31591 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:47 v #31592 > > │ ### path_buf_join │ 00:25:47 v #31593 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:47 v #31594 > > 00:25:47 v #31595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:47 v #31596 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf = 00:25:47 v #31597 > > !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"') 00:25:47 v #31598 > > 00:25:47 v #31599 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:47 v #31600 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:47 v #31601 > > │ ### path_buf_strip_prefix │ 00:25:47 v #31602 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:47 v #31603 > > 00:25:47 v #31604 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:47 v #31605 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf = 00:25:47 v #31606 > > !\\((path_buf, s |> sm'.to_std_string), 00:25:47 v #31607 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"') 00:25:48 v #31608 > > 00:25:48 v #31609 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:48 v #31610 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:48 v #31611 > > │ ### path_display │ 00:25:48 v #31612 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:48 v #31613 > > 00:25:48 v #31614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:48 v #31615 > > inl path_display (path : rust.ref path) : display = 00:25:48 v #31616 > > !\\(path, $'"$0.display()"') 00:25:48 v #31617 > > 00:25:48 v #31618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:48 v #31619 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:48 v #31620 > > │ ### path_buf_display │ 00:25:48 v #31621 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:48 v #31622 > > 00:25:48 v #31623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:48 v #31624 > > inl path_buf_display (path_buf : path_buf) : display = 00:25:48 v #31625 > > run_target_args (fun () => path_buf) function 00:25:48 v #31626 > > | Rust _ => fun path_buf => !\\(path_buf, $'"$0.display()"') 00:25:48 v #31627 > > | _ => fun path_buf => path_buf |> unbox 00:25:49 v #31628 > > 00:25:49 v #31629 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:49 v #31630 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:49 v #31631 > > │ ### path_buf_file_name │ 00:25:49 v #31632 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:49 v #31633 > > 00:25:49 v #31634 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:49 v #31635 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref 00:25:49 v #31636 > > sm'.os_str) = 00:25:49 v #31637 > > !\\(path, $'"$0.file_name()"') 00:25:49 v #31638 > > 00:25:49 v #31639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:49 v #31640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:49 v #31641 > > │ ### path_buf_exists │ 00:25:49 v #31642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:49 v #31643 > > 00:25:49 v #31644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:49 v #31645 > > inl path_buf_exists (path_buf : path_buf) : bool = 00:25:49 v #31646 > > !\\(path_buf, $'"$0.exists()"') 00:25:50 v #31647 > > 00:25:50 v #31648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:50 v #31649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:50 v #31650 > > │ ### path_buf_is_dir │ 00:25:50 v #31651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:50 v #31652 > > 00:25:50 v #31653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:50 v #31654 > > inl path_buf_is_dir (path_buf : path_buf) : bool = 00:25:50 v #31655 > > !\\(path_buf, $'"$0.is_dir()"') 00:25:50 v #31656 > > 00:25:50 v #31657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:50 v #31658 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:50 v #31659 > > │ ### path_buf_is_file │ 00:25:50 v #31660 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:50 v #31661 > > 00:25:50 v #31662 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:50 v #31663 > > inl path_buf_is_file (path_buf : path_buf) : bool = 00:25:50 v #31664 > > !\\(path_buf, $'"$0.is_file()"') 00:25:51 v #31665 > > 00:25:51 v #31666 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:51 v #31667 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:51 v #31668 > > │ ### path_buf_is_symlink │ 00:25:51 v #31669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:51 v #31670 > > 00:25:51 v #31671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:51 v #31672 > > inl path_buf_is_symlink (path_buf : path_buf) : bool = 00:25:51 v #31673 > > !\\(path_buf, $'"$0.is_symlink()"') 00:25:51 v #31674 > > 00:25:51 v #31675 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:51 v #31676 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:51 v #31677 > > │ ### path_buf_parent │ 00:25:51 v #31678 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:51 v #31679 > > 00:25:51 v #31680 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:51 v #31681 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf = 00:25:51 v #31682 > > !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"') 00:25:51 v #31683 > > 00:25:51 v #31684 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:51 v #31685 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:51 v #31686 > > │ ### dir_entry │ 00:25:51 v #31687 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:51 v #31688 > > 00:25:51 v #31689 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:51 v #31690 > > nominal dir_entry = 00:25:51 v #31691 > > `( 00:25:51 v #31692 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:51 v #31693 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype 00:25:51 v #31694 > > async_walkdir_DirEntry = class end" 00:25:51 v #31695 > > $'' : $'async_walkdir_DirEntry' 00:25:51 v #31696 > > ) 00:25:52 v #31697 > > 00:25:52 v #31698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:52 v #31699 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:52 v #31700 > > │ ### walk_dir │ 00:25:52 v #31701 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:52 v #31702 > > 00:25:52 v #31703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:52 v #31704 > > nominal walk_dir = 00:25:52 v #31705 > > `( 00:25:52 v #31706 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:52 v #31707 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype 00:25:52 v #31708 > > async_walkdir_WalkDir = class end" 00:25:52 v #31709 > > $'' : $'async_walkdir_WalkDir' 00:25:52 v #31710 > > ) 00:25:52 v #31711 > > 00:25:52 v #31712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:52 v #31713 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:52 v #31714 > > │ ### async_walkdir_filtering │ 00:25:52 v #31715 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:52 v #31716 > > 00:25:52 v #31717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:52 v #31718 > > nominal async_walkdir_filtering = 00:25:52 v #31719 > > `( 00:25:52 v #31720 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:52 v #31721 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype 00:25:52 v #31722 > > async_walkdir_Filtering = class end" 00:25:52 v #31723 > > $'' : $'async_walkdir_Filtering' 00:25:52 v #31724 > > ) 00:25:53 v #31725 > > 00:25:53 v #31726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:53 v #31727 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:53 v #31728 > > │ ### filtering │ 00:25:53 v #31729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:53 v #31730 > > 00:25:53 v #31731 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:53 v #31732 > > union filtering = 00:25:53 v #31733 > > | Ignore 00:25:53 v #31734 > > | IgnoreDir 00:25:53 v #31735 > > | Continue 00:25:53 v #31736 > > 00:25:53 v #31737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:53 v #31738 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:53 v #31739 > > │ ### async_walkdir_error │ 00:25:53 v #31740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:53 v #31741 > > 00:25:53 v #31742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:53 v #31743 > > nominal async_walkdir_error = 00:25:53 v #31744 > > `( 00:25:53 v #31745 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:53 v #31746 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error = 00:25:53 v #31747 > > class end" 00:25:53 v #31748 > > $'' : $'async_walkdir_Error' 00:25:53 v #31749 > > ) 00:25:54 v #31750 > > 00:25:54 v #31751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:54 v #31752 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:54 v #31753 > > │ ### new_walk_dir │ 00:25:54 v #31754 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:54 v #31755 > > 00:25:54 v #31756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:54 v #31757 > > inl new_walk_dir (dir : string) : walk_dir = 00:25:54 v #31758 > > !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"') 00:25:54 v #31759 > > // inl walk_dir : walk_dir = walk_dir |> rust.to_mut 00:25:54 v #31760 > > // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore 00:25:54 v #31761 > > 00:25:54 v #31762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:54 v #31763 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:54 v #31764 > > │ ### walk_dir_filter │ 00:25:54 v #31765 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:54 v #31766 > > 00:25:54 v #31767 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:54 v #31768 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering) 00:25:54 v #31769 > > (walk_dir : walk_dir) : walk_dir = 00:25:54 v #31770 > > inl fn entry = async.new_future_send fun () => 00:25:54 v #31771 > > inl result = fn entry |> async.await_send 00:25:54 v #31772 > > inl filtering : async_walkdir_filtering = 00:25:54 v #31773 > > match result with 00:25:54 v #31774 > > | Ignore => !\($'"async_walkdir::Filtering::Ignore"') 00:25:54 v #31775 > > | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"') 00:25:54 v #31776 > > | Continue => !\($'"async_walkdir::Filtering::Continue"') 00:25:54 v #31777 > > filtering 00:25:54 v #31778 > > !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, move |x| $1(x))"') 00:25:54 v #31779 > > 00:25:54 v #31780 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:54 v #31781 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:54 v #31782 > > │ ### file_type │ 00:25:54 v #31783 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:54 v #31784 > > 00:25:54 v #31785 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:54 v #31786 > > nominal file_type = 00:25:54 v #31787 > > `( 00:25:54 v #31788 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:54 v #31789 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class 00:25:54 v #31790 > > end" 00:25:54 v #31791 > > $'' : $'std_fs_FileType' 00:25:54 v #31792 > > ) 00:25:55 v #31793 > > 00:25:55 v #31794 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:55 v #31795 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:55 v #31796 > > │ ### dir_entry_file_type │ 00:25:55 v #31797 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:55 v #31798 > > 00:25:55 v #31799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:55 v #31800 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send 00:25:55 v #31801 > > (resultm.result' file_type stream.io_error) = 00:25:55 v #31802 > > inl dir_entry = dir_entry |> rust.emit 00:25:55 v #31803 > > !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"') 00:25:55 v #31804 > > 00:25:55 v #31805 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:55 v #31806 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:55 v #31807 > > │ ### file_type_is_dir │ 00:25:55 v #31808 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:55 v #31809 > > 00:25:55 v #31810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:55 v #31811 > > inl file_type_is_dir (file_type : file_type) : bool = 00:25:55 v #31812 > > !\\(file_type, $'"std::fs::FileType::is_dir(&$0)"') 00:25:56 v #31813 > > 00:25:56 v #31814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:56 v #31815 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:56 v #31816 > > │ ### file │ 00:25:56 v #31817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:56 v #31818 > > 00:25:56 v #31819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:56 v #31820 > > nominal file = 00:25:56 v #31821 > > `( 00:25:56 v #31822 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:25:56 v #31823 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end" 00:25:56 v #31824 > > $'' : $'std_fs_File' 00:25:56 v #31825 > > ) 00:25:56 v #31826 > > 00:25:56 v #31827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:56 v #31828 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:56 v #31829 > > │ ### file_open │ 00:25:56 v #31830 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:56 v #31831 > > 00:25:56 v #31832 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:56 v #31833 > > inl file_open (path : string) : resultm.result' file stream.io_error = 00:25:56 v #31834 > > !\($'"std::fs::File::open(&*!path)"') 00:25:57 v #31835 > > 00:25:57 v #31836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:57 v #31837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:57 v #31838 > > │ ### rename │ 00:25:57 v #31839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:57 v #31840 > > 00:25:57 v #31841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:57 v #31842 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error = 00:25:57 v #31843 > > !\($'"std::fs::rename(&*!path, &*!to)"') 00:25:57 v #31844 > > 00:25:57 v #31845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:57 v #31846 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:57 v #31847 > > │ ### dir_entry_path │ 00:25:57 v #31848 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:57 v #31849 > > 00:25:57 v #31850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:57 v #31851 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf = 00:25:57 v #31852 > > !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"') 00:25:57 v #31853 > > 00:25:57 v #31854 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:57 v #31855 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:57 v #31856 > > │ ### create_dir_all │ 00:25:57 v #31857 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:57 v #31858 > > 00:25:57 v #31859 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:57 v #31860 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error = 00:25:57 v #31861 > > !\\(path, $'"std::fs::create_dir_all(&*$0)"') 00:25:58 v #31862 > > 00:25:58 v #31863 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:58 v #31864 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:58 v #31865 > > │ ### file_info_link_target │ 00:25:58 v #31866 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:58 v #31867 > > 00:25:58 v #31868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:58 v #31869 > > inl file_info_link_target (file_info : file_info) : string = 00:25:58 v #31870 > > run_target function 00:25:58 v #31871 > > | Fsharp (Native) => fun () => 00:25:58 v #31872 > > file_info |> $'_.LinkTarget' 00:25:58 v #31873 > > | _ => fun () => null () 00:25:58 v #31874 > > 00:25:58 v #31875 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:58 v #31876 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:58 v #31877 > > │ ### read │ 00:25:58 v #31878 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:58 v #31879 > > 00:25:58 v #31880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:58 v #31881 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error = 00:25:58 v #31882 > > !\\(path, $'"std::fs::read(&*$0)"') 00:25:59 v #31883 > > 00:25:59 v #31884 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:59 v #31885 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:59 v #31886 > > │ ## typescript │ 00:25:59 v #31887 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:59 v #31888 > > 00:25:59 v #31889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:59 v #31890 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:59 v #31891 > > │ ### ts_path_join │ 00:25:59 v #31892 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:59 v #31893 > > 00:25:59 v #31894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:59 v #31895 > > inl ts_path_join (b : string) (a : string) : string = 00:25:59 v #31896 > > open typescript_operators 00:25:59 v #31897 > > global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths: 00:25:59 v #31898 > > string[[]] -> string" 00:25:59 v #31899 > > inl path : $'IPathJoin' = typescript.import_all "path" 00:25:59 v #31900 > > !\\((a, b), $'"!path.join($0, $1)"') 00:25:59 v #31901 > > 00:25:59 v #31902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:59 v #31903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:59 v #31904 > > │ ## file_system │ 00:25:59 v #31905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:59 v #31906 > > 00:25:59 v #31907 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:59 v #31908 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:25:59 v #31909 > > │ ### (< />) │ 00:25:59 v #31910 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:25:59 v #31911 > > 00:25:59 v #31912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:59 v #31913 > > let (</>) (a : string) (b : string) : string = 00:25:59 v #31914 > > run_target_args (fun () => a, b) function 00:25:59 v #31915 > > | Rust (Contract) => fun _ => null () 00:25:59 v #31916 > > | Rust (Native) => fun a, b => 00:25:59 v #31917 > > a 00:25:59 v #31918 > > |> sm'.to_std_string 00:25:59 v #31919 > > |> new_path_buf 00:25:59 v #31920 > > |> path_buf_join b 00:25:59 v #31921 > > |> path_buf_display 00:25:59 v #31922 > > |> sm'.format' 00:25:59 v #31923 > > |> sm'.from_std_string 00:25:59 v #31924 > > | TypeScript (Native) => fun a, b => 00:25:59 v #31925 > > a |> ts_path_join b 00:25:59 v #31926 > > | Fsharp (Native) => fun a, b => 00:25:59 v #31927 > > $'System.IO.Path.Combine (!a, !b)' 00:25:59 v #31928 > > | target => fun a, b => failwith $'$"file_system.(</>) / target: 00:25:59 v #31929 > > {!target} / a: {!a} / b: {!b}"' 00:26:00 v #31930 > > 00:26:00 v #31931 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:00 v #31932 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:00 v #31933 > > │ ### get_temp_path │ 00:26:00 v #31934 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:00 v #31935 > > 00:26:00 v #31936 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:00 v #31937 > > let get_temp_path () : string = 00:26:00 v #31938 > > run_target function 00:26:00 v #31939 > > | Rust (Contract) => fun () => null () 00:26:00 v #31940 > > | Rust (Native) => fun () => 00:26:00 v #31941 > > !\($'"std::env::temp_dir()"') 00:26:00 v #31942 > > |> path_buf_display 00:26:00 v #31943 > > |> sm'.format' 00:26:00 v #31944 > > |> sm'.from_std_string 00:26:00 v #31945 > > | Fsharp (Native) => fun () => 00:26:00 v #31946 > > $'System.IO.Path.GetTempPath' () 00:26:00 v #31947 > > | target => fun () => failwith $'$"file_system.get_temp_path / target: 00:26:00 v #31948 > > {!target}"' 00:26:00 v #31949 > > 00:26:00 v #31950 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:00 v #31951 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:00 v #31952 > > │ ### get_file_name │ 00:26:00 v #31953 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:00 v #31954 > > 00:26:00 v #31955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:00 v #31956 > > let get_file_name (path : string) : string = 00:26:00 v #31957 > > run_target_args' path function 00:26:00 v #31958 > > | Fsharp (Native) => fun path => 00:26:00 v #31959 > > path |> $'System.IO.Path.GetFileName' 00:26:00 v #31960 > > | Rust (Native) => fun path => 00:26:00 v #31961 > > path 00:26:00 v #31962 > > |> sm'.to_std_string 00:26:00 v #31963 > > |> new_path_buf 00:26:00 v #31964 > > |> path_buf_file_name 00:26:00 v #31965 > > |> optionm'.map' sm'.from_os_str_ref 00:26:00 v #31966 > > |> optionm'.unbox 00:26:00 v #31967 > > |> optionm'.default_value "" 00:26:00 v #31968 > > | Rust (Contract) => fun _ => null () 00:26:00 v #31969 > > | target => fun path => failwith $'$"file_system.get_file_name / target: 00:26:00 v #31970 > > {!target} / path: {!path}"' 00:26:01 v #31971 > > 00:26:01 v #31972 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:01 v #31973 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:01 v #31974 > > │ ### get_file_name_without_extension │ 00:26:01 v #31975 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:01 v #31976 > > 00:26:01 v #31977 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:01 v #31978 > > let get_file_name_without_extension (path : string) : string = 00:26:01 v #31979 > > run_target_args' path function 00:26:01 v #31980 > > | Rust (Contract) => fun _ => null () 00:26:01 v #31981 > > | Rust (Native) => fun path => 00:26:01 v #31982 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:26:01 v #31983 > > inl file_stem = !\\(path_buf, $'"$0.file_stem()"') 00:26:01 v #31984 > > match file_stem |> optionm'.map' sm'.from_os_str_ref |> 00:26:01 v #31985 > > optionm'.unbox with 00:26:01 v #31986 > > | Some file_stem => file_stem 00:26:01 v #31987 > > | None => "" 00:26:01 v #31988 > > | _ => fun path => 00:26:01 v #31989 > > path |> $'System.IO.Path.GetFileNameWithoutExtension' 00:26:01 v #31990 > > 00:26:01 v #31991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:01 v #31992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:01 v #31993 > > │ ### get_directory_name │ 00:26:01 v #31994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:01 v #31995 > > 00:26:01 v #31996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:01 v #31997 > > let get_directory_name (path : string) : string = 00:26:01 v #31998 > > run_target_args' path function 00:26:01 v #31999 > > | Fsharp _ => fun path => 00:26:01 v #32000 > > path |> $'System.IO.Path.GetDirectoryName' 00:26:01 v #32001 > > | Rust (Native) => fun path => 00:26:01 v #32002 > > path 00:26:01 v #32003 > > |> sm'.to_std_string 00:26:01 v #32004 > > |> new_path_buf 00:26:01 v #32005 > > |> path_buf_file_name 00:26:01 v #32006 > > |> optionm'.map' sm'.from_os_str_ref 00:26:01 v #32007 > > |> optionm'.unbox 00:26:01 v #32008 > > |> optionm'.default_value "" 00:26:01 v #32009 > > | _ => fun _ => null () 00:26:02 v #32010 > > 00:26:02 v #32011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:02 v #32012 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:02 v #32013 > > │ ### get_extension │ 00:26:02 v #32014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:02 v #32015 > > 00:26:02 v #32016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:02 v #32017 > > let get_extension (path : string) : string = 00:26:02 v #32018 > > run_target_args' path function 00:26:02 v #32019 > > | Rust (Contract) => fun _ => null () 00:26:02 v #32020 > > | Rust (Native) => fun path => 00:26:02 v #32021 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:26:02 v #32022 > > !\\(path_buf, $'"$0.extension()"') 00:26:02 v #32023 > > |> optionm'.unwrap 00:26:02 v #32024 > > |> sm'.from_os_str_ref 00:26:02 v #32025 > > | _ => fun path => 00:26:02 v #32026 > > path |> $'System.IO.Path.GetExtension' 00:26:02 v #32027 > > 00:26:02 v #32028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:02 v #32029 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:02 v #32030 > > │ ### directory_separator_char │ 00:26:02 v #32031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:02 v #32032 > > 00:26:02 v #32033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:02 v #32034 > > let directory_separator_char () : char = 00:26:02 v #32035 > > run_target function 00:26:02 v #32036 > > | Rust (Native) => fun () => !\($'"std::path::MAIN_SEPARATOR"') 00:26:02 v #32037 > > | _ => fun () => $'System.IO.Path.DirectorySeparatorChar' 00:26:02 v #32038 > > 00:26:02 v #32039 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:02 v #32040 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:02 v #32041 > > │ ### get_current_directory │ 00:26:02 v #32042 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:02 v #32043 > > 00:26:02 v #32044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:02 v #32045 > > let get_current_directory () : string = 00:26:02 v #32046 > > run_target function 00:26:02 v #32047 > > | Rust (Contract | Wasm) => fun () => null () 00:26:02 v #32048 > > | Rust (Native) => fun () => 00:26:02 v #32049 > > inl current_dir = !\($'"std::env::current_dir()"') : resultm.result' 00:26:02 v #32050 > > path_buf stream.io_error 00:26:02 v #32051 > > current_dir 00:26:02 v #32052 > > |> resultm.unwrap' 00:26:02 v #32053 > > |> path_buf_display 00:26:02 v #32054 > > |> sm'.format' 00:26:02 v #32055 > > |> sm'.from_std_string 00:26:02 v #32056 > > | Fsharp (Native) => fun () => 00:26:02 v #32057 > > $'System.IO.Directory.GetCurrentDirectory' () 00:26:02 v #32058 > > | _ => fun () => null () 00:26:03 v #32059 > > 00:26:03 v #32060 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:03 v #32061 > > //// test 00:26:03 v #32062 > > 00:26:03 v #32063 > > get_current_directory () 00:26:03 v #32064 > > |> _assert_contains (directory_separator_char ()) 00:26:04 v #32065 > > 00:26:04 v #32066 > > ╭─[ 735.86ms - stdout ]────────────────────────────────────────────────────────╮ 00:26:04 v #32067 > > │ __assert_contains / actual: "C:\home\git\polyglot\lib\spiral" / expected: │ 00:26:04 v #32068 > > │ '\\' │ 00:26:04 v #32069 > > │ │ 00:26:04 v #32070 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:04 v #32071 > > 00:26:04 v #32072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #32073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:04 v #32074 > > │ ### directory_exists │ 00:26:04 v #32075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:04 v #32076 > > 00:26:04 v #32077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #32078 > > let directory_exists (path : string) : bool = 00:26:04 v #32079 > > run_target_args' path function 00:26:04 v #32080 > > | Fsharp (Native) => fun path => 00:26:04 v #32081 > > path |> $'System.IO.Directory.Exists' 00:26:04 v #32082 > > | Rust (Native) => fun path => 00:26:04 v #32083 > > inl path = path |> sm'.to_std_string |> new_path_buf 00:26:04 v #32084 > > path_buf_exists path && path_buf_is_dir path 00:26:04 v #32085 > > | TypeScript (Native) => fun path => 00:26:04 v #32086 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:26:04 v #32087 > > bool" 00:26:04 v #32088 > > open typescript_operators 00:26:04 v #32089 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:26:04 v #32090 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:26:04 v #32091 > > | _ => fun _ => null () 00:26:04 v #32092 > > 00:26:04 v #32093 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #32094 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:04 v #32095 > > │ ### directory_get_parent │ 00:26:04 v #32096 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:04 v #32097 > > 00:26:04 v #32098 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #32099 > > let directory_get_parent (path : string) : optionm'.option' string = 00:26:04 v #32100 > > run_target_args' path function 00:26:04 v #32101 > > | Fsharp (Native) => fun path => 00:26:04 v #32102 > > inl parent : directory_info = path |> 00:26:04 v #32103 > > $'System.IO.Directory.GetParent' 00:26:04 v #32104 > > if parent =. null () 00:26:04 v #32105 > > then None 00:26:04 v #32106 > > else parent |> directory_info_full_name |> Some 00:26:04 v #32107 > > |> optionm'.box 00:26:04 v #32108 > > | Rust (Native) => fun path => 00:26:04 v #32109 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:26:04 v #32110 > > inl parent = path_buf |> path_buf_parent 00:26:04 v #32111 > > parent 00:26:04 v #32112 > > |> optionm'.map' (path_buf_display >> sm'.format' >> 00:26:04 v #32113 > > sm'.from_std_string) 00:26:04 v #32114 > > | TypeScript _ => fun path => 00:26:04 v #32115 > > open typescript_operators 00:26:04 v #32116 > > global "type IPathDirname = abstract dirname: path: string -> 00:26:04 v #32117 > > string" 00:26:04 v #32118 > > inl fs : $'IPathDirname' = typescript.import_all "path" 00:26:04 v #32119 > > !\\(path, $'"!fs.dirname($0)"') |> Some |> optionm'.box 00:26:04 v #32120 > > | _ => fun _ => null () 00:26:04 v #32121 > > 00:26:04 v #32122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #32123 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:04 v #32124 > > │ ### create_temp_path' │ 00:26:04 v #32125 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:04 v #32126 > > 00:26:04 v #32127 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #32128 > > let create_temp_path' (guid : guid.guid) = 00:26:04 v #32129 > > run_target_args' guid function 00:26:04 v #32130 > > | Rust (Contract) => fun _ => null () 00:26:04 v #32131 > > | _ => fun guid => 00:26:04 v #32132 > > get_temp_path () 00:26:04 v #32133 > > </> join "!create_temp_path_" 00:26:04 v #32134 > > </> (env.get_entry_assembly_name ()) 00:26:04 v #32135 > > </> (guid |> sm'.obj_to_string) 00:26:05 v #32136 > > 00:26:05 v #32137 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #32138 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:05 v #32139 > > │ ### create_temp_path │ 00:26:05 v #32140 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:05 v #32141 > > 00:26:05 v #32142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #32143 > > let create_temp_path () = 00:26:05 v #32144 > > run_target function 00:26:05 v #32145 > > | Rust (Contract) => fun () => null () 00:26:05 v #32146 > > | _ => fun () => 00:26:05 v #32147 > > date_time.now () 00:26:05 v #32148 > > |> date_time.new_guid_from_date_time 00:26:05 v #32149 > > |> create_temp_path' 00:26:05 v #32150 > > 00:26:05 v #32151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #32152 > > //// test 00:26:05 v #32153 > > ///! fsharp 00:26:05 v #32154 > > ///! rust -d chrono 00:26:05 v #32155 > > 00:26:05 v #32156 > > create_temp_path () 00:26:05 v #32157 > > |> _assert_contains (directory_separator_char ()) 00:26:18 v #32158 > > 00:26:18 v #32159 > > ╭─[ 12.33s - return value ]────────────────────────────────────────────────────╮ 00:26:18 v #32160 > > │ .rs output (rust -d chrono): │ 00:26:18 v #32161 > > │ __assert_contains / actual: │ 00:26:18 v #32162 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_5b10526 │ 00:26:18 v #32163 > > │ 06683d4df59f773443a30382a097fd108a65e7b6e6ed199c71069ed25\20241230-0136-1245 │ 00:26:18 v #32164 > > │ -6296-000000415d38" / expected: '\\' │ 00:26:18 v #32165 > > │ │ 00:26:18 v #32166 > > │ │ 00:26:18 v #32167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:18 v #32168 > > 00:26:18 v #32169 > > ╭─[ 12.33s - stdout ]──────────────────────────────────────────────────────────╮ 00:26:18 v #32170 > > │ .fsx output: │ 00:26:18 v #32171 > > │ __assert_contains / actual: │ 00:26:18 v #32172 > > │ "C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\20241230-0 │ 00:26:18 v #32173 > > │ 136-1283-8322-8003007cad31" / expected: '\\' │ 00:26:18 v #32174 > > │ │ 00:26:18 v #32175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:18 v #32176 > > 00:26:18 v #32177 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:18 v #32178 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:18 v #32179 > > │ ### file_copy │ 00:26:18 v #32180 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:18 v #32181 > > 00:26:18 v #32182 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:18 v #32183 > > let file_copy (new_path : string) (old_path : string) : () = 00:26:18 v #32184 > > run_target_args' (old_path, new_path) function 00:26:18 v #32185 > > | Fsharp (Native) => fun old_path, new_path => 00:26:18 v #32186 > > $'System.IO.File.Copy (!old_path, !new_path, true)' 00:26:18 v #32187 > > | Rust (Native) => fun old_path, new_path => 00:26:18 v #32188 > > inl result : _ _ stream.io_error = !\\((old_path, new_path), 00:26:18 v #32189 > > $'"std::fs::copy(&*$0, &*$1)"') 00:26:18 v #32190 > > match result |> resultm.map_error' sm'.format' |> resultm.unbox with 00:26:18 v #32191 > > | Ok (result : u64) => 00:26:18 v #32192 > > trace Debug 00:26:18 v #32193 > > fun () => "file_system.file_copy" 00:26:18 v #32194 > > fun () => { old_path new_path result } 00:26:18 v #32195 > > | Error error => 00:26:18 v #32196 > > trace Warning 00:26:18 v #32197 > > fun () => "file_system.file_copy" 00:26:18 v #32198 > > fun () => { old_path new_path error } 00:26:18 v #32199 > > | _ => fun _ => () 00:26:18 v #32200 > > 00:26:18 v #32201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:18 v #32202 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:18 v #32203 > > │ ### file_exists │ 00:26:18 v #32204 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:18 v #32205 > > 00:26:18 v #32206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:18 v #32207 > > let file_exists (path : string) : bool = 00:26:18 v #32208 > > run_target_args' path function 00:26:18 v #32209 > > | Fsharp (Native) => fun path => 00:26:18 v #32210 > > path |> $'System.IO.File.Exists' 00:26:18 v #32211 > > | Rust (Native) => fun path => 00:26:18 v #32212 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:26:18 v #32213 > > path_buf_exists path_buf && path_buf_is_file path_buf 00:26:18 v #32214 > > | TypeScript (Native) => fun path => 00:26:18 v #32215 > > open typescript_operators 00:26:18 v #32216 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:26:18 v #32217 > > bool" 00:26:18 v #32218 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:26:18 v #32219 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:26:18 v #32220 > > | _ => fun _ => null () 00:26:18 v #32221 > > 00:26:18 v #32222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:18 v #32223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:18 v #32224 > > │ ### directory_delete │ 00:26:18 v #32225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:18 v #32226 > > 00:26:18 v #32227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:18 v #32228 > > let directory_delete recursive (path : string) : () = 00:26:18 v #32229 > > run_target_args' (path, recursive) function 00:26:18 v #32230 > > | Fsharp (Native) => fun path, recursive => 00:26:18 v #32231 > > $'System.IO.Directory.Delete (!path, !recursive)' 00:26:18 v #32232 > > | Rust (Native) => fun path, recursive => 00:26:18 v #32233 > > if path |> directory_exists then 00:26:18 v #32234 > > if recursive 00:26:18 v #32235 > > then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"') 00:26:18 v #32236 > > else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"') 00:26:18 v #32237 > > | _ => fun _ => () 00:26:19 v #32238 > > 00:26:19 v #32239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:19 v #32240 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:19 v #32241 > > │ ### write_all_text │ 00:26:19 v #32242 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:19 v #32243 > > 00:26:19 v #32244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:19 v #32245 > > inl write_all_text (path : string) (text : string) : () = 00:26:19 v #32246 > > run_target_args' (path, text) function 00:26:19 v #32247 > > | Fsharp (Native) => fun path, text => 00:26:19 v #32248 > > $'System.IO.File.WriteAllText (!path, !text)' 00:26:19 v #32249 > > | Rust (Native) => fun path, text => 00:26:19 v #32250 > > !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"') 00:26:19 v #32251 > > | _ => fun _ => () 00:26:19 v #32252 > > 00:26:19 v #32253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:19 v #32254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:19 v #32255 > > │ ### read_all_bytes │ 00:26:19 v #32256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:19 v #32257 > > 00:26:19 v #32258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:19 v #32259 > > inl read_all_bytes (path : string) : am'.vec u8 = 00:26:19 v #32260 > > run_target function 00:26:19 v #32261 > > | Fsharp (Native) => fun () => 00:26:19 v #32262 > > $'!path |> System.IO.File.ReadAllBytes' 00:26:19 v #32263 > > |> am'.to_vec 00:26:19 v #32264 > > | Rust (Native) => fun () => 00:26:19 v #32265 > > path |> read |> resultm.unwrap' 00:26:19 v #32266 > > | _ => fun () => null () 00:26:20 v #32267 > > 00:26:20 v #32268 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:20 v #32269 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:20 v #32270 > > │ ### read_all_text │ 00:26:20 v #32271 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:20 v #32272 > > 00:26:20 v #32273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:20 v #32274 > > inl read_all_text (path : string) : string = 00:26:20 v #32275 > > run_target function 00:26:20 v #32276 > > | Fsharp (Native) => fun () => 00:26:20 v #32277 > > $'!path |> System.IO.File.ReadAllText' 00:26:20 v #32278 > > | Rust (Native) => fun () => 00:26:20 v #32279 > > path 00:26:20 v #32280 > > |> read_all_bytes 00:26:20 v #32281 > > |> sm'.string_from_utf8 00:26:20 v #32282 > > |> resultm.unwrap' 00:26:20 v #32283 > > |> sm'.from_std_string 00:26:20 v #32284 > > | _ => fun () => null () 00:26:20 v #32285 > > 00:26:20 v #32286 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:20 v #32287 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:20 v #32288 > > │ ### directory_create_symbolic_link │ 00:26:20 v #32289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:20 v #32290 > > 00:26:20 v #32291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:20 v #32292 > > inl directory_create_symbolic_link (target : string) (path : string) : () = 00:26:20 v #32293 > > run_target function 00:26:20 v #32294 > > | Fsharp (Native) => fun () => 00:26:20 v #32295 > > ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' : 00:26:20 v #32296 > > file_system_info) 00:26:20 v #32297 > > |> ignore 00:26:20 v #32298 > > | Rust (Native) => fun () => 00:26:20 v #32299 > > (!\\((target, path), $'"true; #[[cfg(windows)]] 00:26:20 v #32300 > > std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:26:20 v #32301 > > (!\\((target, path), $'"true; #[[cfg(unix)]] 00:26:20 v #32302 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:26:20 v #32303 > > | _ => fun () => () 00:26:21 v #32304 > > 00:26:21 v #32305 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:21 v #32306 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:21 v #32307 > > │ ### file_create_symbolic_link │ 00:26:21 v #32308 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:21 v #32309 > > 00:26:21 v #32310 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:21 v #32311 > > inl file_create_symbolic_link (target : string) (path : string) : () = 00:26:21 v #32312 > > run_target function 00:26:21 v #32313 > > | Fsharp (Native) => fun () => 00:26:21 v #32314 > > ($'System.IO.File.CreateSymbolicLink (!path, !target)' : 00:26:21 v #32315 > > file_system_info) 00:26:21 v #32316 > > |> ignore 00:26:21 v #32317 > > | Rust (Native) => fun () => 00:26:21 v #32318 > > (!\\((target, path), $'"true; #[[cfg(windows)]] 00:26:21 v #32319 > > std::os::windows::fs::symlink_file(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:26:21 v #32320 > > (!\\((target, path), $'"true; #[[cfg(unix)]] 00:26:21 v #32321 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:26:21 v #32322 > > | _ => fun () => () 00:26:21 v #32323 > > 00:26:21 v #32324 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:21 v #32325 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:21 v #32326 > > │ ### file_type │ 00:26:21 v #32327 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:21 v #32328 > > 00:26:21 v #32329 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:21 v #32330 > > union file_type = 00:26:21 v #32331 > > | File 00:26:21 v #32332 > > | Directory 00:26:22 v #32333 > > 00:26:22 v #32334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:22 v #32335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:22 v #32336 > > │ ### find_parent │ 00:26:22 v #32337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:22 v #32338 > > 00:26:22 v #32339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:22 v #32340 > > inl find_parent file_type name root_dir = 00:26:22 v #32341 > > inl is_file = file_type = File 00:26:22 v #32342 > > let rec loop dir = 00:26:22 v #32343 > > if dir </> name |> (if is_file then file_exists else directory_exists) 00:26:22 v #32344 > > then dir |> Ok 00:26:22 v #32345 > > else 00:26:22 v #32346 > > inl result = dir |> directory_get_parent 00:26:22 v #32347 > > match result |> optionm'.unbox with 00:26:22 v #32348 > > | Some parent => parent |> loop 00:26:22 v #32349 > > | None => ($'$"""No parent for {if !is_file then "file" else "dir"} 00:26:22 v #32350 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error 00:26:22 v #32351 > > loop root_dir 00:26:22 v #32352 > > 00:26:22 v #32353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:22 v #32354 > > //// test 00:26:22 v #32355 > > 00:26:22 v #32356 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]] 00:26:22 v #32357 > > |> am.map fun file_type, file => 00:26:22 v #32358 > > get_source_directory () 00:26:22 v #32359 > > |> find_parent file_type file 00:26:22 v #32360 > > |> resultm.get 00:26:22 v #32361 > > |> directory_info 00:26:22 v #32362 > > |> directory_info_name 00:26:22 v #32363 > > |> am'.distinct 00:26:22 v #32364 > > |> fun (a x : _ int _) => x 00:26:22 v #32365 > > |> _assert_eq' ;[[ "polyglot" ]] 00:26:23 v #32366 > > 00:26:23 v #32367 > > ╭─[ 764.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:26:23 v #32368 > > │ __assert_eq' / actual: [|"polyglot"|] / expected: [|"polyglot"|] │ 00:26:23 v #32369 > > │ │ 00:26:23 v #32370 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:23 v #32371 > > 00:26:23 v #32372 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:23 v #32373 > > //// test 00:26:23 v #32374 > > ///! rust 00:26:23 v #32375 > > 00:26:23 v #32376 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]] 00:26:23 v #32377 > > |> am.map fun file_type, file => 00:26:23 v #32378 > > fun () => 00:26:23 v #32379 > > join 00:26:23 v #32380 > > get_source_directory () 00:26:23 v #32381 > > |> find_parent file_type file 00:26:23 v #32382 > > |> resultm.get 00:26:23 v #32383 > > |> sm'.to_std_string 00:26:23 v #32384 > > |> new_path_buf 00:26:23 v #32385 > > |> path_buf_file_name 00:26:23 v #32386 > > |> optionm'.try' 00:26:23 v #32387 > > |> sm'.from_os_str_ref 00:26:23 v #32388 > > |> Some 00:26:23 v #32389 > > |> optionm'.box 00:26:23 v #32390 > > |> fun x => x () |> optionm'.unbox 00:26:23 v #32391 > > |> optionm'.default_value "" 00:26:23 v #32392 > > |> am'.distinct 00:26:23 v #32393 > > |> fun result => 00:26:23 v #32394 > > result |> am'.length |> _assert_eq 1i32 00:26:23 v #32395 > > index result 0i32 |> _assert_eq "polyglot" 00:26:35 v #32396 > > 00:26:35 v #32397 > > ╭─[ 12.53s - return value ]────────────────────────────────────────────────────╮ 00:26:35 v #32398 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:26:35 v #32399 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" │ 00:26:35 v #32400 > > │ │ 00:26:35 v #32401 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:35 v #32402 > > 00:26:35 v #32403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:35 v #32404 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:35 v #32405 > > │ ### get_workspace_root │ 00:26:35 v #32406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:35 v #32407 > > 00:26:35 v #32408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:35 v #32409 > > inl get_workspace_root () = 00:26:35 v #32410 > > (None, [[ get_source_directory; get_current_directory ]]) 00:26:35 v #32411 > > ||> listm.fold fun acc path => 00:26:35 v #32412 > > match acc with 00:26:35 v #32413 > > | Some path => Some path 00:26:35 v #32414 > > | None => 00:26:35 v #32415 > > path () 00:26:35 v #32416 > > |> find_parent Directory ("polyglot" </> ".devcontainer") 00:26:35 v #32417 > > |> function 00:26:35 v #32418 > > | Ok path => Some path 00:26:35 v #32419 > > | Error error => 00:26:35 v #32420 > > trace Warning 00:26:35 v #32421 > > fun () => "file_system.get_workspace_root" 00:26:35 v #32422 > > fun () => { error } 00:26:35 v #32423 > > None 00:26:35 v #32424 > > |> optionm.value 00:26:35 v #32425 > > |> fun root => root </> "polyglot" 00:26:36 v #32426 > > 00:26:36 v #32427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:36 v #32428 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:36 v #32429 > > │ ### get_workspace_root_external │ 00:26:36 v #32430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:36 v #32431 > > 00:26:36 v #32432 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:36 v #32433 > > inl get_workspace_root_external () = 00:26:36 v #32434 > > inl workspace_root = get_workspace_root () 00:26:36 v #32435 > > inl current_dir = get_current_directory () |> sm'.to_lower 00:26:36 v #32436 > > inl workspace_root = workspace_root |> sm'.to_lower 00:26:36 v #32437 > > if current_dir |> sm'.starts_with workspace_root 00:26:36 v #32438 > > then Error workspace_root 00:26:36 v #32439 > > else Ok workspace_root 00:26:36 v #32440 > > 00:26:36 v #32441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:36 v #32442 > > //// test 00:26:36 v #32443 > > 00:26:36 v #32444 > > get_workspace_root_external () 00:26:36 v #32445 > > |> resultm.unwrap_err 00:26:36 v #32446 > > |> get_file_name 00:26:36 v #32447 > > |> _assert_eq "polyglot" 00:26:37 v #32448 > > 00:26:37 v #32449 > > ╭─[ 929.22ms - stdout ]────────────────────────────────────────────────────────╮ 00:26:37 v #32450 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" │ 00:26:37 v #32451 > > │ │ 00:26:37 v #32452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:37 v #32453 > > 00:26:37 v #32454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:37 v #32455 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:37 v #32456 > > │ ### file_delete │ 00:26:37 v #32457 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:37 v #32458 > > 00:26:37 v #32459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:37 v #32460 > > inl file_delete (path : string) : () = 00:26:37 v #32461 > > run_target function 00:26:37 v #32462 > > | Fsharp (Native) => fun () => 00:26:37 v #32463 > > path |> $'System.IO.File.Delete' 00:26:37 v #32464 > > | Rust (Native) => fun () => 00:26:37 v #32465 > > !\\(path, $'"std::fs::remove_file(&*$0).unwrap()"') 00:26:37 v #32466 > > | _ => fun () => () 00:26:38 v #32467 > > 00:26:38 v #32468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:38 v #32469 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:38 v #32470 > > │ ### read_link │ 00:26:38 v #32471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:38 v #32472 > > 00:26:38 v #32473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:38 v #32474 > > let read_link (path : string) : resultm.result' path_buf stream.io_error = 00:26:38 v #32475 > > let run loop n error path' = 00:26:38 v #32476 > > inl name = path' |> get_file_name 00:26:38 v #32477 > > inl parent = path' |> directory_get_parent |> optionm'.unbox 00:26:38 v #32478 > > inl error'' = error |> sm'.format 00:26:38 v #32479 > > match parent with 00:26:38 v #32480 > > | _ when n >= 11 => 00:26:38 v #32481 > > ($'$"file_system.read_link / path: {!path} / n: {!n} / path\': 00:26:38 v #32482 > > {!path'} / name: {!name}"' : string) 00:26:38 v #32483 > > |> stream.new_io_error 00:26:38 v #32484 > > |> resultm.err 00:26:38 v #32485 > > | Some parent when path' <>. "" => 00:26:38 v #32486 > > match loop (n + 1) parent |> resultm.map_error' sm'.format |> 00:26:38 v #32487 > > resultm.unbox with 00:26:38 v #32488 > > | Ok parent' => 00:26:38 v #32489 > > (parent' |> path_buf_display |> convert) </> name 00:26:38 v #32490 > > |> sm'.to_std_string 00:26:38 v #32491 > > |> new_path_buf 00:26:38 v #32492 > > |> resultm.ok'' 00:26:38 v #32493 > > | Error error' => 00:26:38 v #32494 > > ($'$"file_system.read_link / error\': {!error'} / error: 00:26:38 v #32495 > > {!error''} / name: {!name}"' : string) 00:26:38 v #32496 > > |> stream.new_io_error 00:26:38 v #32497 > > |> resultm.err 00:26:38 v #32498 > > | _ => 00:26:38 v #32499 > > ($'$"file_system.read_link / run / The file or directory is not a 00:26:38 v #32500 > > reparse point. / path: {!path} / error: {!error''} / path\': {!path'} / name: 00:26:38 v #32501 > > {!name}"' : string) 00:26:38 v #32502 > > |> stream.new_io_error 00:26:38 v #32503 > > |> resultm.err 00:26:38 v #32504 > > 00:26:38 v #32505 > > run_target function 00:26:38 v #32506 > > | Rust _ => fun () => 00:26:38 v #32507 > > if path |> directory_exists 00:26:38 v #32508 > > then !\\(path, $'"std::fs::read_link(&*$0)"') 00:26:38 v #32509 > > else 00:26:38 v #32510 > > let rec loop n path' = 00:26:38 v #32511 > > run_target function 00:26:38 v #32512 > > | Rust _ => fun () => 00:26:38 v #32513 > > inl result : _ _ stream.io_error = !\\(path', 00:26:38 v #32514 > > $'"std::fs::read_link(&*$0)"') 00:26:38 v #32515 > > inl result = result |> resultm.map_error' sm'.format 00:26:38 v #32516 > > |> resultm.unbox 00:26:38 v #32517 > > match result with 00:26:38 v #32518 > > | Ok x => x |> resultm.ok'' 00:26:38 v #32519 > > | Error error => path' |> run loop n error 00:26:38 v #32520 > > | _ => fun () => null () 00:26:38 v #32521 > > path |> loop 0u8 00:26:38 v #32522 > > | TypeScript _ => fun () => null () 00:26:38 v #32523 > > | Fsharp _ => fun () => 00:26:38 v #32524 > > let rec loop n path' = 00:26:38 v #32525 > > inl result = 00:26:38 v #32526 > > path' 00:26:38 v #32527 > > |> directory_info 00:26:38 v #32528 > > |> directory_info_attributes 00:26:38 v #32529 > > |> file_attributes_has_flag (file_attributes_reparse_point 00:26:38 v #32530 > > ()) 00:26:38 v #32531 > > if result then 00:26:38 v #32532 > > path' 00:26:38 v #32533 > > |> file_info 00:26:38 v #32534 > > |> file_info_link_target 00:26:38 v #32535 > > |> unbox 00:26:38 v #32536 > > |> resultm.ok'' 00:26:38 v #32537 > > else 00:26:38 v #32538 > > inl error = ($'$"file_system.read_link / Fsharp / The file 00:26:38 v #32539 > > or directory is not a reparse point. / path: {!path} / result: {!result} 00:26:38 v #32540 > > path\': {!path'} / n: {!n}"' : string) 00:26:38 v #32541 > > inl error = error |> stream.new_io_error 00:26:38 v #32542 > > path' |> run loop n error 00:26:38 v #32543 > > path |> loop 0u8 00:26:38 v #32544 > > | _ => fun () => $'Unchecked.defaultof<_>' 00:26:38 v #32545 > > 00:26:38 v #32546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:38 v #32547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:38 v #32548 > > │ ### normalize_path │ 00:26:38 v #32549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:38 v #32550 > > 00:26:38 v #32551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:38 v #32552 > > let normalize_path (path : string) : string = 00:26:38 v #32553 > > if path = "" 00:26:38 v #32554 > > then "" 00:26:38 v #32555 > > else 00:26:38 v #32556 > > inl path = 00:26:38 v #32557 > > match path |> read_link |> resultm.ok' |> optionm'.unbox with 00:26:38 v #32558 > > | Some path_buf => 00:26:38 v #32559 > > inl result = 00:26:38 v #32560 > > path_buf 00:26:38 v #32561 > > |> path_buf_display 00:26:38 v #32562 > > |> convert 00:26:38 v #32563 > > if result = "" 00:26:38 v #32564 > > then path 00:26:38 v #32565 > > else result 00:26:38 v #32566 > > | None => path 00:26:38 v #32567 > > if path = "" 00:26:38 v #32568 > > then "" 00:26:38 v #32569 > > else 00:26:38 v #32570 > > inl path = path |> sm'.replace_regex @"^\\\\\?\\" "" 00:26:38 v #32571 > > $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |> 00:26:38 v #32572 > > sm'.replace "\\" "/" 00:26:39 v #32573 > > 00:26:39 v #32574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:39 v #32575 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:26:39 v #32576 > > │ ### get_full_path │ 00:26:39 v #32577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:39 v #32578 > > 00:26:39 v #32579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:39 v #32580 > > let get_full_path (path : string) : string = 00:26:39 v #32581 > > run_target_args (fun () => path) function 00:26:39 v #32582 > > | Fsharp (Native) => fun path => 00:26:39 v #32583 > > path |> $'System.IO.Path.GetFullPath' 00:26:39 v #32584 > > | Rust (Native) => fun path => 00:26:39 v #32585 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:26:39 v #32586 > > if path_buf |> path_buf_exists |> not then 00:26:39 v #32587 > > inl current_dir = get_current_directory () 00:26:39 v #32588 > > current_dir </> path 00:26:39 v #32589 > > |> normalize_path 00:26:39 v #32590 > > |> sm'.split "/" 00:26:39 v #32591 > > |> fun x => 00:26:39 v #32592 > > ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _))) 00:26:39 v #32593 > > ||> am.foldBack fun x level, acc => 00:26:39 v #32594 > > match x, level with 00:26:39 v #32595 > > | "..", _ => level + 1, acc 00:26:39 v #32596 > > | ".", _ => level, acc 00:26:39 v #32597 > > | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[ 00:26:39 v #32598 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc 00:26:39 v #32599 > > | _, 0 => 0, a ;[[ x ]] ++ acc 00:26:39 v #32600 > > | _ => level - 1, acc 00:26:39 v #32601 > > |> snd 00:26:39 v #32602 > > |> seq.of_array' 00:26:39 v #32603 > > |> sm'.concat (directory_separator_char () |> sm'.obj_to_string) 00:26:39 v #32604 > > else 00:26:39 v #32605 > > inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') : 00:26:39 v #32606 > > resultm.result' path_buf stream.io_error 00:26:39 v #32607 > > path 00:26:39 v #32608 > > |> resultm.unwrap' 00:26:39 v #32609 > > |> path_buf_display 00:26:39 v #32610 > > |> sm'.format' 00:26:39 v #32611 > > |> sm'.from_std_string 00:26:39 v #32612 > > | _ => fun _ => null () 00:26:39 v #32613 > > 00:26:39 v #32614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:39 v #32615 > > //// test 00:26:39 v #32616 > > 00:26:39 v #32617 > > "." 00:26:39 v #32618 > > |> get_full_path 00:26:39 v #32619 > > |> directory_info 00:26:39 v #32620 > > |> directory_info_name 00:26:39 v #32621 > > |> _assert_eq "spiral" 00:26:40 v #32622 > > 00:26:40 v #32623 > > ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮ 00:26:40 v #32624 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:26:40 v #32625 > > │ │ 00:26:40 v #32626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:40 v #32627 > > 00:26:40 v #32628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:40 v #32629 > > //// test 00:26:40 v #32630 > > 00:26:40 v #32631 > > "dir/.././._file" 00:26:40 v #32632 > > |> get_full_path 00:26:40 v #32633 > > |> _assert_eq (get_current_directory () </> "._file") 00:26:41 v #32634 > > 00:26:41 v #32635 > > ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮ 00:26:41 v #32636 > > │ __assert_eq / actual: "C:\home\git\polyglot\lib\spiral\._file" / expected: │ 00:26:41 v #32637 > > │ "C:\home\git\polyglot\lib\spiral\._file" │ 00:26:41 v #32638 > > │ │ 00:26:41 v #32639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:41 v #32640 > > 00:26:41 v #32641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:41 v #32642 > > //// test 00:26:41 v #32643 > > ///! rust -d regex 00:26:41 v #32644 > > 00:26:41 v #32645 > > "." 00:26:41 v #32646 > > |> get_full_path 00:26:41 v #32647 > > |> sm'.to_std_string 00:26:41 v #32648 > > |> new_path_buf 00:26:41 v #32649 > > |> path_buf_file_name 00:26:41 v #32650 > > |> optionm'.unwrap 00:26:41 v #32651 > > |> sm'.from_os_str_ref 00:26:41 v #32652 > > |> _assert_eq "spiral" 00:26:54 v #32653 > > 00:26:54 v #32654 > > ╭─[ 13.13s - return value ]────────────────────────────────────────────────────╮ 00:26:54 v #32655 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:26:54 v #32656 > > │ │ 00:26:54 v #32657 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:26:54 v #32658 > > 00:26:54 v #32659 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:54 v #32660 > > //// test 00:26:54 v #32661 > > ///! rust -d regex 00:26:54 v #32662 > > 00:26:54 v #32663 > > "dir/.././._file" 00:26:54 v #32664 > > |> get_full_path 00:26:54 v #32665 > > |> _assert_eq (get_current_directory () </> "._file") 00:27:08 v #32666 > > 00:27:08 v #32667 > > ╭─[ 13.49s - return value ]────────────────────────────────────────────────────╮ 00:27:08 v #32668 > > │ __assert_eq / actual: "C:\home\git\polyglot\lib\spiral\._file" / expected: │ 00:27:08 v #32669 > > │ "C:\home\git\polyglot\lib\spiral\._file" │ 00:27:08 v #32670 > > │ │ 00:27:08 v #32671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:08 v #32672 > > 00:27:08 v #32673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:08 v #32674 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:08 v #32675 > > │ ### standardize_path │ 00:27:08 v #32676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:08 v #32677 > > 00:27:08 v #32678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:08 v #32679 > > let standardize_path path = 00:27:08 v #32680 > > path |> get_full_path |> normalize_path 00:27:08 v #32681 > > 00:27:08 v #32682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:08 v #32683 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:08 v #32684 > > │ ### absolute_path │ 00:27:08 v #32685 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:08 v #32686 > > 00:27:08 v #32687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:08 v #32688 > > let absolute_path path = 00:27:08 v #32689 > > inl current_dir = get_current_directory () 00:27:08 v #32690 > > current_dir </> path |> standardize_path 00:27:09 v #32691 > > 00:27:09 v #32692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:09 v #32693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:09 v #32694 > > │ ### new_file_uri │ 00:27:09 v #32695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:09 v #32696 > > 00:27:09 v #32697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:09 v #32698 > > inl new_file_uri (path : string) : string = 00:27:09 v #32699 > > inl path = path |> sm'.trim_start [[ '/' ]] 00:27:09 v #32700 > > $'$"file:///{!path}"' 00:27:09 v #32701 > > 00:27:09 v #32702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:09 v #32703 > > //// test 00:27:09 v #32704 > > 00:27:09 v #32705 > > @"\\?\C:\test" 00:27:09 v #32706 > > |> normalize_path 00:27:09 v #32707 > > |> new_file_uri 00:27:09 v #32708 > > |> _assert_eq "file:///c:/test" 00:27:10 v #32709 > > 00:27:10 v #32710 > > ╭─[ 1.01s - stdout ]───────────────────────────────────────────────────────────╮ 00:27:10 v #32711 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test" │ 00:27:10 v #32712 > > │ │ 00:27:10 v #32713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:10 v #32714 > > 00:27:10 v #32715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:10 v #32716 > > //// test 00:27:10 v #32717 > > ///! rust -d regex 00:27:10 v #32718 > > 00:27:10 v #32719 > > @"\\?\C:\test" 00:27:10 v #32720 > > |> normalize_path 00:27:10 v #32721 > > |> new_file_uri 00:27:10 v #32722 > > |> _assert_eq "file:///c:/test" 00:27:23 v #32723 > > 00:27:23 v #32724 > > ╭─[ 12.93s - return value ]────────────────────────────────────────────────────╮ 00:27:23 v #32725 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test" │ 00:27:23 v #32726 > > │ │ 00:27:23 v #32727 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:23 v #32728 > > 00:27:23 v #32729 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:23 v #32730 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:23 v #32731 > > │ ## fsharp │ 00:27:23 v #32732 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:23 v #32733 > > 00:27:23 v #32734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:23 v #32735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:23 v #32736 > > │ ### file_exists_content_async │ 00:27:23 v #32737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:23 v #32738 > > 00:27:23 v #32739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:23 v #32740 > > let file_exists_content_async path content : async.async bool = 00:27:23 v #32741 > > run_target function 00:27:23 v #32742 > > | Fsharp (Native) => fun () => 00:27:23 v #32743 > > fun () => 00:27:23 v #32744 > > fix_condition 00:27:23 v #32745 > > fun () => path |> file_exists |> not 00:27:23 v #32746 > > fun () => false |> return 00:27:23 v #32747 > > fun () => 00:27:23 v #32748 > > inl existing_content = path |> read_all_text_async |> 00:27:23 v #32749 > > async.let' 00:27:23 v #32750 > > content = existing_content |> return 00:27:23 v #32751 > > |> async.new_async_unit 00:27:23 v #32752 > > | _ => fun () => null () 00:27:24 v #32753 > > 00:27:24 v #32754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:24 v #32755 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:24 v #32756 > > │ ### write_all_text_exists_async │ 00:27:24 v #32757 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:24 v #32758 > > 00:27:24 v #32759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:24 v #32760 > > let write_all_text_exists_async path contents = 00:27:24 v #32761 > > fun () => 00:27:24 v #32762 > > inl exists' = contents |> file_exists_content_async path |> async.let' 00:27:24 v #32763 > > if not exists' 00:27:24 v #32764 > > then contents |> write_all_text_async path |> async.do 00:27:24 v #32765 > > |> async.new_async 00:27:24 v #32766 > > 00:27:24 v #32767 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:24 v #32768 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:24 v #32769 > > │ ### delete_directory_async │ 00:27:24 v #32770 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:24 v #32771 > > 00:27:24 v #32772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:24 v #32773 > > let delete_directory_async path : _ i64 = 00:27:24 v #32774 > > let rec loop (retry : i64) = 00:27:24 v #32775 > > run_target function 00:27:24 v #32776 > > | Fsharp (Native) => fun () => 00:27:24 v #32777 > > fun () => 00:27:24 v #32778 > > try_unit 00:27:24 v #32779 > > fun () => 00:27:24 v #32780 > > path |> directory_delete true 00:27:24 v #32781 > > retry |> return 00:27:24 v #32782 > > fun ex => 00:27:24 v #32783 > > if retry % 100i64 = 0 then 00:27:24 v #32784 > > trace Debug 00:27:24 v #32785 > > fun () => 00:27:24 v #32786 > > "file_system.delete_directory_async" 00:27:24 v #32787 > > fun () => { 00:27:24 v #32788 > > ex = ex () |> sm'.format_exception 00:27:24 v #32789 > > path = path |> get_file_name 00:27:24 v #32790 > > } 00:27:24 v #32791 > > async.sleep 10i32 |> async.do 00:27:24 v #32792 > > loop (retry + 1) |> async.return_await 00:27:24 v #32793 > > |> async.new_async 00:27:24 v #32794 > > | _ => fun () => null () 00:27:24 v #32795 > > loop 0 00:27:24 v #32796 > > 00:27:24 v #32797 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:24 v #32798 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:24 v #32799 > > │ ### trace_file │ 00:27:24 v #32800 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:24 v #32801 > > 00:27:24 v #32802 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:24 v #32803 > > let rec trace_file text = 00:27:24 v #32804 > > run_target function 00:27:24 v #32805 > > | Fsharp (Native) => fun () => 00:27:24 v #32806 > > try_unit 00:27:24 v #32807 > > fun () => 00:27:24 v #32808 > > inl assembly_name = env.get_entry_assembly_name () 00:27:24 v #32809 > > inl guid = date_time.now () |> date_time.new_guid_from_date_time 00:27:24 v #32810 > > inl file_name = $'$"{!assembly_name}_{!guid}.txt"' 00:27:24 v #32811 > > 00:27:24 v #32812 > > inl workspace_root = get_workspace_root () 00:27:24 v #32813 > > inl trace_dir = workspace_root </> "target/trace" 00:27:24 v #32814 > > trace_dir |> create_directory |> ignore 00:27:24 v #32815 > > inl path = trace_dir </> file_name 00:27:24 v #32816 > > text |> write_all_text_async path |> async.run_synchronously 00:27:24 v #32817 > > fun ex => 00:27:24 v #32818 > > inl text = $'$"file_system.trace_file / ex: %A{!ex}"' 00:27:24 v #32819 > > text |> console.write_line 00:27:24 v #32820 > > text |> trace_file 00:27:24 v #32821 > > | _ => fun () => () 00:27:25 v #32822 > > 00:27:25 v #32823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:25 v #32824 > > //// test 00:27:25 v #32825 > > 00:27:25 v #32826 > > inl get_count dir : i64 = 00:27:25 v #32827 > > inl files = dir |> directory_get_files 00:27:25 v #32828 > > a files |> am'.length 00:27:25 v #32829 > > 00:27:25 v #32830 > > inl trace_dir = get_workspace_root () </> "target/trace" 00:27:25 v #32831 > > trace_dir |> create_directory |> ignore 00:27:25 v #32832 > > 00:27:25 v #32833 > > inl count = get_count trace_dir 00:27:25 v #32834 > > 00:27:25 v #32835 > > trace_file "test" 00:27:25 v #32836 > > 00:27:25 v #32837 > > get_count trace_dir 00:27:25 v #32838 > > |> _assert_eq (count + 1) 00:27:26 v #32839 > > 00:27:26 v #32840 > > ╭─[ 1.28s - stdout ]───────────────────────────────────────────────────────────╮ 00:27:26 v #32841 > > │ __assert_eq / actual: 83L / expected: 83L │ 00:27:26 v #32842 > > │ │ 00:27:26 v #32843 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:26 v #32844 > > 00:27:26 v #32845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:26 v #32846 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:26 v #32847 > > │ ### init_trace_file │ 00:27:26 v #32848 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:26 v #32849 > > 00:27:26 v #32850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:26 v #32851 > > inl init_trace_file enabled = 00:27:26 v #32852 > > inl state_trace_file = get_trace_state_or_init None .trace_file 00:27:26 v #32853 > > state_trace_file <- if enabled then trace_file else ignore 00:27:27 v #32854 > > 00:27:27 v #32855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:27 v #32856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:27 v #32857 > > │ ## file_system │ 00:27:27 v #32858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:27 v #32859 > > 00:27:27 v #32860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:27 v #32861 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:27 v #32862 > > │ ### create_dir │ 00:27:27 v #32863 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:27 v #32864 > > 00:27:27 v #32865 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:27 v #32866 > > let create_dir dir = 00:27:27 v #32867 > > run_target_args' dir function 00:27:27 v #32868 > > | Rust (Contract | Wasm) => fun _ => null () 00:27:27 v #32869 > > | Rust (Native) => fun dir => 00:27:27 v #32870 > > match dir |> create_dir_all |> resultm.map_error' sm'.format' |> 00:27:27 v #32871 > > resultm.unbox with 00:27:27 v #32872 > > | Ok () => 00:27:27 v #32873 > > trace Verbose 00:27:27 v #32874 > > fun () => "file_system.create_dir" 00:27:27 v #32875 > > fun () => { dir } 00:27:27 v #32876 > > | Error error => 00:27:27 v #32877 > > trace Critical 00:27:27 v #32878 > > fun () => "file_system.create_dir" 00:27:27 v #32879 > > fun () => { dir error } 00:27:27 v #32880 > > inl disposable : _ () = new_disposable fun () => 00:27:27 v #32881 > > dir 00:27:27 v #32882 > > |> directory_delete true 00:27:27 v #32883 > > disposable 00:27:27 v #32884 > > | _ => fun dir => 00:27:27 v #32885 > > inl directory_info = dir |> create_directory 00:27:27 v #32886 > > inl exists' = directory_info |> directory_info_exists 00:27:27 v #32887 > > if not exists' then 00:27:27 v #32888 > > inl creation_time = directory_info |> 00:27:27 v #32889 > > directory_info_creation_time 00:27:27 v #32890 > > inl result = ($'{| Exists = !exists'; CreationTime = 00:27:27 v #32891 > > !creation_time |}' : infer) |> sm'.format_debug 00:27:27 v #32892 > > trace Debug 00:27:27 v #32893 > > fun () => "file_system.create_dir" 00:27:27 v #32894 > > fun () => { dir result } 00:27:27 v #32895 > > inl disposable : _ () = new_disposable fun () => 00:27:27 v #32896 > > dir 00:27:27 v #32897 > > |> delete_directory_async 00:27:27 v #32898 > > |> async.ignore 00:27:27 v #32899 > > |> async.run_synchronously 00:27:27 v #32900 > > disposable 00:27:27 v #32901 > > 00:27:27 v #32902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:27 v #32903 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:27 v #32904 > > │ ### create_temp_dir │ 00:27:27 v #32905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:27 v #32906 > > 00:27:27 v #32907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:27 v #32908 > > inl create_temp_dir () = 00:27:27 v #32909 > > inl dir = create_temp_path () 00:27:27 v #32910 > > dir, dir |> create_dir 00:27:28 v #32911 > > 00:27:28 v #32912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:28 v #32913 > > //// test 00:27:28 v #32914 > > ///! fsharp 00:27:28 v #32915 > > ///! rust -d chrono 00:27:28 v #32916 > > 00:27:28 v #32917 > > inl path, disposable = create_temp_dir () 00:27:28 v #32918 > > join 00:27:28 v #32919 > > path 00:27:28 v #32920 > > |> directory_exists 00:27:28 v #32921 > > |> _assert_eq true 00:27:28 v #32922 > > disposable |> use |> ignore 00:27:28 v #32923 > > path 00:27:28 v #32924 > > |> directory_exists 00:27:28 v #32925 > > |> _assert_eq true 00:27:28 v #32926 > > path 00:27:28 v #32927 > > |> directory_exists 00:27:28 v #32928 > > |> _assert_eq false 00:27:43 v #32929 > > 00:27:43 v #32930 > > ╭─[ 15.76s - return value ]────────────────────────────────────────────────────╮ 00:27:43 v #32931 > > │ │ 00:27:43 v #32932 > > │ .rs output (rust -d chrono): │ 00:27:43 v #32933 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:27:43 v #32934 > > │ C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_builder_4b0033d7 │ 00:27:43 v #32935 > > │ 1412ee2d86301af494d8f0e963730c12c31301e5157496716a8405cf\20241230-0137-3795- │ 00:27:43 v #32936 > > │ 3954-000000bffe06 } │ 00:27:43 v #32937 > > │ __assert_eq / actual: true / expected: true │ 00:27:43 v #32938 > > │ __assert_eq / actual: true / expected: true │ 00:27:43 v #32939 > > │ __assert_eq / actual: false / expected: false │ 00:27:43 v #32940 > > │ │ 00:27:43 v #32941 > > │ │ 00:27:43 v #32942 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:43 v #32943 > > 00:27:43 v #32944 > > ╭─[ 15.76s - stdout ]──────────────────────────────────────────────────────────╮ 00:27:43 v #32945 > > │ .fsx output: │ 00:27:43 v #32946 > > │ __assert_eq / actual: true / expected: true │ 00:27:43 v #32947 > > │ __assert_eq / actual: true / expected: true │ 00:27:43 v #32948 > > │ __assert_eq / actual: false / expected: false │ 00:27:43 v #32949 > > │ │ 00:27:43 v #32950 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:43 v #32951 > > 00:27:43 v #32952 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:43 v #32953 > > //// test 00:27:43 v #32954 > > //// timeout=30000 00:27:43 v #32955 > > 00:27:43 v #32956 > > inl lock_directory path = 00:27:43 v #32957 > > fun () => 00:27:43 v #32958 > > trace Debug (fun () => "_1") id 00:27:43 v #32959 > > "0" |> write_all_text_async (path </> "test.txt") |> async.do 00:27:43 v #32960 > > file_stream 00:27:43 v #32961 > > (path </> "test.txt") 00:27:43 v #32962 > > ModeOpen 00:27:43 v #32963 > > AccessReadWrite 00:27:43 v #32964 > > ShareNone 00:27:43 v #32965 > > |> use 00:27:43 v #32966 > > |> ignore 00:27:43 v #32967 > > trace Debug (fun () => "_2") id 00:27:43 v #32968 > > async.sleep 2000 |> async.do 00:27:43 v #32969 > > trace Debug (fun () => "_3") id 00:27:43 v #32970 > > () |> return 00:27:43 v #32971 > > |> async.new_async 00:27:43 v #32972 > > 00:27:43 v #32973 > > inl temp_dir, disposable = create_temp_dir () 00:27:43 v #32974 > > disposable |> use |> ignore 00:27:43 v #32975 > > inl path = temp_dir </> "test" 00:27:43 v #32976 > > 00:27:43 v #32977 > > fun () => 00:27:43 v #32978 > > trace Debug (fun () => "1") id 00:27:43 v #32979 > > path |> create_directory |> ignore 00:27:43 v #32980 > > trace Debug (fun () => "2") id 00:27:43 v #32981 > > inl child = path |> lock_directory |> async.start_child |> async.let' 00:27:43 v #32982 > > trace Debug (fun () => "3") id 00:27:43 v #32983 > > async.sleep 60 |> async.do 00:27:43 v #32984 > > trace Debug (fun () => "4") id 00:27:43 v #32985 > > inl retries = path |> delete_directory_async |> async.let' 00:27:43 v #32986 > > trace Debug (fun () => "5") id 00:27:43 v #32987 > > child |> async.do 00:27:43 v #32988 > > trace Debug (fun () => "6") id 00:27:43 v #32989 > > retries |> return 00:27:43 v #32990 > > |> async.new_async_unit 00:27:43 v #32991 > > |> async.run_with_timeout 3000 00:27:43 v #32992 > > |> fun x => x : _ i64 00:27:43 v #32993 > > |> function 00:27:43 v #32994 > > | Some (retries : i64) => 00:27:43 v #32995 > > retries 00:27:43 v #32996 > > |> _assert_between 00:27:43 v #32997 > > (if platform.is_windows () then 50 else 0) 00:27:43 v #32998 > > (if platform.is_windows () then 180 else 0) 00:27:43 v #32999 > > 00:27:43 v #33000 > > true 00:27:43 v #33001 > > | _ => false 00:27:43 v #33002 > > |> _assert_eq true 00:27:50 v #33003 > > 00:27:50 v #33004 > > ╭─[ 6.87s - stdout ]───────────────────────────────────────────────────────────╮ 00:27:50 v #33005 > > │ 00:00:00 d #1 1 │ 00:27:50 v #33006 > > │ 00:00:00 d #2 2 │ 00:27:50 v #33007 > > │ 00:00:00 d #3 3 │ 00:27:50 v #33008 > > │ 00:00:00 d #4 _1 │ 00:27:50 v #33009 > > │ 00:00:00 d #5 _2 │ 00:27:50 v #33010 > > │ 00:00:00 d #6 4 │ 00:27:50 v #33011 > > │ 00:00:00 d #7 file_system.delete_directory_async / { ex = │ 00:27:50 v #33012 > > │ System.IO.IOException: The process cannot access the file 'test.txt' because │ 00:27:50 v #33013 > > │ it is being used by another process.; path = test } │ 00:27:50 v #33014 > > │ 00:00:01 d #8 file_system.delete_directory_async / { ex = │ 00:27:50 v #33015 > > │ System.IO.IOException: The process cannot access the file 'test.txt' because │ 00:27:50 v #33016 > > │ it is being used by another process.; path = test } │ 00:27:50 v #33017 > > │ 00:00:02 d #9 _3 │ 00:27:50 v #33018 > > │ 00:00:02 d #10 5 │ 00:27:50 v #33019 > > │ 00:00:02 d #11 6 │ 00:27:50 v #33020 > > │ __assert_between / actual: 124L / expected: struct (50L, 180L) │ 00:27:50 v #33021 > > │ __assert_eq / actual: true / expected: true │ 00:27:50 v #33022 > > │ │ 00:27:50 v #33023 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:50 v #33024 > > 00:27:50 v #33025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:50 v #33026 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:50 v #33027 > > │ ### create_temp_dir' │ 00:27:50 v #33028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:50 v #33029 > > 00:27:50 v #33030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:50 v #33031 > > inl create_temp_dir' (hash : string) = 00:27:50 v #33032 > > inl dir = hash |> guid.hash_guid |> create_temp_path' 00:27:50 v #33033 > > dir, dir |> create_dir 00:27:51 v #33034 > > 00:27:51 v #33035 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:51 v #33036 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:51 v #33037 > > │ ### link_directory │ 00:27:51 v #33038 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:51 v #33039 > > 00:27:51 v #33040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:51 v #33041 > > let link_directory target_path path = 00:27:51 v #33042 > > if target_path |> directory_exists |> not 00:27:51 v #33043 > > then target_path |> create_dir |> ignore 00:27:51 v #33044 > > 00:27:51 v #33045 > > inl lib_dir_path = path |> directory_get_parent |> optionm'.default_value' 00:27:51 v #33046 > > "" 00:27:51 v #33047 > > if lib_dir_path |> directory_exists |> not 00:27:51 v #33048 > > then lib_dir_path |> create_dir |> ignore 00:27:51 v #33049 > > 00:27:51 v #33050 > > if (path |> directory_exists) 00:27:51 v #33051 > > && (path |> read_link |> resultm.is_err) then 00:27:51 v #33052 > > path |> directory_delete true 00:27:51 v #33053 > > 00:27:51 v #33054 > > if path |> directory_exists |> not then 00:27:51 v #33055 > > path |> directory_create_symbolic_link target_path 00:27:51 v #33056 > > 00:27:51 v #33057 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:27:51 v #33058 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:27:51 v #33059 > > │ ### link_file │ 00:27:51 v #33060 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:27:51 v #33061 > > 00:27:51 v #33062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:51 v #33063 > > let link_file target_path path = 00:27:51 v #33064 > > if (path |> file_exists) 00:27:51 v #33065 > > && (path |> read_link |> resultm.is_err) then 00:27:51 v #33066 > > path |> file_delete 00:27:51 v #33067 > > 00:27:51 v #33068 > > if path |> file_exists |> not then 00:27:51 v #33069 > > path |> file_create_symbolic_link target_path 00:27:52 v #33070 > > 00:27:52 v #33071 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:27:52 v #33072 > > //// test 00:27:52 v #33073 > > ///! fsharp 00:27:52 v #33074 > > ///! rust -d sha2 regex 00:27:52 v #33075 > > 00:27:52 v #33076 > > inl file_name = "LICENSE" 00:27:52 v #33077 > > inl text = file_name 00:27:52 v #33078 > > 00:27:52 v #33079 > > inl test_hash = 00:27:52 v #33080 > > (file_name, text) 00:27:52 v #33081 > > |> sm'.format_debug 00:27:52 v #33082 > > |> crypto.hash_text 00:27:52 v #33083 > > 00:27:52 v #33084 > > inl workspace_root = get_workspace_root () 00:27:52 v #33085 > > inl test_dir = workspace_root </> "target/test/file_system" </> test_hash 00:27:52 v #33086 > > 00:27:52 v #33087 > > inl disposable = test_dir |> create_dir 00:27:52 v #33088 > > 00:27:52 v #33089 > > inl dir_path = test_dir </> "dir1" 00:27:52 v #33090 > > 00:27:52 v #33091 > > if dir_path |> directory_exists 00:27:52 v #33092 > > then dir_path |> directory_delete true 00:27:52 v #33093 > > 00:27:52 v #33094 > > dir_path |> create_dir |> ignore 00:27:52 v #33095 > > 00:27:52 v #33096 > > inl path = dir_path </> file_name 00:27:52 v #33097 > > text |> write_all_text path 00:27:52 v #33098 > > 00:27:52 v #33099 > > inl dir_link_path = test_dir </> "link1" 00:27:52 v #33100 > > 00:27:52 v #33101 > > dir_link_path |> link_directory dir_path 00:27:52 v #33102 > > 00:27:52 v #33103 > > inl link_path = dir_link_path </> file_name 00:27:52 v #33104 > > 00:27:52 v #33105 > > link_path 00:27:52 v #33106 > > |> read_all_text 00:27:52 v #33107 > > |> _assert_eq text 00:27:52 v #33108 > > 00:27:52 v #33109 > > dir_link_path 00:27:52 v #33110 > > |> read_link 00:27:52 v #33111 > > |> resultm.unwrap' 00:27:52 v #33112 > > |> path_buf_display 00:27:52 v #33113 > > |> convert 00:27:52 v #33114 > > |> _assert sm'.ends_with "dir1" 00:27:52 v #33115 > > 00:27:52 v #33116 > > link_path 00:27:52 v #33117 > > |> read_link 00:27:52 v #33118 > > |> resultm.unwrap' 00:27:52 v #33119 > > |> path_buf_display 00:27:52 v #33120 > > |> convert 00:27:52 v #33121 > > |> _assert sm'.ends_with "LICENSE" 00:27:52 v #33122 > > 00:27:52 v #33123 > > inl link_name = "LICENSE_" 00:27:52 v #33124 > > 00:27:52 v #33125 > > inl link_path = dir_path </> link_name 00:27:52 v #33126 > > 00:27:52 v #33127 > > link_path |> link_file path 00:27:52 v #33128 > > 00:27:52 v #33129 > > inl link_path' = dir_link_path </> link_name 00:27:52 v #33130 > > 00:27:52 v #33131 > > link_path' 00:27:52 v #33132 > > |> read_all_text 00:27:52 v #33133 > > |> _assert_eq text 00:27:52 v #33134 > > 00:27:52 v #33135 > > link_path 00:27:52 v #33136 > > |> read_link 00:27:52 v #33137 > > |> resultm.unwrap' 00:27:52 v #33138 > > |> path_buf_display 00:27:52 v #33139 > > |> convert 00:27:52 v #33140 > > |> _assert sm'.ends_with "LICENSE" 00:27:52 v #33141 > > 00:27:52 v #33142 > > link_path' 00:27:52 v #33143 > > |> read_link 00:27:52 v #33144 > > |> resultm.unwrap' 00:27:52 v #33145 > > |> path_buf_display 00:27:52 v #33146 > > |> convert 00:27:52 v #33147 > > |> _assert sm'.ends_with "LICENSE" 00:27:52 v #33148 > > 00:27:52 v #33149 > > disposable |> use |> ignore 00:28:08 v #33150 > > 00:28:08 v #33151 > > ╭─[ 16.58s - return value ]────────────────────────────────────────────────────╮ 00:28:08 v #33152 > > │ │ 00:28:08 v #33153 > > │ .rs output (rust -d sha2 regex): │ 00:28:08 v #33154 > > │ 00:00:00 v #1 file_system.create_dir / { dir = │ 00:28:08 v #33155 > > │ c:\home\git\polyglot\target/test/file_system\17e16cea7984b0e6f403259e33e4959 │ 00:28:08 v #33156 > > │ 2eda85aedd790ed910e9f3e619d9cd257 } │ 00:28:08 v #33157 > > │ 00:00:00 v #2 file_system.create_dir / { dir = │ 00:28:08 v #33158 > > │ c:\home\git\polyglot\target/test/file_system\17e16cea7984b0e6f403259e33e4959 │ 00:28:08 v #33159 > > │ 2eda85aedd790ed910e9f3e619d9cd257\dir1 } │ 00:28:08 v #33160 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" │ 00:28:08 v #33161 > > │ __assert / actual: "dir1" / expected: │ 00:28:08 v #33162 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │ 00:28:08 v #33163 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1" │ 00:28:08 v #33164 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33165 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │ 00:28:08 v #33166 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE" │ 00:28:08 v #33167 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" │ 00:28:08 v #33168 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33169 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │ 00:28:08 v #33170 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE" │ 00:28:08 v #33171 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33172 > > │ "c:\home\git\polyglot\target\test\file_system\17e16cea7984b0e6f403259e33e495 │ 00:28:08 v #33173 > > │ 92eda85aedd790ed910e9f3e619d9cd257\dir1\LICENSE" │ 00:28:08 v #33174 > > │ │ 00:28:08 v #33175 > > │ │ 00:28:08 v #33176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:08 v #33177 > > 00:28:08 v #33178 > > ╭─[ 16.58s - stdout ]──────────────────────────────────────────────────────────╮ 00:28:08 v #33179 > > │ .fsx output: │ 00:28:08 v #33180 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" │ 00:28:08 v #33181 > > │ __assert / actual: "dir1" / expected: │ 00:28:08 v #33182 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │ 00:28:08 v #33183 > > │ 7873a182ca04606835404e641a952871da\dir1" │ 00:28:08 v #33184 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33185 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │ 00:28:08 v #33186 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE" │ 00:28:08 v #33187 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" │ 00:28:08 v #33188 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33189 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │ 00:28:08 v #33190 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE" │ 00:28:08 v #33191 > > │ __assert / actual: "LICENSE" / expected: │ 00:28:08 v #33192 > > │ "C:\home\git\polyglot\target\test\file_system\8f260c25ec3f6eaaf0d0d1b67ed9c4 │ 00:28:08 v #33193 > > │ 7873a182ca04606835404e641a952871da\dir1\LICENSE" │ 00:28:08 v #33194 > > │ │ 00:28:08 v #33195 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:08 v #33196 > > 00:28:08 v #33197 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:08 v #33198 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:08 v #33199 > > │ ## rust │ 00:28:08 v #33200 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:08 v #33201 > > 00:28:08 v #33202 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:08 v #33203 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:08 v #33204 > > │ ### file_exists_content │ 00:28:08 v #33205 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:08 v #33206 > > 00:28:08 v #33207 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:08 v #33208 > > let file_exists_content path content : bool = 00:28:08 v #33209 > > run_target function 00:28:08 v #33210 > > | Rust (Native) => fun () => 00:28:08 v #33211 > > if path |> file_exists |> not 00:28:08 v #33212 > > then false 00:28:08 v #33213 > > else 00:28:08 v #33214 > > inl existing_content = path |> read_all_text 00:28:08 v #33215 > > content = existing_content 00:28:08 v #33216 > > | _ => fun () => null () 00:28:09 v #33217 > > 00:28:09 v #33218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:09 v #33219 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:09 v #33220 > > │ ### write_all_text_exists │ 00:28:09 v #33221 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:09 v #33222 > > 00:28:09 v #33223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:09 v #33224 > > let write_all_text_exists path contents = 00:28:09 v #33225 > > inl exists' = contents |> file_exists_content path 00:28:09 v #33226 > > if not exists' then 00:28:09 v #33227 > > inl dir = path |> directory_get_parent |> optionm'.default_value' "" 00:28:09 v #33228 > > if dir |> directory_exists |> not 00:28:09 v #33229 > > then dir |> create_dir |> ignore 00:28:09 v #33230 > > contents |> write_all_text path 00:28:09 v #33231 > > 00:28:09 v #33232 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:09 v #33233 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:09 v #33234 > > │ ## fsharp │ 00:28:09 v #33235 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:09 v #33236 > > 00:28:09 v #33237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:09 v #33238 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:09 v #33239 > > │ ### wait_for_file_access │ 00:28:09 v #33240 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:09 v #33241 > > 00:28:09 v #33242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:09 v #33243 > > let wait_for_file_access access path = 00:28:09 v #33244 > > let rec loop (retry : i64) : _ i64 = 00:28:09 v #33245 > > run_target function 00:28:09 v #33246 > > | Fsharp (Native) => fun () => 00:28:09 v #33247 > > inl file_access, file_share = 00:28:09 v #33248 > > access 00:28:09 v #33249 > > |> optionm'.default_value (AccessReadWrite, ShareRead) 00:28:09 v #33250 > > fun () => 00:28:09 v #33251 > > try_unit 00:28:09 v #33252 > > fun () => 00:28:09 v #33253 > > file_stream 00:28:09 v #33254 > > path 00:28:09 v #33255 > > ModeOpen 00:28:09 v #33256 > > file_access 00:28:09 v #33257 > > file_share 00:28:09 v #33258 > > |> use 00:28:09 v #33259 > > |> ignore 00:28:09 v #33260 > > retry |> return 00:28:09 v #33261 > > fun ex => 00:28:09 v #33262 > > if retry > 0 && retry % 100i64 = 0 then 00:28:09 v #33263 > > trace Debug 00:28:09 v #33264 > > fun () => "file_system.wait_for_file_access" 00:28:09 v #33265 > > fun () => { 00:28:09 v #33266 > > path = path |> get_file_name 00:28:09 v #33267 > > retry 00:28:09 v #33268 > > ex = ex () |> sm'.format_exception 00:28:09 v #33269 > > } 00:28:09 v #33270 > > async.sleep 10i32 |> async.do 00:28:09 v #33271 > > loop (retry + 1) |> async.return_await 00:28:09 v #33272 > > |> async.new_async 00:28:09 v #33273 > > | _ => fun () => null () 00:28:09 v #33274 > > loop 0 00:28:10 v #33275 > > 00:28:10 v #33276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:10 v #33277 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:10 v #33278 > > │ ### wait_for_file_access_read │ 00:28:10 v #33279 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:10 v #33280 > > 00:28:10 v #33281 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:10 v #33282 > > let wait_for_file_access_read path = 00:28:10 v #33283 > > path 00:28:10 v #33284 > > |> wait_for_file_access (Some ( 00:28:10 v #33285 > > AccessRead, 00:28:10 v #33286 > > ShareRead 00:28:10 v #33287 > > )) 00:28:10 v #33288 > > 00:28:10 v #33289 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:10 v #33290 > > //// test 00:28:10 v #33291 > > //// timeout=30000 00:28:10 v #33292 > > 00:28:10 v #33293 > > inl lock_file path = 00:28:10 v #33294 > > fun () => 00:28:10 v #33295 > > trace Debug (fun () => "_1") id 00:28:10 v #33296 > > inl stream : file_stream' = 00:28:10 v #33297 > > file_stream 00:28:10 v #33298 > > path 00:28:10 v #33299 > > ModeOpen 00:28:10 v #33300 > > AccessReadWrite 00:28:10 v #33301 > > ShareNone 00:28:10 v #33302 > > |> use 00:28:10 v #33303 > > trace Debug (fun () => "_2") id 00:28:10 v #33304 > > async.sleep 2000 |> async.do 00:28:10 v #33305 > > trace Debug (fun () => "_3") id 00:28:10 v #33306 > > ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore 00:28:10 v #33307 > > trace Debug (fun () => "_4") id 00:28:10 v #33308 > > $'!stream.WriteByte' 49u8 00:28:10 v #33309 > > trace Debug (fun () => "_5") id 00:28:10 v #33310 > > stream |> $'_.Flush()' 00:28:10 v #33311 > > trace Debug (fun () => "_6") id 00:28:10 v #33312 > > |> async.new_async 00:28:10 v #33313 > > 00:28:10 v #33314 > > inl file_name = "test.txt" 00:28:10 v #33315 > > inl text = "0" 00:28:10 v #33316 > > 00:28:10 v #33317 > > inl temp_dir, disposable = 00:28:10 v #33318 > > (file_name, text) 00:28:10 v #33319 > > |> sm'.format_debug 00:28:10 v #33320 > > |> crypto.hash_text 00:28:10 v #33321 > > |> create_temp_dir' 00:28:10 v #33322 > > disposable |> use |> ignore 00:28:10 v #33323 > > inl path = temp_dir </> file_name 00:28:10 v #33324 > > 00:28:10 v #33325 > > fun () => 00:28:10 v #33326 > > trace Debug (fun () => "1") id 00:28:10 v #33327 > > text |> write_all_text_async path |> async.do 00:28:10 v #33328 > > trace Debug (fun () => "2") id 00:28:10 v #33329 > > inl child = path |> lock_file |> async.start_child |> async.let' 00:28:10 v #33330 > > trace Debug (fun () => "3") id 00:28:10 v #33331 > > async.sleep 1 |> async.do 00:28:10 v #33332 > > trace Debug (fun () => "4") id 00:28:10 v #33333 > > inl retries = path |> wait_for_file_access None |> async.let' 00:28:10 v #33334 > > trace Debug (fun () => "5") id 00:28:10 v #33335 > > inl text = path |> read_all_text_async |> async.let' 00:28:10 v #33336 > > trace Debug (fun () => "6") id 00:28:10 v #33337 > > child |> async.do 00:28:10 v #33338 > > trace Debug (fun () => "7") id 00:28:10 v #33339 > > (retries, text) |> return 00:28:10 v #33340 > > |> async.new_async_unit 00:28:10 v #33341 > > |> async.run_with_timeout 3000 00:28:10 v #33342 > > |> function 00:28:10 v #33343 > > | Some ((retries : i64), text) => 00:28:10 v #33344 > > retries 00:28:10 v #33345 > > |> _assert_between 00:28:10 v #33346 > > (if platform.is_windows () then 50 else 100) 00:28:10 v #33347 > > (if platform.is_windows () then 180 else 200) 00:28:10 v #33348 > > 00:28:10 v #33349 > > text |> _assert_eq (join "1") 00:28:10 v #33350 > > 00:28:10 v #33351 > > true 00:28:10 v #33352 > > | _ => false 00:28:10 v #33353 > > |> _assert_eq true 00:28:20 v #33354 > > 00:28:20 v #33355 > > ╭─[ 9.75s - stdout ]───────────────────────────────────────────────────────────╮ 00:28:20 v #33356 > > │ 00:00:00 d #1 1 │ 00:28:20 v #33357 > > │ 00:00:00 d #2 2 │ 00:28:20 v #33358 > > │ 00:00:00 d #3 3 │ 00:28:20 v #33359 > > │ 00:00:00 d #4 _1 │ 00:28:20 v #33360 > > │ 00:00:00 d #5 _2 │ 00:28:20 v #33361 > > │ 00:00:00 d #6 4 │ 00:28:20 v #33362 > > │ 00:00:01 d #7 file_system.wait_for_file_access / { path = test.txt; │ 00:28:20 v #33363 > > │ retry = 100; ex = System.IO.IOException: The process cannot access the file │ 00:28:20 v #33364 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │ 00:28:20 v #33365 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another │ 00:28:20 v #33366 > > │ process. } │ 00:28:20 v #33367 > > │ 00:00:01 d #8 _3 │ 00:28:20 v #33368 > > │ 00:00:01 d #9 _4 │ 00:28:20 v #33369 > > │ 00:00:02 d #10 _5 │ 00:28:20 v #33370 > > │ 00:00:02 d #11 _6 │ 00:28:20 v #33371 > > │ 00:00:02 d #12 5 │ 00:28:20 v #33372 > > │ 00:00:02 d #13 6 │ 00:28:20 v #33373 > > │ 00:00:02 d #14 7 │ 00:28:20 v #33374 > > │ __assert_between / actual: 128L / expected: struct (50L, 180L) │ 00:28:20 v #33375 > > │ __assert_eq / actual: "1" / expected: "1" │ 00:28:20 v #33376 > > │ __assert_eq / actual: true / expected: true │ 00:28:20 v #33377 > > │ │ 00:28:20 v #33378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:20 v #33379 > > 00:28:20 v #33380 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:20 v #33381 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:20 v #33382 > > │ ### read_all_text_retry_async │ 00:28:20 v #33383 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:20 v #33384 > > 00:28:20 v #33385 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:20 v #33386 > > let read_all_text_retry_async full_path : async.async (optionm'.option' string) 00:28:20 v #33387 > > = 00:28:20 v #33388 > > let rec loop (retry : i64) = 00:28:20 v #33389 > > fun () => 00:28:20 v #33390 > > try_unit 00:28:20 v #33391 > > fun () => 00:28:20 v #33392 > > if retry > 0 00:28:20 v #33393 > > then 00:28:20 v #33394 > > full_path 00:28:20 v #33395 > > |> wait_for_file_access_read 00:28:20 v #33396 > > |> async.run_with_timeout_async 1000 00:28:20 v #33397 > > |> async.ignore 00:28:20 v #33398 > > |> async.do 00:28:20 v #33399 > > full_path |> read_all_text_async |> async.map (Some >> 00:28:20 v #33400 > > optionm'.box) |> async.return_await 00:28:20 v #33401 > > fun ex => 00:28:20 v #33402 > > fix_condition 00:28:20 v #33403 > > fun () => retry <> 0 00:28:20 v #33404 > > fun () => 00:28:20 v #33405 > > trace Debug 00:28:20 v #33406 > > fun () => 00:28:20 v #33407 > > "file_system.read_all_text_retry_async" 00:28:20 v #33408 > > fun () => { 00:28:20 v #33409 > > retry 00:28:20 v #33410 > > ex = ex () |> sm'.format_exception 00:28:20 v #33411 > > } 00:28:20 v #33412 > > (None : _ string) |> optionm'.box |> return 00:28:20 v #33413 > > fun () => 00:28:20 v #33414 > > loop (retry + 1) |> async.return_await 00:28:20 v #33415 > > |> async.new_async 00:28:20 v #33416 > > loop 0 00:28:21 v #33417 > > 00:28:21 v #33418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:21 v #33419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:21 v #33420 > > │ ### move_file_async │ 00:28:21 v #33421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:21 v #33422 > > 00:28:21 v #33423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:21 v #33424 > > let move_file_async new_path old_path : _ i64 = 00:28:21 v #33425 > > let rec loop (retry : i64) = 00:28:21 v #33426 > > run_target function 00:28:21 v #33427 > > | Fsharp (Native) => fun () => 00:28:21 v #33428 > > fun () => 00:28:21 v #33429 > > try_unit 00:28:21 v #33430 > > fun () => 00:28:21 v #33431 > > old_path |> file_move new_path 00:28:21 v #33432 > > return retry 00:28:21 v #33433 > > fun ex => 00:28:21 v #33434 > > if retry % 100 = 0 then 00:28:21 v #33435 > > trace Warning 00:28:21 v #33436 > > fun () => "move_file_async" 00:28:21 v #33437 > > fun () => { 00:28:21 v #33438 > > old_path = old_path |> get_file_name 00:28:21 v #33439 > > new_path = new_path |> get_file_name 00:28:21 v #33440 > > ex = ex () |> sm'.format_exception 00:28:21 v #33441 > > } 00:28:21 v #33442 > > async.sleep 10 |> async.do 00:28:21 v #33443 > > loop (retry + 1) |> async.return_await 00:28:21 v #33444 > > |> async.new_async_unit 00:28:21 v #33445 > > | _ => fun () => null () 00:28:21 v #33446 > > loop 0 00:28:21 v #33447 > > 00:28:21 v #33448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:21 v #33449 > > //// test 00:28:21 v #33450 > > //// timeout=30000 00:28:21 v #33451 > > 00:28:21 v #33452 > > inl lock_file path = 00:28:21 v #33453 > > fun () => 00:28:21 v #33454 > > trace Debug (fun () => "_1") id 00:28:21 v #33455 > > file_stream 00:28:21 v #33456 > > path 00:28:21 v #33457 > > ModeOpen 00:28:21 v #33458 > > AccessReadWrite 00:28:21 v #33459 > > ShareNone 00:28:21 v #33460 > > |> use 00:28:21 v #33461 > > |> ignore 00:28:21 v #33462 > > trace Debug (fun () => "_2") id 00:28:21 v #33463 > > async.sleep 2000 |> async.do 00:28:21 v #33464 > > trace Debug (fun () => "_3") id 00:28:21 v #33465 > > |> async.new_async 00:28:21 v #33466 > > 00:28:21 v #33467 > > fun () => 00:28:21 v #33468 > > inl file_name = "test.txt" 00:28:21 v #33469 > > inl text = "0" 00:28:21 v #33470 > > 00:28:21 v #33471 > > inl temp_dir, disposable = 00:28:21 v #33472 > > (file_name, text) 00:28:21 v #33473 > > |> sm'.format_debug 00:28:21 v #33474 > > |> crypto.hash_text 00:28:21 v #33475 > > |> create_temp_dir' 00:28:21 v #33476 > > disposable |> use |> ignore 00:28:21 v #33477 > > let path = temp_dir </> file_name 00:28:21 v #33478 > > let new_path = temp_dir </> "test2.txt" 00:28:21 v #33479 > > 00:28:21 v #33480 > > trace Debug (fun () => "1") id 00:28:21 v #33481 > > text |> write_all_text_async path |> async.do 00:28:21 v #33482 > > trace Debug (fun () => "2") id 00:28:21 v #33483 > > inl child = lock_file path |> async.start_child |> async.let' 00:28:21 v #33484 > > trace Debug (fun () => "3") id 00:28:21 v #33485 > > async.sleep 1 |> async.do 00:28:21 v #33486 > > trace Debug (fun () => "4") id 00:28:21 v #33487 > > inl retries1 = path |> move_file_async new_path |> async.let' 00:28:21 v #33488 > > trace Debug (fun () => "5") id 00:28:21 v #33489 > > inl retries2 = new_path |> wait_for_file_access None |> async.let' 00:28:21 v #33490 > > trace Debug (fun () => "6") id 00:28:21 v #33491 > > inl text = new_path |> read_all_text_async |> async.let' 00:28:21 v #33492 > > trace Debug (fun () => "7") id 00:28:21 v #33493 > > child |> async.do 00:28:21 v #33494 > > trace Debug (fun () => "8") id 00:28:21 v #33495 > > (retries1, retries2, text) |> return 00:28:21 v #33496 > > |> async.new_async_unit 00:28:21 v #33497 > > |> async.run_with_timeout 3000 00:28:21 v #33498 > > |> function 00:28:21 v #33499 > > | Some (retries1, retries2, text) => 00:28:21 v #33500 > > retries1 00:28:21 v #33501 > > |> _assert_between 00:28:21 v #33502 > > (if platform.is_windows () then 50i64 else 0) 00:28:21 v #33503 > > (if platform.is_windows () then 200 else 0) 00:28:21 v #33504 > > 00:28:21 v #33505 > > retries2 00:28:21 v #33506 > > |> _assert_between 00:28:21 v #33507 > > (if platform.is_windows () then 0i64 else 100) 00:28:21 v #33508 > > (if platform.is_windows () then 0 else 200) 00:28:21 v #33509 > > 00:28:21 v #33510 > > text |> _assert_eq (join "0") 00:28:21 v #33511 > > 00:28:21 v #33512 > > true 00:28:21 v #33513 > > | _ => false 00:28:21 v #33514 > > |> _assert_eq true 00:28:32 v #33515 > > 00:28:32 v #33516 > > ╭─[ 11.44s - stdout ]──────────────────────────────────────────────────────────╮ 00:28:32 v #33517 > > │ 00:00:00 d #1 1 │ 00:28:32 v #33518 > > │ 00:00:00 d #2 2 │ 00:28:32 v #33519 > > │ 00:00:00 d #3 3 │ 00:28:32 v #33520 > > │ 00:00:00 d #4 _1 │ 00:28:32 v #33521 > > │ 00:00:00 d #5 _2 │ 00:28:32 v #33522 > > │ 00:00:00 d #6 4 │ 00:28:32 v #33523 > > │ 00:00:00 w #7 move_file_async / { old_path = test.txt; new_path = │ 00:28:32 v #33524 > > │ test2.txt; ex = System.IO.IOException: The process cannot access the file │ 00:28:32 v #33525 > > │ because it is being used by another process. } │ 00:28:32 v #33526 > > │ 00:00:01 w #8 move_file_async / { old_path = test.txt; new_path = │ 00:28:32 v #33527 > > │ test2.txt; ex = System.IO.IOException: The process cannot access the file │ 00:28:32 v #33528 > > │ because it is being used by another process. } │ 00:28:32 v #33529 > > │ 00:00:02 d #9 _3 │ 00:28:32 v #33530 > > │ 00:00:02 d #10 5 │ 00:28:32 v #33531 > > │ 00:00:02 d #11 6 │ 00:28:32 v #33532 > > │ 00:00:02 d #12 7 │ 00:28:32 v #33533 > > │ 00:00:02 d #13 8 │ 00:28:32 v #33534 > > │ __assert_between / actual: 128L / expected: struct (50L, 200L) │ 00:28:32 v #33535 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) │ 00:28:32 v #33536 > > │ __assert_eq / actual: "0" / expected: "0" │ 00:28:32 v #33537 > > │ __assert_eq / actual: true / expected: true │ 00:28:32 v #33538 > > │ │ 00:28:32 v #33539 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:32 v #33540 > > 00:28:32 v #33541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:32 v #33542 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:32 v #33543 > > │ ### delete_file_async │ 00:28:32 v #33544 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:32 v #33545 > > 00:28:32 v #33546 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:32 v #33547 > > let delete_file_async path : _ i64 = 00:28:32 v #33548 > > let rec loop (retry : i64) = 00:28:32 v #33549 > > run_target function 00:28:32 v #33550 > > | Fsharp (Native) => fun () => 00:28:32 v #33551 > > fun () => 00:28:32 v #33552 > > try_unit 00:28:32 v #33553 > > fun () => 00:28:32 v #33554 > > path |> file_delete 00:28:32 v #33555 > > return retry 00:28:32 v #33556 > > fun ex => 00:28:32 v #33557 > > if retry % 100 = 0 then 00:28:32 v #33558 > > trace Warning 00:28:32 v #33559 > > fun () => "delete_file_async" 00:28:32 v #33560 > > fun () => { 00:28:32 v #33561 > > path = path |> get_file_name 00:28:32 v #33562 > > ex = ex () |> sm'.format_exception 00:28:32 v #33563 > > } 00:28:32 v #33564 > > async.sleep 10 |> async.do 00:28:32 v #33565 > > loop (retry + 1) |> async.return_await 00:28:32 v #33566 > > |> async.new_async 00:28:32 v #33567 > > | _ => fun () => null () 00:28:32 v #33568 > > loop 0 00:28:33 v #33569 > > 00:28:33 v #33570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:33 v #33571 > > //// test 00:28:33 v #33572 > > //// timeout=30000 00:28:33 v #33573 > > 00:28:33 v #33574 > > inl lock_file path = 00:28:33 v #33575 > > fun () => 00:28:33 v #33576 > > trace Debug (fun () => "_1") id 00:28:33 v #33577 > > file_stream 00:28:33 v #33578 > > path 00:28:33 v #33579 > > ModeOpen 00:28:33 v #33580 > > AccessReadWrite 00:28:33 v #33581 > > ShareNone 00:28:33 v #33582 > > |> use 00:28:33 v #33583 > > |> ignore 00:28:33 v #33584 > > trace Debug (fun () => "_2") id 00:28:33 v #33585 > > async.sleep 2000 |> async.do 00:28:33 v #33586 > > trace Debug (fun () => "_3") id 00:28:33 v #33587 > > |> async.new_async 00:28:33 v #33588 > > 00:28:33 v #33589 > > fun () => 00:28:33 v #33590 > > inl file_name = "test.txt" 00:28:33 v #33591 > > inl text = "0" 00:28:33 v #33592 > > 00:28:33 v #33593 > > inl temp_dir, disposable = 00:28:33 v #33594 > > (file_name, text) 00:28:33 v #33595 > > |> sm'.format_debug 00:28:33 v #33596 > > |> crypto.hash_text 00:28:33 v #33597 > > |> create_temp_dir' 00:28:33 v #33598 > > disposable |> use |> ignore 00:28:33 v #33599 > > inl path = temp_dir </> file_name 00:28:33 v #33600 > > 00:28:33 v #33601 > > trace Debug (fun () => "1") id 00:28:33 v #33602 > > text |> write_all_text_async path |> async.do 00:28:33 v #33603 > > trace Debug (fun () => "2") id 00:28:33 v #33604 > > inl child = lock_file path |> async.start_child |> async.let' 00:28:33 v #33605 > > trace Debug (fun () => "3") id 00:28:33 v #33606 > > async.sleep 1 |> async.do 00:28:33 v #33607 > > trace Debug (fun () => "4") id 00:28:33 v #33608 > > inl retries = delete_file_async path |> async.let' 00:28:33 v #33609 > > trace Debug (fun () => "5") id 00:28:33 v #33610 > > child |> async.do 00:28:33 v #33611 > > trace Debug (fun () => "6") id 00:28:33 v #33612 > > return retries 00:28:33 v #33613 > > |> async.new_async_unit 00:28:33 v #33614 > > |> async.run_with_timeout 3000 00:28:33 v #33615 > > |> function 00:28:33 v #33616 > > | Some (retries : i64) => 00:28:33 v #33617 > > retries 00:28:33 v #33618 > > |> _assert_between 00:28:33 v #33619 > > (if platform.is_windows () then 50 else 0) 00:28:33 v #33620 > > (if platform.is_windows () then 180 else 0) 00:28:33 v #33621 > > 00:28:33 v #33622 > > true 00:28:33 v #33623 > > | _ => false 00:28:33 v #33624 > > |> _assert_eq true 00:28:42 v #33625 > > 00:28:42 v #33626 > > ╭─[ 9.38s - stdout ]───────────────────────────────────────────────────────────╮ 00:28:42 v #33627 > > │ 00:00:00 d #1 1 │ 00:28:42 v #33628 > > │ 00:00:00 d #2 2 │ 00:28:42 v #33629 > > │ 00:00:00 d #3 3 │ 00:28:42 v #33630 > > │ 00:00:00 d #4 _1 │ 00:28:42 v #33631 > > │ 00:00:00 d #5 _2 │ 00:28:42 v #33632 > > │ 00:00:00 d #6 4 │ 00:28:42 v #33633 > > │ 00:00:00 w #7 delete_file_async / { path = test.txt; ex = │ 00:28:42 v #33634 > > │ System.IO.IOException: The process cannot access the file │ 00:28:42 v #33635 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │ 00:28:42 v #33636 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another │ 00:28:42 v #33637 > > │ process. } │ 00:28:42 v #33638 > > │ 00:00:01 w #8 delete_file_async / { path = test.txt; ex = │ 00:28:42 v #33639 > > │ System.IO.IOException: The process cannot access the file │ 00:28:42 v #33640 > > │ 'C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\dotnet-repl\613830ed-0 │ 00:28:42 v #33641 > > │ 16e-d959-8d21-02dc1c63c252\test.txt' because it is being used by another │ 00:28:42 v #33642 > > │ process. } │ 00:28:42 v #33643 > > │ 00:00:01 d #9 _3 │ 00:28:42 v #33644 > > │ 00:00:02 d #10 5 │ 00:28:42 v #33645 > > │ 00:00:02 d #11 6 │ 00:28:42 v #33646 > > │ __assert_between / actual: 128L / expected: struct (50L, 180L) │ 00:28:42 v #33647 > > │ __assert_eq / actual: true / expected: true │ 00:28:42 v #33648 > > │ │ 00:28:42 v #33649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:42 v #33650 > > 00:28:42 v #33651 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:42 v #33652 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:42 v #33653 > > │ ## main │ 00:28:42 v #33654 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:28:42 v #33655 > > 00:28:42 v #33656 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:28:42 v #33657 > > inl main () = 00:28:42 v #33658 > > init_trace_state None 00:28:42 v #33659 > > $'let delete_directory_async x = !delete_directory_async x' : () 00:28:42 v #33660 > > $'let wait_for_file_access x = !wait_for_file_access x' : () 00:28:42 v #33661 > > $'let wait_for_file_access_read x = !wait_for_file_access_read x' : () 00:28:42 v #33662 > > $'let read_all_text_async x = !read_all_text_async x' : () 00:28:42 v #33663 > > $'let file_exists_content x = !file_exists_content x' : () 00:28:42 v #33664 > > $'let write_all_text_async x = !write_all_text_async x' : () 00:28:42 v #33665 > > $'let write_all_text_exists x = !write_all_text_exists_async x' : () 00:28:42 v #33666 > > $'let delete_file_async x = !delete_file_async x' : () 00:28:42 v #33667 > > $'let move_file_async x = !move_file_async x' : () 00:28:42 v #33668 > > $'let read_all_text_retry_async x = !read_all_text_retry_async x' : () 00:28:42 v #33669 > > $'let create_temp_path () = !create_temp_path ()' : () 00:28:42 v #33670 > > $'let create_temp_dir () = !create_temp_dir ()' : () 00:28:42 v #33671 > > $'let create_temp_dir\' x = !create_temp_dir' x' : () 00:28:42 v #33672 > > $'let get_source_directory () = !get_source_directory ()' : () 00:28:42 v #33673 > > $'let normalize_path x = !normalize_path x' : () 00:28:42 v #33674 > > $'let new_file_uri x = !new_file_uri x' : () 00:28:42 v #33675 > > $'let get_workspace_root () = !get_workspace_root ()' : () 00:28:42 v #33676 > > $'let trace_file x = !trace_file x' : () 00:28:42 v #33677 > > $'let init_trace_file x = !init_trace_file x' : () 00:28:42 v #33678 > > $'let link_directory x = !link_directory x' : () 00:28:42 v #33679 > > inl combine x = (</>) x 00:28:42 v #33680 > > $'let (</>) x = !combine x' : () 00:28:53 v #33681 > 00:03:24 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 116058 } 00:28:53 v #33682 > 00:03:24 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:28:54 v #33683 > 00:03:26 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/file_system.dib.ipynb to html 00:28:54 v #33684 > 00:03:26 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:28:54 v #33685 > 00:03:26 v #7 ! validate(nb) 00:28:55 v #33686 > 00:03:26 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:28:55 v #33687 > 00:03:26 v #9 ! return _pygments_highlight( 00:28:57 v #33688 > 00:03:28 v #10 ! [NbConvertApp] Writing 631092 bytes to c:\home\git\polyglot\lib\spiral\file_system.dib.html 00:28:57 v #33689 > 00:03:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 864 } 00:28:57 v #33690 > 00:03:29 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 864 } 00:28:57 v #33691 > 00:03:29 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:28:58 v #33692 > 00:03:29 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:28:58 v #33693 > 00:03:29 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:28:58 v #33694 > 00:03:29 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 116981 } 00:28:58 d #33695 runtime.execute_with_options_async / { exit_code = 0; output_length = 124535 } 00:28:58 d #37 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path file_system.dib --retries 3 00:28:58 d #33696 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path networking.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:28:58 v #33697 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) } 00:28:58 v #33698 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/lib/spiral/networking.dib", "--output-path", "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/lib/spiral/networking.dib" --output-path "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:28:59 v #33699 > > 00:28:59 v #33700 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:28:59 v #33701 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:28:59 v #33702 > > │ # networking │ 00:28:59 v #33703 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:02 v #33704 > > 00:29:02 v #33705 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:02 v #33706 > > open rust.rust_operators 00:29:03 v #33707 > > 00:29:03 v #33708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:03 v #33709 > > //// test 00:29:03 v #33710 > > 00:29:03 v #33711 > > open testing 00:29:04 v #33712 > > 00:29:04 v #33713 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:04 v #33714 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:04 v #33715 > > │ ## rust │ 00:29:04 v #33716 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:04 v #33717 > > 00:29:04 v #33718 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:04 v #33719 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:04 v #33720 > > │ ### reqwest_response │ 00:29:04 v #33721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:04 v #33722 > > 00:29:04 v #33723 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:04 v #33724 > > nominal reqwest_response = 00:29:04 v #33725 > > `( 00:29:04 v #33726 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:29:04 v #33727 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response = 00:29:04 v #33728 > > class end" 00:29:04 v #33729 > > $'' : $'reqwest_Response' 00:29:04 v #33730 > > ) 00:29:04 v #33731 > > 00:29:04 v #33732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:04 v #33733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:04 v #33734 > > │ ### reqwest_error │ 00:29:04 v #33735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:04 v #33736 > > 00:29:04 v #33737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:04 v #33738 > > nominal reqwest_error = 00:29:04 v #33739 > > `( 00:29:04 v #33740 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:29:04 v #33741 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class 00:29:04 v #33742 > > end" 00:29:04 v #33743 > > $'' : $'reqwest_Error' 00:29:04 v #33744 > > ) 00:29:05 v #33745 > > 00:29:05 v #33746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:05 v #33747 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:05 v #33748 > > │ ### request_builder │ 00:29:05 v #33749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:05 v #33750 > > 00:29:05 v #33751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:05 v #33752 > > nominal request_builder = 00:29:05 v #33753 > > `( 00:29:05 v #33754 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:29:05 v #33755 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype 00:29:05 v #33756 > > reqwest_RequestBuilder = class end" 00:29:05 v #33757 > > $'' : $'reqwest_RequestBuilder' 00:29:05 v #33758 > > ) 00:29:05 v #33759 > > 00:29:05 v #33760 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:05 v #33761 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:05 v #33762 > > │ ### request_type │ 00:29:05 v #33763 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:05 v #33764 > > 00:29:05 v #33765 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:05 v #33766 > > union request_type = 00:29:05 v #33767 > > | Get 00:29:05 v #33768 > > | Post 00:29:06 v #33769 > > 00:29:06 v #33770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:06 v #33771 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:06 v #33772 > > │ ### request │ 00:29:06 v #33773 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:06 v #33774 > > 00:29:06 v #33775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:06 v #33776 > > type request = 00:29:06 v #33777 > > { 00:29:06 v #33778 > > url : string 00:29:06 v #33779 > > request_type : request_type 00:29:06 v #33780 > > body : string 00:29:06 v #33781 > > json : bool 00:29:06 v #33782 > > auto_refresh : bool 00:29:06 v #33783 > > } 00:29:06 v #33784 > > 00:29:06 v #33785 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:06 v #33786 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:06 v #33787 > > │ ### new_request_get │ 00:29:06 v #33788 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:06 v #33789 > > 00:29:06 v #33790 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:06 v #33791 > > inl new_request_get (url : string) : request_builder = 00:29:06 v #33792 > > inl url = join url 00:29:06 v #33793 > > inl url = url |> sm'.to_std_string 00:29:06 v #33794 > > inl url = join url 00:29:06 v #33795 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:29:06 v #33796 > > err.to_string())?.get(!url)"') 00:29:06 v #33797 > > 00:29:06 v #33798 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:06 v #33799 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:06 v #33800 > > │ ### new_request_post │ 00:29:06 v #33801 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:06 v #33802 > > 00:29:06 v #33803 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:06 v #33804 > > inl new_request_post (url : string) : request_builder = 00:29:06 v #33805 > > inl url = join url 00:29:06 v #33806 > > inl url = url |> sm'.to_std_string 00:29:06 v #33807 > > inl url = join url 00:29:06 v #33808 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:29:06 v #33809 > > err.to_string())?.post(!url)"') 00:29:07 v #33810 > > 00:29:07 v #33811 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:07 v #33812 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:07 v #33813 > > │ ### request_send │ 00:29:07 v #33814 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:07 v #33815 > > 00:29:07 v #33816 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:07 v #33817 > > inl request_send (request : request_builder) : async.future_pin (resultm.result' 00:29:07 v #33818 > > reqwest_response reqwest_error) = 00:29:07 v #33819 > > inl request = join request 00:29:07 v #33820 > > !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"') 00:29:07 v #33821 > > 00:29:07 v #33822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:07 v #33823 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:07 v #33824 > > │ ### request_body │ 00:29:07 v #33825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:07 v #33826 > > 00:29:07 v #33827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:07 v #33828 > > inl request_body (body : string) (request : request_builder) : request_builder = 00:29:07 v #33829 > > inl body = body |> sm'.to_std_string 00:29:07 v #33830 > > !\\(body, $'"reqwest_wasm::RequestBuilder::body(!request, $0)"') 00:29:08 v #33831 > > 00:29:08 v #33832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:08 v #33833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:08 v #33834 > > │ ### request_header │ 00:29:08 v #33835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:08 v #33836 > > 00:29:08 v #33837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:08 v #33838 > > inl request_header (key : string) (value : string) (request : request_builder) : 00:29:08 v #33839 > > request_builder = 00:29:08 v #33840 > > inl request = join request 00:29:08 v #33841 > > inl key = key |> sm'.to_std_string 00:29:08 v #33842 > > inl value = value |> sm'.to_std_string 00:29:08 v #33843 > > !\\((key, value), $'"reqwest_wasm::RequestBuilder::header(!request, $0, 00:29:08 v #33844 > > $1)"') 00:29:08 v #33845 > > 00:29:08 v #33846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:08 v #33847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:08 v #33848 > > │ ### request_json │ 00:29:08 v #33849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:08 v #33850 > > 00:29:08 v #33851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:08 v #33852 > > inl request_json forall t. (obj : t) (request : request_builder) : 00:29:08 v #33853 > > request_builder = 00:29:08 v #33854 > > !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"') 00:29:09 v #33855 > > 00:29:09 v #33856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:09 v #33857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:09 v #33858 > > │ ### response_text │ 00:29:09 v #33859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:09 v #33860 > > 00:29:09 v #33861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:09 v #33862 > > inl response_text (response : reqwest_response) : async.future_pin 00:29:09 v #33863 > > (resultm.result' sm'.std_string reqwest_error) = 00:29:09 v #33864 > > !\($'"Box::pin(reqwest_wasm::Response::text(!response))"') 00:29:09 v #33865 > > 00:29:09 v #33866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:09 v #33867 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:09 v #33868 > > │ ## fsharp │ 00:29:09 v #33869 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:09 v #33870 > > 00:29:09 v #33871 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:09 v #33872 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:09 v #33873 > > │ ### tcp_client │ 00:29:09 v #33874 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:09 v #33875 > > 00:29:09 v #33876 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:09 v #33877 > > nominal tcp_client = 00:29:09 v #33878 > > `( 00:29:09 v #33879 > > global "#if FABLE_COMPILER\n\ntype System_Net_Sockets_TcpClient = 00:29:09 v #33880 > > System.IDisposable\n#else\ntype System_Net_Sockets_TcpClient = 00:29:09 v #33881 > > System.Net.Sockets.TcpClient\n#endif\n" 00:29:09 v #33882 > > $'' : $'System_Net_Sockets_TcpClient' 00:29:09 v #33883 > > ) 00:29:09 v #33884 > > 00:29:09 v #33885 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:09 v #33886 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:09 v #33887 > > │ ### new_tcp_client │ 00:29:09 v #33888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:09 v #33889 > > 00:29:09 v #33890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:09 v #33891 > > inl new_tcp_client () : tcp_client = 00:29:09 v #33892 > > run_target function 00:29:09 v #33893 > > | Fsharp (Native) => fun () => $'new `tcp_client ()' 00:29:09 v #33894 > > | _ => fun () => null () 00:29:10 v #33895 > > 00:29:10 v #33896 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:10 v #33897 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:10 v #33898 > > │ ### ip_address │ 00:29:10 v #33899 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:10 v #33900 > > 00:29:10 v #33901 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:10 v #33902 > > nominal ip_address = $'System.Net.IPAddress' 00:29:10 v #33903 > > 00:29:10 v #33904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:10 v #33905 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:10 v #33906 > > │ ### ip_address_parse │ 00:29:10 v #33907 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:10 v #33908 > > 00:29:10 v #33909 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:10 v #33910 > > inl ip_address_parse (s : string) : ip_address = 00:29:10 v #33911 > > s |> $'`ip_address.Parse' 00:29:11 v #33912 > > 00:29:11 v #33913 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:11 v #33914 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:11 v #33915 > > │ ### tcp_listener │ 00:29:11 v #33916 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:11 v #33917 > > 00:29:11 v #33918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:11 v #33919 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener' 00:29:11 v #33920 > > 00:29:11 v #33921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:11 v #33922 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:11 v #33923 > > │ ### new_tcp_listener │ 00:29:11 v #33924 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:11 v #33925 > > 00:29:11 v #33926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:11 v #33927 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener = 00:29:11 v #33928 > > $'new `tcp_listener (!ip_address, !port)' 00:29:12 v #33929 > > 00:29:12 v #33930 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:12 v #33931 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:12 v #33932 > > │ ### listener_start │ 00:29:12 v #33933 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:12 v #33934 > > 00:29:12 v #33935 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:12 v #33936 > > inl listener_start (listener : tcp_listener) : () = 00:29:12 v #33937 > > listener |> $'_.Start()' 00:29:12 v #33938 > > 00:29:12 v #33939 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:12 v #33940 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:12 v #33941 > > │ ### listener_stop │ 00:29:12 v #33942 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:12 v #33943 > > 00:29:12 v #33944 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:12 v #33945 > > inl listener_stop (listener : tcp_listener) : () = 00:29:12 v #33946 > > listener |> $'_.Stop()' 00:29:12 v #33947 > > 00:29:12 v #33948 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:12 v #33949 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:12 v #33950 > > │ ### client_connect_async │ 00:29:12 v #33951 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:12 v #33952 > > 00:29:12 v #33953 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:12 v #33954 > > inl client_connect_async 00:29:12 v #33955 > > (host : string) 00:29:12 v #33956 > > (port : i32) 00:29:12 v #33957 > > (ct : threading.cancellation_token) 00:29:12 v #33958 > > (client : tcp_client) 00:29:12 v #33959 > > : async.value_task 00:29:12 v #33960 > > = 00:29:12 v #33961 > > run_target function 00:29:12 v #33962 > > | Fsharp (Native) => fun () => $'!client.ConnectAsync (!host, !port, 00:29:12 v #33963 > > !ct)' 00:29:12 v #33964 > > | _ => fun () => null () 00:29:13 v #33965 > > 00:29:13 v #33966 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:13 v #33967 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:13 v #33968 > > │ ### test_port_open │ 00:29:13 v #33969 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:13 v #33970 > > 00:29:13 v #33971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:13 v #33972 > > let test_port_open host port : _ bool = async.new_async fun () => 00:29:13 v #33973 > > inl ct = async.cancellation_token () |> async.let' 00:29:13 v #33974 > > inl client = new_tcp_client () |> use 00:29:13 v #33975 > > try_unit 00:29:13 v #33976 > > fun () => 00:29:13 v #33977 > > client |> client_connect_async host port ct |> 00:29:13 v #33978 > > async.await_value_task_unit |> async.do 00:29:13 v #33979 > > return true 00:29:13 v #33980 > > fun ex => 00:29:13 v #33981 > > trace Verbose 00:29:13 v #33982 > > fun () => "networking.test_port_open" 00:29:13 v #33983 > > fun () => { port ex = ex () |> sm'.format_exception } 00:29:13 v #33984 > > return false 00:29:13 v #33985 > > 00:29:13 v #33986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:13 v #33987 > > //// test 00:29:13 v #33988 > > 00:29:13 v #33989 > > test_port_open "127.0.0.1" 65536 00:29:13 v #33990 > > |> async.run_with_timeout 120 00:29:13 v #33991 > > |> _assert_eq (Some false) 00:29:18 v #33992 > > 00:29:18 v #33993 > > ╭─[ 4.27s - stdout ]───────────────────────────────────────────────────────────╮ 00:29:18 v #33994 > > │ 00:00:00 v #1 networking.test_port_open / { port = 65536; ex = │ 00:29:18 v #33995 > > │ System.ArgumentOutOfRangeException: Specified argument was out of the range │ 00:29:18 v #33996 > > │ of valid values. (Parameter 'port') } │ 00:29:18 v #33997 > > │ __assert_eq / actual: US6_0 false / expected: US6_0 false │ 00:29:18 v #33998 > > │ │ 00:29:18 v #33999 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:18 v #34000 > > 00:29:18 v #34001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:18 v #34002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:18 v #34003 > > │ ### test_port_open_timeout │ 00:29:18 v #34004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:18 v #34005 > > 00:29:18 v #34006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:18 v #34007 > > let test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun 00:29:18 v #34008 > > () => 00:29:18 v #34009 > > test_port_open host port 00:29:18 v #34010 > > |> async.run_with_timeout_async timeout 00:29:18 v #34011 > > |> async.let' 00:29:18 v #34012 > > |> function 00:29:18 v #34013 > > | None => false 00:29:18 v #34014 > > | Some result => result 00:29:18 v #34015 > > |> return 00:29:18 v #34016 > > 00:29:18 v #34017 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:18 v #34018 > > //// test 00:29:18 v #34019 > > 00:29:18 v #34020 > > test_port_open_timeout 120 "127.0.0.1" 65535 00:29:18 v #34021 > > |> async.run_synchronously 00:29:18 v #34022 > > |> _assert_eq false 00:29:21 v #34023 > > 00:29:21 v #34024 > > ╭─[ 3.29s - stdout ]───────────────────────────────────────────────────────────╮ 00:29:21 v #34025 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 120 } │ 00:29:21 v #34026 > > │ __assert_eq / actual: false / expected: false │ 00:29:21 v #34027 > > │ │ 00:29:21 v #34028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:21 v #34029 > > 00:29:21 v #34030 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:21 v #34031 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:21 v #34032 > > │ ### wait_for_port_access │ 00:29:21 v #34033 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:21 v #34034 > > 00:29:21 v #34035 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:21 v #34036 > > let wait_for_port_access timeout status host port : _ i64 = 00:29:21 v #34037 > > let rec loop retry : _ i64 = 00:29:21 v #34038 > > fun () => 00:29:21 v #34039 > > inl is_port_open = 00:29:21 v #34040 > > match timeout |> optionm'.unbox with 00:29:21 v #34041 > > | None => test_port_open host port 00:29:21 v #34042 > > | Some timeout => test_port_open_timeout timeout host port 00:29:21 v #34043 > > |> async.let' 00:29:21 v #34044 > > fix_condition 00:29:21 v #34045 > > fun () => is_port_open = status 00:29:21 v #34046 > > fun () => retry |> return 00:29:21 v #34047 > > fun () => 00:29:21 v #34048 > > if retry % 100 = 0 then 00:29:21 v #34049 > > trace Verbose 00:29:21 v #34050 > > fun () => "networking.wait_for_port_access" 00:29:21 v #34051 > > fun () => { port retry timeout status } 00:29:21 v #34052 > > async.sleep 10 |> async.do 00:29:21 v #34053 > > loop (retry + 1) |> async.return_await 00:29:21 v #34054 > > |> async.new_async_unit 00:29:21 v #34055 > > loop 1i64 00:29:22 v #34056 > > 00:29:22 v #34057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:22 v #34058 > > //// test 00:29:22 v #34059 > > 00:29:22 v #34060 > > inl lock_port host port = async.new_async fun () => 00:29:22 v #34061 > > trace Debug (fun () => "_1") id 00:29:22 v #34062 > > async.sleep 5000 |> async.do 00:29:22 v #34063 > > inl listener = new_tcp_listener (host |> ip_address_parse) port |> use 00:29:22 v #34064 > > trace Debug (fun () => "_2") id 00:29:22 v #34065 > > listener |> listener_start 00:29:22 v #34066 > > trace Debug (fun () => "_3") id 00:29:22 v #34067 > > async.sleep 2000 |> async.do 00:29:22 v #34068 > > trace Debug (fun () => "_4") id 00:29:22 v #34069 > > $'!listener.Stop' () 00:29:22 v #34070 > > trace Debug (fun () => "_5") id 00:29:22 v #34071 > > 00:29:22 v #34072 > > inl host = "127.0.0.1" 00:29:22 v #34073 > > inl port = 5555i32 00:29:22 v #34074 > > 00:29:22 v #34075 > > fun () => 00:29:22 v #34076 > > trace Debug (fun () => "1") id 00:29:22 v #34077 > > inl child = lock_port host port |> async.start_child |> async.let' 00:29:22 v #34078 > > trace Debug (fun () => "2") id 00:29:22 v #34079 > > async.sleep 1 |> async.do 00:29:22 v #34080 > > trace Debug (fun () => "3") id 00:29:22 v #34081 > > inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |> 00:29:22 v #34082 > > async.let' 00:29:22 v #34083 > > trace Debug (fun () => "4") id 00:29:22 v #34084 > > inl retries2 = wait_for_port_access (None |> optionm'.box) false host port 00:29:22 v #34085 > > |> async.let' 00:29:22 v #34086 > > trace Debug (fun () => "5") id 00:29:22 v #34087 > > child |> async.do 00:29:22 v #34088 > > trace Debug (fun () => "6") id 00:29:22 v #34089 > > (retries1, retries2) |> return 00:29:22 v #34090 > > |> async.new_async_unit 00:29:22 v #34091 > > |> async.run_with_timeout 20000 00:29:22 v #34092 > > |> function 00:29:22 v #34093 > > | Some (retries1, retries2) => 00:29:22 v #34094 > > retries1 00:29:22 v #34095 > > |> _assert_between 00:29:22 v #34096 > > if platform.is_windows () then 2i64 else 2 00:29:22 v #34097 > > if platform.is_windows () then 5 else 1500 00:29:22 v #34098 > > 00:29:22 v #34099 > > retries2 00:29:22 v #34100 > > |> _assert_between 00:29:22 v #34101 > > if platform.is_windows () then 80i64 else 80 00:29:22 v #34102 > > if platform.is_windows () then 200 else 600 00:29:22 v #34103 > > 00:29:22 v #34104 > > true 00:29:22 v #34105 > > | _ => false 00:29:22 v #34106 > > |> _assert_eq true 00:29:38 v #34107 > > 00:29:38 v #34108 > > ╭─[ 16.69s - stdout ]──────────────────────────────────────────────────────────╮ 00:29:38 v #34109 > > │ 00:00:00 d #1 1 │ 00:29:38 v #34110 > > │ 00:00:00 d #2 _1 │ 00:29:38 v #34111 > > │ 00:00:00 d #3 2 │ 00:29:38 v #34112 > > │ 00:00:00 d #4 3 │ 00:29:38 v #34113 > > │ 00:00:02 v #5 networking.test_port_open / { port = 5555; ex = │ 00:29:38 v #34114 > > │ System.AggregateException: One or more errors occurred. (No connection could │ 00:29:38 v #34115 > > │ be made because the target machine actively refused it.) } │ 00:29:38 v #34116 > > │ 00:00:04 v #6 networking.test_port_open / { port = 5555; ex = │ 00:29:38 v #34117 > > │ System.AggregateException: One or more errors occurred. (No connection could │ 00:29:38 v #34118 > > │ be made because the target machine actively refused it.) } │ 00:29:38 v #34119 > > │ 00:00:04 d #7 _2 │ 00:29:38 v #34120 > > │ 00:00:04 d #8 _3 │ 00:29:38 v #34121 > > │ 00:00:05 d #9 4 │ 00:29:38 v #34122 > > │ 00:00:06 v #10 networking.wait_for_port_access / { port = 5555; retry = │ 00:29:38 v #34123 > > │ 100; timeout = None; status = false } │ 00:29:38 v #34124 > > │ 00:00:06 d #11 _4 │ 00:29:38 v #34125 > > │ 00:00:07 d #12 _5 │ 00:29:38 v #34126 > > │ 00:00:09 v #13 networking.test_port_open / { port = 5555; ex = │ 00:29:38 v #34127 > > │ System.AggregateException: One or more errors occurred. (No connection could │ 00:29:38 v #34128 > > │ be made because the target machine actively refused it.) } │ 00:29:38 v #34129 > > │ 00:00:09 d #14 5 │ 00:29:38 v #34130 > > │ 00:00:09 d #15 6 │ 00:29:38 v #34131 > > │ __assert_between / actual: 3L / expected: struct (2L, 5L) │ 00:29:38 v #34132 > > │ __assert_between / actual: 120L / expected: struct (80L, 200L) │ 00:29:38 v #34133 > > │ __assert_eq / actual: true / expected: true │ 00:29:38 v #34134 > > │ │ 00:29:38 v #34135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:38 v #34136 > > 00:29:38 v #34137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:38 v #34138 > > //// test 00:29:38 v #34139 > > 00:29:38 v #34140 > > inl lock_port host port = async.new_async_unit fun () => 00:29:38 v #34141 > > trace Debug (fun () => "_1") id 00:29:38 v #34142 > > async.sleep 500 |> async.do 00:29:38 v #34143 > > inl listener = new_tcp_listener (ip_address_parse host) port |> use 00:29:38 v #34144 > > trace Debug (fun () => "_2") id 00:29:38 v #34145 > > listener |> listener_start 00:29:38 v #34146 > > trace Debug (fun () => "_3") id 00:29:38 v #34147 > > async.sleep 200 |> async.do 00:29:38 v #34148 > > trace Debug (fun () => "_4") id 00:29:38 v #34149 > > listener |> listener_stop 00:29:38 v #34150 > > trace Debug (fun () => "_5") id 00:29:38 v #34151 > > 00:29:38 v #34152 > > inl host = "127.0.0.1" 00:29:38 v #34153 > > inl port = 5555 00:29:38 v #34154 > > 00:29:38 v #34155 > > fun () => 00:29:38 v #34156 > > trace Debug (fun () => "1") id 00:29:38 v #34157 > > inl child = lock_port host port |> async.start_child |> async.let' 00:29:38 v #34158 > > trace Debug (fun () => "2") id 00:29:38 v #34159 > > async.sleep 1 |> async.do 00:29:38 v #34160 > > trace Debug (fun () => "3") id 00:29:38 v #34161 > > inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port 00:29:38 v #34162 > > |> async.let' 00:29:38 v #34163 > > trace Debug (fun () => "4") id 00:29:38 v #34164 > > inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host 00:29:38 v #34165 > > port |> async.let' 00:29:38 v #34166 > > trace Debug (fun () => "5") id 00:29:38 v #34167 > > child |> async.do 00:29:38 v #34168 > > trace Debug (fun () => "6") id 00:29:38 v #34169 > > (retries1, retries2) |> return 00:29:38 v #34170 > > |> async.new_async_unit 00:29:38 v #34171 > > |> async.run_with_timeout 2000 00:29:38 v #34172 > > |> function 00:29:38 v #34173 > > | Some (retries1, retries2) => 00:29:38 v #34174 > > retries1 00:29:38 v #34175 > > |> _assert_between 00:29:38 v #34176 > > if platform.is_windows () then 4i64 else 2 00:29:38 v #34177 > > if platform.is_windows () then 15 else 150 00:29:38 v #34178 > > 00:29:38 v #34179 > > retries2 00:29:38 v #34180 > > |> _assert_between 00:29:38 v #34181 > > if platform.is_windows () then 5i64 else 0 00:29:38 v #34182 > > if platform.is_windows () then 20 else 60 00:29:38 v #34183 > > 00:29:38 v #34184 > > true 00:29:38 v #34185 > > | _ => false 00:29:38 v #34186 > > |> _assert_eq true 00:29:47 v #34187 > > 00:29:47 v #34188 > > ╭─[ 8.75s - stdout ]───────────────────────────────────────────────────────────╮ 00:29:47 v #34189 > > │ 00:00:00 d #1 1 │ 00:29:47 v #34190 > > │ 00:00:00 d #2 2 │ 00:29:47 v #34191 > > │ 00:00:00 d #3 _1 │ 00:29:47 v #34192 > > │ 00:00:00 d #4 3 │ 00:29:47 v #34193 > > │ 00:00:00 v #5 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34194 > > │ 00:00:00 v #6 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34195 > > │ 00:00:00 v #7 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34196 > > │ 00:00:00 v #8 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34197 > > │ 00:00:00 v #9 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34198 > > │ 00:00:00 v #10 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34199 > > │ 00:00:00 d #11 _2 │ 00:29:47 v #34200 > > │ 00:00:00 d #12 _3 │ 00:29:47 v #34201 > > │ 00:00:00 v #13 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34202 > > │ 00:00:00 d #14 4 │ 00:29:47 v #34203 > > │ 00:00:00 d #15 _4 │ 00:29:47 v #34204 > > │ 00:00:00 d #16 _5 │ 00:29:47 v #34205 > > │ 00:00:00 v #17 async.run_with_timeout_async / { timeout = 60 } │ 00:29:47 v #34206 > > │ 00:00:00 d #18 5 │ 00:29:47 v #34207 > > │ 00:00:00 d #19 6 │ 00:29:47 v #34208 > > │ __assert_between / actual: 8L / expected: struct (4L, 15L) │ 00:29:47 v #34209 > > │ __assert_between / actual: 10L / expected: struct (5L, 20L) │ 00:29:47 v #34210 > > │ __assert_eq / actual: true / expected: true │ 00:29:47 v #34211 > > │ │ 00:29:47 v #34212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:47 v #34213 > > 00:29:47 v #34214 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:29:47 v #34215 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:29:47 v #34216 > > │ ### get_available_port │ 00:29:47 v #34217 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:29:47 v #34218 > > 00:29:47 v #34219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:47 v #34220 > > let get_available_port timeout host initial_port : _ i32 = 00:29:47 v #34221 > > let rec loop port = 00:29:47 v #34222 > > fun () => 00:29:47 v #34223 > > inl is_port_open = 00:29:47 v #34224 > > match timeout |> optionm'.unbox with 00:29:47 v #34225 > > | None => test_port_open host port 00:29:47 v #34226 > > | Some timeout => test_port_open_timeout timeout host port 00:29:47 v #34227 > > |> async.let' 00:29:47 v #34228 > > fix_condition 00:29:47 v #34229 > > fun () => is_port_open |> not 00:29:47 v #34230 > > fun () => port |> return 00:29:47 v #34231 > > fun () => loop (port + 1) |> async.return_await 00:29:47 v #34232 > > |> async.new_async_unit 00:29:47 v #34233 > > loop initial_port 00:29:47 v #34234 > > 00:29:47 v #34235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:29:47 v #34236 > > //// test 00:29:47 v #34237 > > 00:29:47 v #34238 > > inl lock_ports host port = async.new_async_unit fun () => 00:29:47 v #34239 > > trace Debug (fun () => "_1") id 00:29:47 v #34240 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:29:47 v #34241 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:29:47 v #34242 > > trace Debug (fun () => "_2") id 00:29:47 v #34243 > > listener1 |> listener_start 00:29:47 v #34244 > > listener2 |> listener_start 00:29:47 v #34245 > > trace Debug (fun () => "_3") id 00:29:47 v #34246 > > async.sleep 4000 |> async.do 00:29:47 v #34247 > > trace Debug (fun () => "_4") id 00:29:47 v #34248 > > listener1 |> listener_stop 00:29:47 v #34249 > > listener2 |> listener_stop 00:29:47 v #34250 > > trace Debug (fun () => "_5") id 00:29:47 v #34251 > > 00:29:47 v #34252 > > inl host = "127.0.0.1" 00:29:47 v #34253 > > inl port = 5555 00:29:47 v #34254 > > 00:29:47 v #34255 > > fun () => 00:29:47 v #34256 > > trace Debug (fun () => "1") id 00:29:47 v #34257 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:29:47 v #34258 > > trace Debug (fun () => "2") id 00:29:47 v #34259 > > async.sleep 240 |> async.do 00:29:47 v #34260 > > trace Debug (fun () => "3") id 00:29:47 v #34261 > > inl available_port = get_available_port (None |> optionm'.box) host port |> 00:29:47 v #34262 > > async.let' 00:29:47 v #34263 > > trace Debug (fun () => "4") id 00:29:47 v #34264 > > inl retries = wait_for_port_access (None |> optionm'.box) false host port |> 00:29:47 v #34265 > > async.let' 00:29:47 v #34266 > > trace Debug (fun () => "5") id 00:29:47 v #34267 > > child |> async.do 00:29:47 v #34268 > > trace Debug (fun () => "6") id 00:29:47 v #34269 > > (available_port, retries) |> return 00:29:47 v #34270 > > |> async.new_async_unit 00:29:47 v #34271 > > |> async.run_with_timeout 15000 00:29:47 v #34272 > > |> function 00:29:47 v #34273 > > | Some (available_port, retries) => 00:29:47 v #34274 > > available_port |> _assert_eq (port + 2) 00:29:47 v #34275 > > 00:29:47 v #34276 > > retries 00:29:47 v #34277 > > |> _assert_between 00:29:47 v #34278 > > if platform.is_windows () then 50i64 else 50 00:29:47 v #34279 > > if platform.is_windows () then 150 else 1200 00:29:47 v #34280 > > 00:29:47 v #34281 > > true 00:29:47 v #34282 > > | _ => false 00:29:47 v #34283 > > |> _assert_eq true 00:30:01 v #34284 > > 00:30:01 v #34285 > > ╭─[ 14.04s - stdout ]──────────────────────────────────────────────────────────╮ 00:30:01 v #34286 > > │ 00:00:00 d #1 1 │ 00:30:01 v #34287 > > │ 00:00:00 d #2 _1 │ 00:30:01 v #34288 > > │ 00:00:00 d #3 2 │ 00:30:01 v #34289 > > │ 00:00:00 d #4 _2 │ 00:30:01 v #34290 > > │ 00:00:00 d #5 _3 │ 00:30:01 v #34291 > > │ 00:00:00 d #6 3 │ 00:30:01 v #34292 > > │ 00:00:02 v #7 networking.test_port_open / { port = 5557; ex = │ 00:30:01 v #34293 > > │ System.AggregateException: One or more errors occurred. (No connection could │ 00:30:01 v #34294 > > │ be made because the target machine actively refused it.) } │ 00:30:01 v #34295 > > │ 00:00:02 d #8 4 │ 00:30:01 v #34296 > > │ 00:00:03 v #9 networking.wait_for_port_access / { port = 5555; retry = │ 00:30:01 v #34297 > > │ 100; timeout = None; status = false } │ 00:30:01 v #34298 > > │ 00:00:04 d #10 _4 │ 00:30:01 v #34299 > > │ 00:00:04 d #11 _5 │ 00:30:01 v #34300 > > │ 00:00:06 v #12 networking.test_port_open / { port = 5555; ex = │ 00:30:01 v #34301 > > │ System.AggregateException: One or more errors occurred. (No connection could │ 00:30:01 v #34302 > > │ be made because the target machine actively refused it.) } │ 00:30:01 v #34303 > > │ 00:00:06 d #13 5 │ 00:30:01 v #34304 > > │ 00:00:06 d #14 6 │ 00:30:01 v #34305 > > │ __assert_eq / actual: 5557 / expected: 5557 │ 00:30:01 v #34306 > > │ __assert_between / actual: 111L / expected: struct (50L, 150L) │ 00:30:01 v #34307 > > │ __assert_eq / actual: true / expected: true │ 00:30:01 v #34308 > > │ │ 00:30:01 v #34309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:30:01 v #34310 > > 00:30:01 v #34311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:30:01 v #34312 > > //// test 00:30:01 v #34313 > > 00:30:01 v #34314 > > inl lock_ports host port = async.new_async_unit fun () => 00:30:01 v #34315 > > trace Debug (fun () => "_1") id 00:30:01 v #34316 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:30:01 v #34317 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:30:01 v #34318 > > trace Debug (fun () => "_2") id 00:30:01 v #34319 > > listener1 |> listener_start 00:30:01 v #34320 > > listener2 |> listener_start 00:30:01 v #34321 > > trace Debug (fun () => "_3") id 00:30:01 v #34322 > > async.sleep 400 |> async.do 00:30:01 v #34323 > > trace Debug (fun () => "_4") id 00:30:01 v #34324 > > listener1 |> listener_stop 00:30:01 v #34325 > > listener2 |> listener_stop 00:30:01 v #34326 > > trace Debug (fun () => "_5") id 00:30:01 v #34327 > > 00:30:01 v #34328 > > inl host = "127.0.0.1" 00:30:01 v #34329 > > inl port = 5555 00:30:01 v #34330 > > 00:30:01 v #34331 > > fun () => 00:30:01 v #34332 > > trace Debug (fun () => "1") id 00:30:01 v #34333 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:30:01 v #34334 > > trace Debug (fun () => "2") id 00:30:01 v #34335 > > async.sleep 240 |> async.do 00:30:01 v #34336 > > trace Debug (fun () => "3") id 00:30:01 v #34337 > > inl available_port = get_available_port (Some 60 |> optionm'.box) host port 00:30:01 v #34338 > > |> async.let' 00:30:01 v #34339 > > trace Debug (fun () => "4") id 00:30:01 v #34340 > > inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port 00:30:01 v #34341 > > |> async.let' 00:30:01 v #34342 > > trace Debug (fun () => "5") id 00:30:01 v #34343 > > child |> async.do 00:30:01 v #34344 > > trace Debug (fun () => "6") id 00:30:01 v #34345 > > (available_port, retries) |> return 00:30:01 v #34346 > > |> async.new_async_unit 00:30:01 v #34347 > > |> async.run_with_timeout 1500 00:30:01 v #34348 > > |> function 00:30:01 v #34349 > > | Some (available_port, retries) => 00:30:01 v #34350 > > available_port |> _assert_eq (port + 2) 00:30:01 v #34351 > > 00:30:01 v #34352 > > retries 00:30:01 v #34353 > > |> _assert_between 00:30:01 v #34354 > > (if platform.is_windows () then 2i64 else 1) 00:30:01 v #34355 > > (if platform.is_windows () then 10 else 120) 00:30:01 v #34356 > > 00:30:01 v #34357 > > true 00:30:01 v #34358 > > | _ => false 00:30:01 v #34359 > > |> _assert_eq true 00:30:10 v #34360 > > 00:30:10 v #34361 > > ╭─[ 8.66s - stdout ]───────────────────────────────────────────────────────────╮ 00:30:10 v #34362 > > │ 00:00:00 d #1 1 │ 00:30:10 v #34363 > > │ 00:00:00 d #2 2 │ 00:30:10 v #34364 > > │ 00:00:00 d #3 _1 │ 00:30:10 v #34365 > > │ 00:00:00 d #4 _2 │ 00:30:10 v #34366 > > │ 00:00:00 d #5 _3 │ 00:30:10 v #34367 > > │ 00:00:00 d #6 3 │ 00:30:10 v #34368 > > │ 00:00:00 v #7 async.run_with_timeout_async / { timeout = 60 } │ 00:30:10 v #34369 > > │ 00:00:00 d #8 4 │ 00:30:10 v #34370 > > │ 00:00:00 d #9 _4 │ 00:30:10 v #34371 > > │ 00:00:00 d #10 _5 │ 00:30:10 v #34372 > > │ 00:00:00 v #11 async.run_with_timeout_async / { timeout = 60 } │ 00:30:10 v #34373 > > │ 00:00:00 d #12 5 │ 00:30:10 v #34374 > > │ 00:00:00 d #13 6 │ 00:30:10 v #34375 > > │ __assert_eq / actual: 5557 / expected: 5557 │ 00:30:10 v #34376 > > │ __assert_between / actual: 6L / expected: struct (2L, 10L) │ 00:30:10 v #34377 > > │ __assert_eq / actual: true / expected: true │ 00:30:10 v #34378 > > │ │ 00:30:10 v #34379 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:30:10 v #34380 > > 00:30:10 v #34381 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:30:10 v #34382 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:30:10 v #34383 > > │ ## main │ 00:30:10 v #34384 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:30:10 v #34385 > > 00:30:10 v #34386 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:30:10 v #34387 > > inl main () = 00:30:10 v #34388 > > init_trace_state None 00:30:10 v #34389 > > $'let test_port_open x = !test_port_open x' : () 00:30:10 v #34390 > > $'let test_port_open_timeout x = !test_port_open_timeout x' : () 00:30:10 v #34391 > > $'let wait_for_port_access x = !wait_for_port_access x' : () 00:30:10 v #34392 > > $'let get_available_port x = !get_available_port x' : () 00:30:14 v #34393 > 00:01:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33712 } 00:30:14 v #34394 > 00:01:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:30:16 v #34395 > 00:01:17 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/lib/spiral/networking.dib.ipynb to html 00:30:16 v #34396 > 00:01:17 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:30:16 v #34397 > 00:01:17 v #7 ! validate(nb) 00:30:16 v #34398 > 00:01:18 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:30:16 v #34399 > 00:01:18 v #9 ! return _pygments_highlight( 00:30:17 v #34400 > 00:01:19 v #10 ! [NbConvertApp] Writing 370721 bytes to c:\home\git\polyglot\lib\spiral\networking.dib.html 00:30:17 v #34401 > 00:01:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 862 } 00:30:17 v #34402 > 00:01:19 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 862 } 00:30:17 v #34403 > 00:01:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:30:17 v #34404 > 00:01:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:30:17 v #34405 > 00:01:19 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:30:17 v #34406 > 00:01:19 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 34633 } 00:30:17 d #34407 runtime.execute_with_options_async / { exit_code = 0; output_length = 38624 } 00:30:17 d #38 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path networking.dib --retries 3 00:00:00 d #1 writeDibCode / output: Spi / path: crypto.dib 00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib 00:00:00 d #1 writeDibCode / output: Spi / path: async.dib 00:00:00 d #1 writeDibCode / output: Spi / path: networking.dib 00:00:00 d #1 writeDibCode / output: Spi / path: threading.dib 00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib 00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib 00:00:00 d #1 writeDibCode / output: Spi / path: common.dib 00:00:00 d #2 parseDibCode / output: Spi / file: crypto.dib 00:00:00 d #2 parseDibCode / output: Spi / file: trace.dib 00:00:00 d #4 parseDibCode / output: Spi / file: threading.dib 00:00:00 d #5 parseDibCode / output: Spi / file: async.dib 00:00:00 d #7 parseDibCode / output: Spi / file: networking.dib 00:00:00 d #2 parseDibCode / output: Spi / file: common.dib 00:00:00 d #5 parseDibCode / output: Spi / file: runtime.dib 00:00:00 d #5 parseDibCode / output: Spi / file: testing.dib 00:00:00 d #9 writeDibCode / output: Spi / path: date_time.dib 00:00:00 d #10 writeDibCode / output: Spi / path: iter.dib 00:00:00 d #10 writeDibCode / output: Spi / path: resultm.dib 00:00:00 d #10 writeDibCode / output: Spi / path: env.dib 00:00:00 d #10 writeDibCode / output: Spi / path: console.dib 00:00:00 d #10 writeDibCode / output: Spi / path: parsing.dib 00:00:00 d #16 parseDibCode / output: Spi / file: date_time.dib 00:00:00 d #10 writeDibCode / output: Spi / path: base.dib 00:00:00 d #16 parseDibCode / output: Spi / file: resultm.dib 00:00:00 d #16 parseDibCode / output: Spi / file: iter.dib 00:00:00 d #19 parseDibCode / output: Spi / file: parsing.dib 00:00:00 d #20 parseDibCode / output: Spi / file: console.dib 00:00:00 d #21 parseDibCode / output: Spi / file: base.dib 00:00:00 d #18 parseDibCode / output: Spi / file: env.dib 00:00:00 d #22 writeDibCode / output: Spi / path: file_system.dib 00:00:00 d #22 writeDibCode / output: Spi / path: math.dib 00:00:00 d #24 writeDibCode / output: Spi / path: guid.dib 00:00:00 d #25 writeDibCode / output: Spi / path: mapm.dib 00:00:00 d #26 writeDibCode / output: Spi / path: optionm'.dib 00:00:00 d #27 writeDibCode / output: Spi / path: am'.dib 00:00:00 d #28 parseDibCode / output: Spi / file: file_system.dib 00:00:00 d #29 parseDibCode / output: Spi / file: math.dib 00:00:00 d #29 parseDibCode / output: Spi / file: guid.dib 00:00:00 d #31 writeDibCode / output: Spi / path: sm'.dib 00:00:00 d #32 parseDibCode / output: Spi / file: mapm.dib 00:00:00 d #33 parseDibCode / output: Spi / file: optionm'.dib 00:00:00 d #34 parseDibCode / output: Spi / file: am'.dib 00:00:00 d #35 parseDibCode / output: Spi / file: sm'.dib 00:00:00 d #36 writeDibCode / output: Spir / path: sm'.dib 00:00:00 d #37 writeDibCode / output: Spi / path: reflection.dib 00:00:00 d #38 parseDibCode / output: Spir / file: sm'.dib 00:00:00 d #39 writeDibCode / output: Spi / path: listm'.dib 00:00:00 d #40 parseDibCode / output: Spi / file: reflection.dib 00:00:00 d #41 parseDibCode / output: Spi / file: listm'.dib 00:00:00 d #42 writeDibCode / output: Spi / path: python.dib 00:00:00 d #43 parseDibCode / output: Spi / file: python.dib 00:00:00 d #44 writeDibCode / output: Spi / path: typescript.dib 00:00:00 d #45 parseDibCode / output: Spi / file: typescript.dib 00:00:00 d #46 writeDibCode / output: Spi / path: benchmark.dib 00:00:00 d #46 writeDibCode / output: Spi / path: seq.dib 00:00:00 d #46 writeDibCode / output: Spi / path: util.dib 00:00:00 d #46 writeDibCode / output: Spi / path: stream.dib 00:00:00 d #48 parseDibCode / output: Spi / file: benchmark.dib 00:00:00 d #48 parseDibCode / output: Spi / file: seq.dib 00:00:00 d #50 parseDibCode / output: Spi / file: stream.dib 00:00:00 d #51 writeDibCode / output: Spi / path: platform.dib 00:00:00 d #52 parseDibCode / output: Spi / file: platform.dib 00:00:00 d #53 parseDibCode / output: Spi / file: util.dib 00:00:00 d #54 writeDibCode / output: Spi / path: rust/rust.dib 00:00:00 d #55 parseDibCode / output: Spi / file: rust/rust.dib 00:00:00 d #56 writeDibCode / output: Spi / path: rust/testing.dib 00:00:00 d #57 parseDibCode / output: Spi / file: rust/testing.dib 00:00:00 d #58 writeDibCode / output: Spi / path: rust/near.dib 00:00:00 d #59 parseDibCode / output: Spi / file: rust/near.dib 00:00:00 d #60 writeDibCode / output: Spi / path: rust/near_workspaces.dib 00:00:00 d #61 parseDibCode / output: Spi / file: rust/near_workspaces.dib 00:00:00 d #62 writeDibCode / output: Spi / path: physics.dib 00:00:00 d #63 parseDibCode / output: Spi / file: physics.dib 00:00:00 d #64 writeDibCode / output: Spi / path: leptos/leptos.dib 00:00:00 d #65 parseDibCode / output: Spi / file: leptos/leptos.dib 00:00:00 d #66 writeDibCode / output: Spi / path: wasm.dib 00:00:00 d #67 parseDibCode / output: Spi / file: wasm.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #6 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #6 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #6 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #6 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #10 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #11 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #12 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ### base_let\u0027\ninl b...token_with_default_async x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/async.spi"}} / result: 00:00:01 v #13 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n ...0027let trace x = !trace x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/trace.spi"}} / result: 00:00:01 v #14 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...t_args x = !split_args x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:01 v #15 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest...!get_available_port x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/networking.spi"}} / result: 00:00:01 v #16 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl...new_disposable_token x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/threading.spi"}} / result: 00:00:01 v #17 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/threading.spi"}} / result: 00:00:01 v #17 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/trace.spi"}} / result: 00:00:01 v #17 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/async.spi"}} / result: 00:00:01 v #19 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/networking.spi"}} / result: 00:00:01 v #19 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:01 d #21 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #21 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #21 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #25 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #26 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #27 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #28 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #28 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #21 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #30 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #31 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #31 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #31 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #31 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #33 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #33 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #36 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #33 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #37 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #38 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #39 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.Threading.CancellationToken | US0_1 let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 = US0_0(v0) and method0 () : (System.Threading.CancellationToken -> US0) = closure1() and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && WASM null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT n...er _.Dispose () = v74 () } let _run_target_args'_v63 = v75 #endif #else let v76 : (unit -> unit) = method2(v62) let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () } let _run_target_args'_v63 = v77 #endif let v78 : System.IDisposable = _run_target_args'_v63 let v82 : System.Threading.CancellationToken = v62.Token let _run_target_args'_v1 = struct (v82, v78) #endif let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 struct (v83, v84) let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () 00:00:02 d #40 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.Threading.CancellationToken | US0_1 let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 = US0_0(v0) and method0 () : (System.Threading.CancellationToken -> US0) = closure1() and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && WASM null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT n...er _.Dispose () = v74 () } let _run_target_args'_v63 = v75 #endif #else let v76 : (unit -> unit) = method2(v62) let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () } let _run_target_args'_v63 = v77 #endif let v78 : System.IDisposable = _run_target_args'_v63 let v82 : System.Threading.CancellationToken = v62.Token let _run_target_args'_v1 = struct (v82, v78) #endif let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 struct (v83, v84) let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () 00:00:02 d #41 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 d #42 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... else let v43 : string = v2 () method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43) method18(v45) and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit = let v3 : unit = () let v4 : (unit -> unit) = closure6(v0, v1, v2) let v5 : unit = (fun () -> v4 (); v3) () () and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) = closure5(v0, v1) and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) = closure4(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3() let trace x = v16 x () 00:00:02 d #43 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... else let v43 : string = v2 () method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43) method18(v45) and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit = let v3 : unit = () let v4 : (unit -> unit) = closure6(v0, v1, v2) let v5 : unit = (fun () -> v4 (); v3) () () and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) = closure5(v0, v1) and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) = closure4(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3() let trace x = v16 x () 00:00:02 d #44 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 d #45 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_... let v747 : System.Threading.CancellationToken = v746.Token return v747 #endif // run_target_args' is_unit (* indent () indent *) } (* indent () indent *) let v954 : Async<System.Threading.CancellationToken> = _let'_v719 let _run_target_args'_v1 = v954 #endif let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 v955 and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = method0(v0) let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () 00:00:02 d #46 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_... let v747 : System.Threading.CancellationToken = v746.Token return v747 #endif // run_target_args' is_unit (* indent () indent *) } (* indent () indent *) let v954 : Async<System.Threading.CancellationToken> = _let'_v719 let _run_target_args'_v1 = v954 #endif let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 v955 and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = method0(v0) let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () 00:00:02 d #47 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 v #6 async.run_with_timeout_async / { timeout = 180 } 00:00:02 d #48 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #49 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #50 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 v #51 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha..._port x = !hash_to_port x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:02 v #52 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:02 d #53 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #54 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #55 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #56 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 v #7 async.run_with_timeout_async / { timeout = 180 } 00:00:02 d #57 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #58 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #59 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 v #60 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### join_body\ninl join_body body acc x...et memoize x = !memoize x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/common.spi"}} / result: 00:00:02 v #61 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/common.spi"}} / result: 00:00:02 v #8 async.run_with_timeout_async / { timeout = 180 } 00:00:02 d #62 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #63 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #64 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 v #65 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##... x = !format_iso8601 x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:03 v #66 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:03 d #67 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #68 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #69 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #70 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #71 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #72 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #73 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #74 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #75 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #76 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #77 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #78 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #79 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #79 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #80 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #81 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #82 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #83 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #84 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #85 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #86 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co...ion = Some () v4 and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) = closure5(v0) and method22 (v0 : (unit -> unit)) : (unit -> unit) = v0 and closure16 (v0 : Lazy<unit>) () : unit = v0.Value () and closure15 () (v0 : (unit -> unit)) : (unit -> unit) = let v1 : (unit -> unit) = method22(v0) let v2 : Lazy<unit> = lazy v1 () closure16(v2) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : ((unit -> unit) -> System.IDisposable) = closure3() let new_disposable x = v16 x let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4() let retry_fn x = v17 x let v18 : ((unit -> unit) -> (unit -> unit)) = closure15() let memoize x = v18 x () 00:00:04 d #87 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co...ion = Some () v4 and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) = closure5(v0) and method22 (v0 : (unit -> unit)) : (unit -> unit) = v0 and closure16 (v0 : Lazy<unit>) () : unit = v0.Value () and closure15 () (v0 : (unit -> unit)) : (unit -> unit) = let v1 : (unit -> unit) = method22(v0) let v2 : Lazy<unit> = lazy v1 () closure16(v2) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : ((unit -> unit) -> System.IDisposable) = closure3() let new_disposable x = v16 x let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4() let retry_fn x = v17 x let v18 : ((unit -> unit) -> (unit -> unit)) = closure15() let memoize x = v18 x () 00:00:04 d #88 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 d #89 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #90 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #91 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #92 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #93 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #94 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #95 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>] #endif type std_io_Cursor<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>] #endif type std_io_BufReader<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>] #endif type sha2_Sha256 = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("_")>] #endif type Slice'<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 #endif #else let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0) let _run_target_args'_v2 = v45 #endif let v46 : int32 = _run_target_args'_v2 let v57 : string = v0.[int 0..int 7] let v60 : int32 = System.Convert.ToInt32 (v57, 16) let v63 : int32 = v60 + v46 let v64 : (int32 -> uint16) = uint16 let v65 : uint16 = v64 v63 let v68 : unit = () let v69 : (unit -> unit) = closure2(v46, v57, v65) let v70 : unit = (fun () -> v69 (); v68) () let v110 : uint16 = v65 % 48128us let v111 : uint16 = v110 + 1024us v111 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () 00:00:04 d #96 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>] #endif type std_io_Cursor<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>] #endif type std_io_BufReader<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>] #endif type sha2_Sha256 = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("_")>] #endif type Slice'<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 #endif #else let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0) let _run_target_args'_v2 = v45 #endif let v46 : int32 = _run_target_args'_v2 let v57 : string = v0.[int 0..int 7] let v60 : int32 = System.Convert.ToInt32 (v57, 16) let v63 : int32 = v60 + v46 let v64 : (int32 -> uint16) = uint16 let v65 : uint16 = v64 v63 let v68 : unit = () let v69 : (unit -> unit) = closure2(v46, v57, v65) let v70 : unit = (fun () -> v69 (); v68) () let v110 : uint16 = v65 % 48128us let v111 : uint16 = v110 + 1024us v111 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () 00:00:04 d #97 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 v #9 async.run_with_timeout_async / { timeout = 180 } 00:00:04 d #98 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #99 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #100 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 v #101 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...et_executable_suffix ()\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/platform.spi"}} / result: 00:00:04 v #102 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/platform.spi"}} / result: 00:00:04 d #103 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #104 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #105 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>] #endif type chrono_NaiveDateTime = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>] #endif type chrono_Utc = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>] #endif type chrono_Local = class en...THH-mm-ss.fff" v1 v2 let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0() let date_time_guid_from_date_time x = v0 x let v1 : (System.Guid -> System.DateTime) = closure3() let date_time_from_guid x = v1 x let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5() let timestamp_guid_from_timestamp x = v2 x let v3 : (System.Guid -> int64) = closure7() let timestamp_from_guid x = v3 x let v4 : (System.DateTime -> System.Guid) = closure8() let new_guid_from_date_time x = v4 x let v5 : (int64 -> System.Guid) = closure9() let new_guid_from_timestamp x = v5 x let v6 : (string -> (System.DateTime -> string)) = closure10() let format x = v6 x let v7 : (System.DateTime -> string) = closure12() let format_iso8601 x = v7 x () 00:00:04 d #106 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>] #endif type chrono_NaiveDateTime = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>] #endif type chrono_Utc = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>] #endif type chrono_Local = class en...THH-mm-ss.fff" v1 v2 let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0() let date_time_guid_from_date_time x = v0 x let v1 : (System.Guid -> System.DateTime) = closure3() let date_time_from_guid x = v1 x let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5() let timestamp_guid_from_timestamp x = v2 x let v3 : (System.Guid -> int64) = closure7() let timestamp_from_guid x = v3 x let v4 : (System.DateTime -> System.Guid) = closure8() let new_guid_from_date_time x = v4 x let v5 : (int64 -> System.Guid) = closure9() let new_guid_from_timestamp x = v5 x let v6 : (string -> (System.DateTime -> string)) = closure10() let format x = v6 x let v7 : (System.DateTime -> string) = closure12() let format_iso8601 x = v7 x () 00:00:04 d #107 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 v #10 async.run_with_timeout_async / { timeout = 180 } 00:00:04 d #108 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #109 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #110 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 v #111 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...003E) x = !combine x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:04 v #112 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:04 v #11 async.run_with_timeout_async / { timeout = 180 } 00:00:04 d #113 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #114 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #115 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 v #116 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n \u0060...aw_guid x = !new_raw_guid x\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/lib/spiral/guid.spi"}} / result: 00:00:04 v #117 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/guid.spi"}} / result: 00:00:04 d #118 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #118 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #120 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #121 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #122 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #123 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #124 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 let rec closure0 () () : bool = let v0 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1 : string = "cfg!(windows)" let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 let _run_target_args'_v0 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v3 : string = "cfg!(windows)" let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 let _run_target_args'_v0 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : string = "cfg!(w...untime.InteropServices.RuntimeInformation.IsOSPlatform let v17 : bool = v16 v15 let _run_target_args'_v0 = v17 #endif #else let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform let v20 : bool = v19 v18 let _run_target_args'_v0 = v20 #endif let v21 : bool = _run_target_args'_v0 if v21 then let v27 : string = ".exe" v27 else let v28 : string = "" v28 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () 00:00:05 d #125 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 let rec closure0 () () : bool = let v0 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1 : string = "cfg!(windows)" let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 let _run_target_args'_v0 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v3 : string = "cfg!(windows)" let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 let _run_target_args'_v0 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : string = "cfg!(w...untime.InteropServices.RuntimeInformation.IsOSPlatform let v17 : bool = v16 v15 let _run_target_args'_v0 = v17 #endif #else let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform let v20 : bool = v19 v18 let _run_target_args'_v0 = v20 #endif let v21 : bool = _run_target_args'_v0 if v21 then let v27 : string = ".exe" v27 else let v28 : string = "" v28 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () 00:00:05 d #126 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 d #127 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #128 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #129 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #130 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 v #12 async.run_with_timeout_async / { timeout = 180 } 00:00:05 d #131 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #132 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #133 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #134 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #135 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #136 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #137 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 v #138 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen sm\u0027_real\n\n/// ##...tring std_string = from_std_string\n","uri":"file:///c:/home/git/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:05 v #139 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:05 d #140 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #141 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #142 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #143 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #144 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #145 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #146 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : System.Guid = null |> unbox<System.Guid> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v11 #endif #if FABLE_COMPILER_PYTHON let v14 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v1...R_PYTHON let v816 : System.Guid = v799 |> System.Guid let _run_target_args'_v800 = v816 #endif #else let v819 : System.Guid = v799 |> System.Guid let _run_target_args'_v800 = v819 #endif let v822 : System.Guid = _run_target_args'_v800 let _run_target_args'_v1 = v822 #endif let v827 : System.Guid = _run_target_args'_v1 v827 and closure1 () (v0 : string) : System.Guid = method0(v0) and closure2 () () : System.Guid = let v0 : (unit -> System.Guid) = System.Guid.NewGuid v0 () let v0 : (string -> System.Guid) = closure0() let new_guid x = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure2() let new_raw_guid x = v2 x () 00:00:05 d #147 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : System.Guid = null |> unbox<System.Guid> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v11 #endif #if FABLE_COMPILER_PYTHON let v14 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v1...R_PYTHON let v816 : System.Guid = v799 |> System.Guid let _run_target_args'_v800 = v816 #endif #else let v819 : System.Guid = v799 |> System.Guid let _run_target_args'_v800 = v819 #endif let v822 : System.Guid = _run_target_args'_v800 let _run_target_args'_v1 = v822 #endif let v827 : System.Guid = _run_target_args'_v1 v827 and closure1 () (v0 : string) : System.Guid = method0(v0) and closure2 () () : System.Guid = let v0 : (unit -> System.Guid) = System.Guid.NewGuid v0 () let v0 : (string -> System.Guid) = closure0() let new_guid x = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure2() let new_raw_guid x = v2 x () 00:00:05 d #148 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 d #149 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #150 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #151 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #152 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #153 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #154 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #155 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>] #endif type std_borrow_Cow<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>] #endif type regex_Error = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type UH0 = | UH0_0 | UH0_1 of char * UH0 and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string} and Mut...= closure30() let trim x = v13 x let v14 : ((char []) -> (string -> string)) = closure31() let trim_end x = v14 x let v15 : ((char []) -> (string -> string)) = closure35() let trim_start x = v15 x let v16 : (int32 -> (string -> string)) = closure37() let ellipsis x = v16 x let v17 : (int64 -> (string -> string)) = closure39() let ellipsis_end x = v17 x let v18 : (exn -> string) = closure41() let format_exception x = v18 x let v19 : (string -> ((string []) -> string)) = closure42() let concat_array x = v19 x let v20 : (string -> (string seq -> string)) = closure44() let concat x = v20 x let v21 : (string -> ((string []) -> string)) = closure46() let join' x = v21 x let v22 : (string -> (char [])) = closure48() let to_char_array x = v22 x () 00:00:06 d #156 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>] #endif type std_borrow_Cow<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>] #endif type regex_Error = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type UH0 = | UH0_0 | UH0_1 of char * UH0 and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string} and Mut...= closure30() let trim x = v13 x let v14 : ((char []) -> (string -> string)) = closure31() let trim_end x = v14 x let v15 : ((char []) -> (string -> string)) = closure35() let trim_start x = v15 x let v16 : (int32 -> (string -> string)) = closure37() let ellipsis x = v16 x let v17 : (int64 -> (string -> string)) = closure39() let ellipsis_end x = v17 x let v18 : (exn -> string) = closure41() let format_exception x = v18 x let v19 : (string -> ((string []) -> string)) = closure42() let concat_array x = v19 x let v20 : (string -> (string seq -> string)) = closure44() let concat x = v20 x let v21 : (string -> ((string []) -> string)) = closure46() let join' x = v21 x let v22 : (string -> (char [])) = closure48() let to_char_array x = v22 x () 00:00:06 d #157 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:06 d #158 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #159 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #160 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #161 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #162 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #163 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #164 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #164 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #166 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #167 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #168 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #169 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #170 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #170 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #172 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #173 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #174 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #175 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #176 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #176 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #178 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #179 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #180 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #181 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #182 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env...> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:08 d #183 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env...> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:08 d #184 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:08 d #185 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #186 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #187 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #188 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #189 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #190 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #191 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure26() let execute_with_options_async x = v18 x let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure27() let execution_options x = v19 x let v20 : (string -> Result<(string []), string>) = closure28() let split_args x = v20 x () 00:00:08 d #192 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure26() let execute_with_options_async x = v18 x let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure27() let execution_options x = v19 x let v20 : (string -> Result<(string []), string>) = closure28() let split_args x = v20 x () 00:00:08 d #193 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:09 d #194 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #195 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #196 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #197 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #198 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #199 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #200 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #201 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #202 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #203 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #204 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #205 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #206 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #207 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #208 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #209 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #210 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #211 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #212 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #213 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #214 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #215 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #216 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #217 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:15 d #218 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:15 d #219 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:15 d #220 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>] type std_path_PathBuf = class end #else type std_path_PathBuf = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>] #endif type std_ffi_OsString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = c...osable)) = closure34() let create_temp_dir () = v27 () let v28 : (string -> struct (string * System.IDisposable)) = closure43() let create_temp_dir' x = v28 x let v29 : (unit -> string) = closure44() let get_source_directory () = v29 () let v30 : (string -> string) = closure45() let normalize_path x = v30 x let v31 : (string -> string) = closure54() let new_file_uri x = v31 x let v32 : (unit -> string) = closure55() let get_workspace_root () = v32 () let v33 : (string -> unit) = closure57() let trace_file x = v33 x let v34 : (bool -> unit) = closure59() let init_trace_file x = v34 x let v35 : (string -> (string -> unit)) = closure60() let link_directory x = v35 x let v36 : (string -> (string -> string)) = closure62() let (</>) x = v36 x () 00:00:15 d #221 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>] type std_path_PathBuf = class end #else type std_path_PathBuf = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>] #endif type std_ffi_OsString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = c...osable)) = closure34() let create_temp_dir () = v27 () let v28 : (string -> struct (string * System.IDisposable)) = closure43() let create_temp_dir' x = v28 x let v29 : (unit -> string) = closure44() let get_source_directory () = v29 () let v30 : (string -> string) = closure45() let normalize_path x = v30 x let v31 : (string -> string) = closure54() let new_file_uri x = v31 x let v32 : (unit -> string) = closure55() let get_workspace_root () = v32 () let v33 : (string -> unit) = closure57() let trace_file x = v33 x let v34 : (bool -> unit) = closure59() let init_trace_file x = v34 x let v35 : (string -> (string -> unit)) = closure60() let link_directory x = v35 x let v36 : (string -> (string -> string)) = closure62() let (</>) x = v36 x () 00:00:15 d #222 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path Tasks.dib --retries 3"; options = { command = ../../workspace/target/release/spiral_builder.exe dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/scheduler/Tasks.dib", "--output-path", "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/scheduler/Tasks.dib" --output-path "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ ## Tasks (Polyglot) │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 v #9 > > 00:00:05 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #11 > > //// test 00:00:05 v #12 > > 00:00:05 v #13 > > open testing 00:00:06 v #14 > > 00:00:06 v #15 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 v #16 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 v #17 > > │ ## task_name │ 00:00:06 v #18 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #19 > > 00:00:06 v #20 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 v #21 > > nominal task_name = string 00:00:07 v #22 > > 00:00:07 v #23 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #24 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #25 > > │ ## manual_scheduling │ 00:00:07 v #26 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #27 > > 00:00:07 v #28 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #29 > > union manual_scheduling = 00:00:07 v #30 > > | WithSuggestion 00:00:07 v #31 > > | WithoutSuggestion 00:00:07 v #32 > > 00:00:07 v #33 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #34 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #35 > > │ ## recurrency_offset │ 00:00:07 v #36 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #37 > > 00:00:07 v #38 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #39 > > union recurrency_offset = 00:00:07 v #40 > > | Days : i32 00:00:07 v #41 > > | Weeks : i32 00:00:07 v #42 > > | Months : i32 00:00:08 v #43 > > 00:00:08 v #44 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #45 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #46 > > │ ## day_of_week │ 00:00:08 v #47 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #48 > > 00:00:08 v #49 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #50 > > union day_of_week = 00:00:08 v #51 > > | Sunday 00:00:08 v #52 > > | Monday 00:00:08 v #53 > > | Tuesday 00:00:08 v #54 > > | Wednesday 00:00:08 v #55 > > | Thursday 00:00:08 v #56 > > | Friday 00:00:08 v #57 > > | Saturday 00:00:08 v #58 > > 00:00:08 v #59 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #60 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #61 > > │ ## month │ 00:00:08 v #62 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #63 > > 00:00:08 v #64 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #65 > > union month = 00:00:08 v #66 > > | January 00:00:08 v #67 > > | February 00:00:08 v #68 > > | March 00:00:08 v #69 > > | April 00:00:08 v #70 > > | May 00:00:08 v #71 > > | June 00:00:08 v #72 > > | July 00:00:08 v #73 > > | August 00:00:08 v #74 > > | September 00:00:08 v #75 > > | October 00:00:08 v #76 > > | November 00:00:08 v #77 > > | December 00:00:08 v #78 > > 00:00:08 v #79 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #81 > > │ ## day │ 00:00:08 v #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #83 > > 00:00:08 v #84 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #85 > > nominal day = i32 00:00:09 v #86 > > 00:00:09 v #87 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #88 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #89 > > │ ## year │ 00:00:09 v #90 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #91 > > 00:00:09 v #92 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #93 > > nominal year = i32 00:00:09 v #94 > > 00:00:09 v #95 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #96 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #97 > > │ ## fixed_recurrency │ 00:00:09 v #98 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #99 > > 00:00:09 v #100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #101 > > union fixed_recurrency = 00:00:09 v #102 > > | Weekly : day_of_week 00:00:09 v #103 > > | Monthly : day 00:00:09 v #104 > > | Yearly : day * month 00:00:10 v #105 > > 00:00:10 v #106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #107 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #108 > > │ ## recurrency │ 00:00:10 v #109 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #110 > > 00:00:10 v #111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #112 > > union recurrency = 00:00:10 v #113 > > | Offset : recurrency_offset 00:00:10 v #114 > > | Fixed : list fixed_recurrency 00:00:10 v #115 > > 00:00:10 v #116 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #117 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #118 > > │ ## scheduling │ 00:00:10 v #119 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #120 > > 00:00:10 v #121 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #122 > > union scheduling = 00:00:10 v #123 > > | Manual : manual_scheduling 00:00:10 v #124 > > | Recurrent : recurrency 00:00:11 v #125 > > 00:00:11 v #126 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #127 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #128 > > │ ## task │ 00:00:11 v #129 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #130 > > 00:00:11 v #131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #132 > > type task = 00:00:11 v #133 > > { 00:00:11 v #134 > > name : task_name 00:00:11 v #135 > > scheduling : scheduling 00:00:11 v #136 > > } 00:00:11 v #137 > > 00:00:11 v #138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #139 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #140 > > │ ## date │ 00:00:11 v #141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #142 > > 00:00:11 v #143 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #144 > > type date = 00:00:11 v #145 > > { 00:00:11 v #146 > > year : year 00:00:11 v #147 > > month : month 00:00:11 v #148 > > day : day 00:00:11 v #149 > > } 00:00:12 v #150 > > 00:00:12 v #151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #153 > > │ ## status │ 00:00:12 v #154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #155 > > 00:00:12 v #156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #157 > > union status = 00:00:12 v #158 > > | Postponed : option () 00:00:12 v #159 > > 00:00:12 v #160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #162 > > │ ## event │ 00:00:12 v #163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #164 > > 00:00:12 v #165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #166 > > type event = 00:00:12 v #167 > > { 00:00:12 v #168 > > date : date 00:00:12 v #169 > > status : status 00:00:12 v #170 > > } 00:00:12 v #171 > > 00:00:12 v #172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #174 > > │ ## task_template │ 00:00:12 v #175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #176 > > 00:00:12 v #177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #178 > > type task_template = 00:00:12 v #179 > > { 00:00:12 v #180 > > task : task 00:00:12 v #181 > > events : list event 00:00:12 v #182 > > } 00:00:13 v #183 > > 00:00:13 v #184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #185 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 v #186 > > │ ## get_tasks (test) │ 00:00:13 v #187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 v #188 > > 00:00:13 v #189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #190 > > //// test 00:00:13 v #191 > > 00:00:13 v #192 > > inl get_tasks () : list task_template = 00:00:13 v #193 > > [[ 00:00:13 v #194 > > { 00:00:13 v #195 > > task = 00:00:13 v #196 > > { 00:00:13 v #197 > > name = task_name "01" 00:00:13 v #198 > > scheduling = Manual WithSuggestion 00:00:13 v #199 > > } 00:00:13 v #200 > > events = [[]] 00:00:13 v #201 > > } 00:00:13 v #202 > > { 00:00:13 v #203 > > task = 00:00:13 v #204 > > { 00:00:13 v #205 > > name = task_name "02" 00:00:13 v #206 > > scheduling = Manual WithSuggestion 00:00:13 v #207 > > } 00:00:13 v #208 > > events = [[]] 00:00:13 v #209 > > } 00:00:13 v #210 > > { 00:00:13 v #211 > > task = 00:00:13 v #212 > > { 00:00:13 v #213 > > name = task_name "03" 00:00:13 v #214 > > scheduling = Manual WithSuggestion 00:00:13 v #215 > > } 00:00:13 v #216 > > events = [[]] 00:00:13 v #217 > > } 00:00:13 v #218 > > ]] 00:00:13 v #219 > > 00:00:13 v #220 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #221 > > //// test 00:00:13 v #222 > > ///! fsharp 00:00:13 v #223 > > ///! cuda 00:00:13 v #224 > > ///! rust 00:00:13 v #225 > > ///! typescript 00:00:13 v #226 > > ///! python 00:00:13 v #227 > > 00:00:13 v #228 > > get_tasks () 00:00:13 v #229 > > |> sm'.format_debug 00:00:13 v #230 > > |> _assert sm'.contains "01" 00:00:18 v #231 > > 00:00:18 v #232 > > ╭─[ 4.86s - return value ]─────────────────────────────────────────────────────╮ 00:00:18 v #233 > > │ .py output (Cuda): │ 00:00:18 v #234 > > │ __assert / actual: 01 / expected: UH2_1(v0='01', v1=US1_0(v0=US0_0()), │ 00:00:18 v #235 > > │ v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()), v2=UH1_0(), │ 00:00:18 v #236 > > │ v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_0()))) │ 00:00:18 v #237 > > │ │ 00:00:18 v #238 > > │ .rs output: │ 00:00:18 v #239 > > │ __assert / actual: "01" / expected: "UH2_1("01", US1_0(US0_0), UH1_0, │ 00:00:18 v #240 > > │ UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", US1_0(US0_0), UH1_0, UH2_0)))" │ 00:00:18 v #241 > > │ │ 00:00:18 v #242 > > │ .ts output: │ 00:00:18 v #243 > > │ __assert / actual: 01 / expected: UH2_1 (01, US1_0 US0_0, UH1_0, UH2_1 (02, │ 00:00:18 v #244 > > │ US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, UH2_0))) │ 00:00:18 v #245 > > │ │ 00:00:18 v #246 > > │ .py output: │ 00:00:18 v #247 > > │ __assert / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0, UH1_0, UH2_1 │ 00:00:18 v #248 > > │ ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, UH2_0))) │ 00:00:18 v #249 > > │ │ 00:00:18 v #250 > > │ │ 00:00:18 v #251 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #252 > > 00:00:18 v #253 > > ╭─[ 4.87s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:18 v #254 > > │ .fsx output: │ 00:00:18 v #255 > > │ __assert / actual: "01" / expected: "UH2_1 │ 00:00:18 v #256 > > │ ("01", US1_0 US0_0, UH1_0, │ 00:00:18 v #257 > > │ UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, │ 00:00:18 v #258 > > │ UH2_0)))" │ 00:00:18 v #259 > > │ │ 00:00:18 v #260 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 v #261 > > 00:00:18 v #262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 v #263 > > //// test 00:00:18 v #264 > > ///! fsharp 00:00:18 v #265 > > ///! cuda 00:00:18 v #266 > > ///! rust 00:00:18 v #267 > > ///! typescript 00:00:18 v #268 > > ///! python 00:00:18 v #269 > > 00:00:18 v #270 > > get_tasks () 00:00:18 v #271 > > |> listm'.try_item 0i32 00:00:18 v #272 > > |> fun (Some task) => task.task.name 00:00:18 v #273 > > |> _assert_eq (task_name "01") 00:00:22 v #274 > > 00:00:22 v #275 > > ╭─[ 3.42s - return value ]─────────────────────────────────────────────────────╮ 00:00:22 v #276 > > │ .py output (Cuda): │ 00:00:22 v #277 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:22 v #278 > > │ │ 00:00:22 v #279 > > │ .rs output: │ 00:00:22 v #280 > > │ __assert_eq / actual: "01" / expected: "01" │ 00:00:22 v #281 > > │ │ 00:00:22 v #282 > > │ .ts output: │ 00:00:22 v #283 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:22 v #284 > > │ │ 00:00:22 v #285 > > │ .py output: │ 00:00:22 v #286 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:22 v #287 > > │ │ 00:00:22 v #288 > > │ │ 00:00:22 v #289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #290 > > 00:00:22 v #291 > > ╭─[ 3.42s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:22 v #292 > > │ .fsx output: │ 00:00:22 v #293 > > │ __assert_eq / actual: "01" / expected: "01" │ 00:00:22 v #294 > > │ │ 00:00:22 v #295 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #296 > 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13098 } 00:00:22 v #297 > 00:00:21 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:23 v #298 > 00:00:22 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb to html 00:00:23 v #299 > 00:00:22 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:23 v #300 > 00:00:22 v #7 ! validate(nb) 00:00:24 v #301 > 00:00:23 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:24 v #302 > 00:00:23 v #9 ! return _pygments_highlight( 00:00:24 v #303 > 00:00:23 v #10 ! [NbConvertApp] Writing 300420 bytes to c:\home\git\polyglot\apps\scheduler\Tasks.dib.html 00:00:24 v #304 > 00:00:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 860 } 00:00:24 v #305 > 00:00:23 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 860 } 00:00:24 v #306 > 00:00:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:24 v #307 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:24 v #308 > 00:00:23 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:24 v #309 > 00:00:23 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 14017 } 00:00:24 d #310 runtime.execute_with_options_async / { exit_code = 0; output_length = 17191 } 00:00:24 d #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder.exe dib --path Tasks.dib --retries 3 00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib 00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path chat_contract.dib --retries 1"; options = { command = ../../../workspace/target/release/spiral_builder.exe dib --path chat_contract.dib --retries 1; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "1"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib" --output-path "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # chat_contract │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 v #9 > > 00:00:05 v #10 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #11 > > open rust 00:00:05 v #12 > > open rust.rust_operators 00:00:06 v #13 > > 00:00:06 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 v #15 > > //// test 00:00:06 v #16 > > 00:00:06 v #17 > > open testing 00:00:07 v #18 > > 00:00:07 v #19 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #20 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #21 > > │ ## chat_contract │ 00:00:07 v #22 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #23 > > 00:00:07 v #24 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 v #25 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 v #26 > > │ ### state │ 00:00:07 v #27 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #28 > > 00:00:07 v #29 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #30 > > type state = 00:00:07 v #31 > > { 00:00:07 v #32 > > version : u32 00:00:07 v #33 > > account_set : near.iterable_set near.account_id 00:00:07 v #34 > > alias_set : near.iterable_set sm'.std_string 00:00:07 v #35 > > account_map : near.lookup_map near.account_id sm'.std_string 00:00:07 v #36 > > alias_map : near.lookup_map sm'.std_string (mapm.hash_map 00:00:07 v #37 > > near.account_id (u64 * u32)) 00:00:07 v #38 > > } 00:00:07 v #39 > > 00:00:07 v #40 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #41 > > //// test 00:00:07 v #42 > > ///! rust -c 00:00:07 v #43 > > 00:00:07 v #44 > > () 00:00:31 v #45 > > 00:00:31 v #46 > > ╭─[ 23.91s - return value ]────────────────────────────────────────────────────╮ 00:00:31 v #47 > > │ │ 00:00:31 v #48 > > │ 00:00:08 i #2 near_workspaces.print_usd / { retry = 1; │ 00:00:31 v #49 > > │ total_gas_burnt_usd = +0.000957; total_gas_burnt = 1432579057136 } │ 00:00:31 v #50 > > │ 00:00:08 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:00:31 v #51 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:00:31 v #52 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:00:31 v #53 > > │ 00:00:08 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:00:31 v #54 > > │ true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; gas_burnt = │ 00:00:31 v #55 > > │ 901314635296; tokens_burnt = 90131463529600000000 } │ 00:00:31 v #56 > > │ 00:00:08 i #5 near_workspaces.print_usd / outcome / { is_success = │ 00:00:31 v #57 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:00:31 v #58 > > │ 223182562500; tokens_burnt = 0 } │ 00:00:31 v #59 > > │ │ 00:00:31 v #60 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 v #61 > > 00:00:31 v #62 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 v #63 > > //// test 00:00:31 v #64 > > ///! rust -c 00:00:31 v #65 > > 00:00:31 v #66 > > trace Verbose (fun () => "") id 00:00:43 v #67 > > 00:00:43 v #68 > > ╭─[ 12.05s - return value ]────────────────────────────────────────────────────╮ 00:00:43 v #69 > > │ │ 00:00:43 v #70 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:00:43 v #71 > > │ total_gas_burnt_usd = +0.001033; total_gas_burnt = 1547085300625 } │ 00:00:43 v #72 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:00:43 v #73 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:00:43 v #74 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:00:43 v #75 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:00:43 v #76 > > │ true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; gas_burnt = │ 00:00:43 v #77 > > │ 1015820878785; tokens_burnt = 101582087878500000000 } │ 00:00:43 v #78 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success = │ 00:00:43 v #79 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:00:43 v #80 > > │ 223182562500; tokens_burnt = 0 } │ 00:00:43 v #81 > > │ │ 00:00:43 v #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #83 > > 00:00:43 v #84 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:43 v #85 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:43 v #86 > > │ ### new │ 00:00:43 v #87 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:43 v #88 > > 00:00:43 v #89 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:43 v #90 > > inl new () : state = 00:00:43 v #91 > > { 00:00:43 v #92 > > version = 2 00:00:43 v #93 > > account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set 00:00:43 v #94 > > alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set 00:00:43 v #95 > > account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map 00:00:43 v #96 > > alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map 00:00:43 v #97 > > 00:00:43 v #98 > > } 00:00:44 v #99 > > 00:00:44 v #100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 v #101 > > //// test 00:00:44 v #102 > > ///! rust -c 00:00:44 v #103 > > 00:00:44 v #104 > > inl state = new () 00:00:44 v #105 > > trace Verbose (fun () => "chat_contract") fun () => { state = state |> 00:00:44 v #106 > > sm'.format_debug } 00:00:44 v #107 > > trace Verbose (fun () => "") id 00:01:30 v #108 > > 00:01:30 v #109 > > ╭─[ 46.34s - return value ]────────────────────────────────────────────────────╮ 00:01:30 v #110 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet { elements: │ 00:01:30 v #111 > > │ Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │ 00:01:30 v #112 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │ 00:01:30 v #113 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: [97, │ 00:01:30 v #114 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:01:30 v #115 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │ 00:01:30 v #116 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, │ 00:01:30 v #117 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) } │ 00:01:30 v #118 > > │ │ 00:01:30 v #119 > > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; │ 00:01:30 v #120 > > │ total_gas_burnt_usd = +0.001326; total_gas_burnt = 1984926121425 } │ 00:01:30 v #121 > > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:01:30 v #122 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:01:30 v #123 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:01:30 v #124 > > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:01:30 v #125 > > │ true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120; gas_burnt = │ 00:01:30 v #126 > > │ 1676844262085; tokens_burnt = 167684426208500000000 } │ 00:01:30 v #127 > > │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{ │ 00:01:30 v #128 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } │ 00:01:30 v #129 > > │ │ 00:01:30 v #130 > > │ │ 00:01:30 v #131 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet { elements: │ 00:01:30 v #132 > > │ Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │ 00:01:30 v #133 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │ 00:01:30 v #134 > > │ 101,...262085; tokens_burnt = 167684426208500000000 } │ 00:01:30 v #135 > > │ 00:00:19 w #17 spiral_wasm.run / Error error / { retry = 3; error = "{ │ 00:01:30 v #136 > > │ receipt_outcomes_len = 1; retry = 3; receipt_failures = [] }" } │ 00:01:30 v #137 > > │ │ 00:01:30 v #138 > > │ │ 00:01:30 v #139 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet { elements: │ 00:01:30 v #140 > > │ Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │ 00:01:30 v #141 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │ 00:01:30 v #142 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: [97, │ 00:01:30 v #143 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:01:30 v #144 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │ 00:01:30 v #145 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, │ 00:01:30 v #146 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) } │ 00:01:30 v #147 > > │ │ 00:01:30 v #148 > > │ 00:00:25 i #20 near_workspaces.print_usd / { retry = 4; │ 00:01:30 v #149 > > │ total_gas_burnt_usd = +0.001475; total_gas_burnt = 2208108683925 } │ 00:01:30 v #150 > > │ 00:00:25 i #21 near_workspaces.print_usd / outcome / { is_success = │ 00:01:30 v #151 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:01:30 v #152 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:01:30 v #153 > > │ 00:00:25 i #22 near_workspaces.print_usd / outcome / { is_success = │ 00:01:30 v #154 > > │ true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120; gas_burnt = │ 00:01:30 v #155 > > │ 1676844262085; tokens_burnt = 167684426208500000000 } │ 00:01:30 v #156 > > │ 00:00:25 i #23 near_workspaces.print_usd / outcome / { is_success = │ 00:01:30 v #157 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:01:30 v #158 > > │ 223182562500; tokens_burnt = 0 } │ 00:01:30 v #159 > > │ │ 00:01:30 v #160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:30 v #161 > > 00:01:30 v #162 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:30 v #163 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:30 v #164 > > │ ### is_valid_alias │ 00:01:30 v #165 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:30 v #166 > > 00:01:30 v #167 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:30 v #168 > > inl is_valid_alias (alias : sm'.std_string) : bool = 00:01:30 v #169 > > inl alias' = alias |> sm'.from_std_string 00:01:30 v #170 > > inl alias_len = alias' |> sm'.length 00:01:30 v #171 > > 00:01:30 v #172 > > alias_len > 0i32 00:01:30 v #173 > > && alias_len < 64 00:01:30 v #174 > > && (alias' |> sm'.starts_with "-" |> not) 00:01:30 v #175 > > && (alias' |> sm'.ends_with "-" |> not) 00:01:30 v #176 > > && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |> 00:01:30 v #177 > > sm'.char_is_alphanumeric) || c = '-')) 00:01:30 v #178 > > 00:01:30 v #179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:30 v #180 > > //// test 00:01:30 v #181 > > ///! rust -c 00:01:30 v #182 > > 00:01:30 v #183 > > "" 00:01:30 v #184 > > |> sm'.to_std_string 00:01:30 v #185 > > |> is_valid_alias 00:01:30 v #186 > > |> _assert_eq false 00:01:51 v #187 > > 00:01:51 v #188 > > ╭─[ 21.08s - return value ]────────────────────────────────────────────────────╮ 00:01:51 v #189 > > │ │ 00:01:51 v #190 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:01:51 v #191 > > │ total_gas_burnt_usd = +0.000971; total_gas_burnt = 1454152635223 } │ 00:01:51 v #192 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:01:51 v #193 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:01:51 v #194 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:01:51 v #195 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:01:51 v #196 > > │ true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; gas_burnt = │ 00:01:51 v #197 > > │ 922888213383; tokens_burnt = 92288821338300000000 } │ 00:01:51 v #198 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success = │ 00:01:51 v #199 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:01:51 v #200 > > │ 223182562500; tokens_burnt = 0 } │ 00:01:51 v #201 > > │ │ 00:01:51 v #202 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:51 v #203 > > 00:01:51 v #204 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:51 v #205 > > //// test 00:01:51 v #206 > > ///! rust -c 00:01:51 v #207 > > 00:01:51 v #208 > > "a-" 00:01:51 v #209 > > |> sm'.to_std_string 00:01:51 v #210 > > |> is_valid_alias 00:01:51 v #211 > > |> _assert_eq false 00:02:12 v #212 > > 00:02:12 v #213 > > ╭─[ 20.92s - return value ]────────────────────────────────────────────────────╮ 00:02:12 v #214 > > │ │ 00:02:12 v #215 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:02:12 v #216 > > │ total_gas_burnt_usd = +0.000973; total_gas_burnt = 1456118952646 } │ 00:02:12 v #217 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:02:12 v #218 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:02:12 v #219 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:02:12 v #220 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:02:12 v #221 > > │ true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; gas_burnt = │ 00:02:12 v #222 > > │ 924854530806; tokens_burnt = 92485453080600000000 } │ 00:02:12 v #223 > > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { is_success = │ 00:02:12 v #224 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:02:12 v #225 > > │ 223182562500; tokens_burnt = 0 } │ 00:02:12 v #226 > > │ │ 00:02:12 v #227 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:12 v #228 > > 00:02:12 v #229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:12 v #230 > > //// test 00:02:12 v #231 > > ///! rust -c 00:02:12 v #232 > > 00:02:12 v #233 > > "a-a" 00:02:12 v #234 > > |> sm'.to_std_string 00:02:12 v #235 > > |> is_valid_alias 00:02:12 v #236 > > |> _assert_eq true 00:02:45 v #237 > > 00:02:45 v #238 > > ╭─[ 32.92s - return value ]────────────────────────────────────────────────────╮ 00:02:45 v #239 > > │ │ 00:02:45 v #240 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:02:45 v #241 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234530149945 } │ 00:02:45 v #242 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #243 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:02:45 v #244 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:02:45 v #245 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #246 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt = │ 00:02:45 v #247 > > │ 926448290605; tokens_burnt = 92644829060500000000 } │ 00:02:45 v #248 > > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{ │ 00:02:45 v #249 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } │ 00:02:45 v #250 > > │ │ 00:02:45 v #251 > > │ │ 00:02:45 v #252 > > │ │ 00:02:45 v #253 > > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; │ 00:02:45 v #254 > > │ total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234530149945 } │ 00:02:45 v #255 > > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #256 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:02:45 v #257 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:02:45 v #258 > > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #259 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt = │ 00:02:45 v #260 > > │ 926448290605; tokens_burnt = 92644829060500000000 } │ 00:02:45 v #261 > > │ 00:00:13 w #11 spiral_wasm.run / Error error / { retry = 2; error = "{ │ 00:02:45 v #262 > > │ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } │ 00:02:45 v #263 > > │ │ 00:02:45 v #264 > > │ │ 00:02:45 v #265 > > │ │ 00:02:45 v #266 > > │ 00:00:18 i #14 near_workspaces.print_usd / { retry = 3; │ 00:02:45 v #267 > > │ total_gas_burnt_usd = +0.000974; total_gas_burnt = 1457712712445 } │ 00:02:45 v #268 > > │ 00:00:18 i #15 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #269 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:02:45 v #270 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:02:45 v #271 > > │ 00:00:18 i #16 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #272 > > │ true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; gas_burnt = │ 00:02:45 v #273 > > │ 926448290605; tokens_burnt = 92644829060500000000 } │ 00:02:45 v #274 > > │ 00:00:18 i #17 near_workspaces.print_usd / outcome / { is_success = │ 00:02:45 v #275 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:02:45 v #276 > > │ 223182562500; tokens_burnt = 0 } │ 00:02:45 v #277 > > │ │ 00:02:45 v #278 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:45 v #279 > > 00:02:45 v #280 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:45 v #281 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:45 v #282 > > │ ### generate_cid │ 00:02:45 v #283 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:45 v #284 > > 00:02:45 v #285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:45 v #286 > > inl generate_cid (content : am'.vec u8) : sm'.std_string = 00:02:45 v #287 > > !\($'" fn encode_u64(value: u64) -> Vec<u8> { //"') : () 00:02:45 v #288 > > !\($'" let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : () 00:02:45 v #289 > > !\($'" unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') : 00:02:45 v #290 > > () 00:02:45 v #291 > > !\($'" } //"') : () 00:02:45 v #292 > > 00:02:45 v #293 > > !\($'" fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : () 00:02:45 v #294 > > !\($'" let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : () 00:02:45 v #295 > > !\($'" sha2::Digest::update(&mut hasher, content); //"') : () 00:02:45 v #296 > > !\($'" sha2::Digest::finalize(hasher).to_vec() //"') : () 00:02:45 v #297 > > !\($'" } //"') : () 00:02:45 v #298 > > 00:02:45 v #299 > > !\($'" let version: u8 = 1; //"') : () 00:02:45 v #300 > > !\($'" let codec_raw: u64 = 0x55; //"') : () 00:02:45 v #301 > > 00:02:45 v #302 > > !\($'" let codec_bytes = encode_u64(codec_raw); //"') : () 00:02:45 v #303 > > !\($'" let hash_result = sha256_hash(&!content); //"') : () 00:02:45 v #304 > > !\($'" let multihash = std::iter::once(0x12) //"') : () 00:02:45 v #305 > > !\($'" .chain(std::iter::once(32)) //"') : () 00:02:45 v #306 > > !\($'" .chain(hash_result.into_iter()) //"') : () 00:02:45 v #307 > > !\($'" .collect(); //"') : () 00:02:45 v #308 > > !\($'" let cid_bytes = [[vec\![[version]], codec_bytes, 00:02:45 v #309 > > multihash]].concat(); //"') : () 00:02:45 v #310 > > !\($'" let result = multibase::encode(multibase::Base::Base32Lower, 00:02:45 v #311 > > &cid_bytes); //"') : () 00:02:45 v #312 > > !\($'"result"') 00:02:46 v #313 > > 00:02:46 v #314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:46 v #315 > > //// test 00:02:46 v #316 > > ///! rust -c -d multibase sha2 unsigned-varint 00:02:46 v #317 > > 00:02:46 v #318 > > ;[[]] 00:02:46 v #319 > > |> am'.to_vec 00:02:46 v #320 > > |> generate_cid 00:02:46 v #321 > > |> sm'.from_std_string 00:02:46 v #322 > > |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku" 00:03:44 v #323 > > 00:03:44 v #324 > > ╭─[ 58.15s - return value ]────────────────────────────────────────────────────╮ 00:03:44 v #325 > > │ │ 00:03:44 v #326 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:03:44 v #327 > > │ total_gas_burnt_usd = +0.000876; total_gas_burnt = 1312006740624 } │ 00:03:44 v #328 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #329 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:03:44 v #330 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:03:44 v #331 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #332 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt = │ 00:03:44 v #333 > > │ 1003924881284; tokens_burnt = 100392488128400000000 } │ 00:03:44 v #334 > > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = 1; error = "{ │ 00:03:44 v #335 > > │ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } │ 00:03:44 v #336 > > │ │ 00:03:44 v #337 > > │ │ 00:03:44 v #338 > > │ │ 00:03:44 v #339 > > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; │ 00:03:44 v #340 > > │ total_gas_burnt_usd = +0.000876; total_gas_burnt = 1312006740624 } │ 00:03:44 v #341 > > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #342 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:03:44 v #343 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:03:44 v #344 > > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #345 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt = │ 00:03:44 v #346 > > │ 1003924881284; tokens_burnt = 100392488128400000000 } │ 00:03:44 v #347 > > │ 00:00:13 w #11 spiral_wasm.run / Error error / { retry = 2; error = "{ │ 00:03:44 v #348 > > │ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } │ 00:03:44 v #349 > > │ │ 00:03:44 v #350 > > │ │ 00:03:44 v #351 > > │ │ 00:03:44 v #352 > > │ 00:00:19 i #14 near_workspaces.print_usd / { retry = 3; │ 00:03:44 v #353 > > │ total_gas_burnt_usd = +0.000876; total_gas_burnt ...r = "{ │ 00:03:44 v #354 > > │ receipt_outcomes_len = 1; retry = 6; receipt_failures = [] }" } │ 00:03:44 v #355 > > │ │ 00:03:44 v #356 > > │ │ 00:03:44 v #357 > > │ │ 00:03:44 v #358 > > │ 00:00:47 i #38 near_workspaces.print_usd / { retry = 7; │ 00:03:44 v #359 > > │ total_gas_burnt_usd = +0.000876; total_gas_burnt = 1312006740624 } │ 00:03:44 v #360 > > │ 00:00:47 i #39 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #361 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:03:44 v #362 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:03:44 v #363 > > │ 00:00:47 i #40 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #364 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt = │ 00:03:44 v #365 > > │ 1003924881284; tokens_burnt = 100392488128400000000 } │ 00:03:44 v #366 > > │ 00:00:47 w #41 spiral_wasm.run / Error error / { retry = 7; error = "{ │ 00:03:44 v #367 > > │ receipt_outcomes_len = 1; retry = 7; receipt_failures = [] }" } │ 00:03:44 v #368 > > │ │ 00:03:44 v #369 > > │ │ 00:03:44 v #370 > > │ │ 00:03:44 v #371 > > │ 00:00:53 i #44 near_workspaces.print_usd / { retry = 8; │ 00:03:44 v #372 > > │ total_gas_burnt_usd = +0.001026; total_gas_burnt = 1535189303124 } │ 00:03:44 v #373 > > │ 00:00:53 i #45 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #374 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:03:44 v #375 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:03:44 v #376 > > │ 00:00:53 i #46 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #377 > > │ true; gas_burnt_usd = +0.000671; tokens_burnt_usd = +0.000671; gas_burnt = │ 00:03:44 v #378 > > │ 1003924881284; tokens_burnt = 100392488128400000000 } │ 00:03:44 v #379 > > │ 00:00:53 i #47 near_workspaces.print_usd / outcome / { is_success = │ 00:03:44 v #380 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:03:44 v #381 > > │ 223182562500; tokens_burnt = 0 } │ 00:03:44 v #382 > > │ │ 00:03:44 v #383 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:44 v #384 > > 00:03:44 v #385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #386 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:44 v #387 > > │ ### claim_alias │ 00:03:44 v #388 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:44 v #389 > > 00:03:44 v #390 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #391 > > inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) : 00:03:44 v #392 > > () = 00:03:44 v #393 > > inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) = 00:03:44 v #394 > > !\($'$"&mut !state.1"') 00:03:44 v #395 > > 00:03:44 v #396 > > inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) = 00:03:44 v #397 > > !\($'$"&mut !state.2"') 00:03:44 v #398 > > 00:03:44 v #399 > > inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id 00:03:44 v #400 > > sm'.std_string)) = 00:03:44 v #401 > > !\($'$"&mut !state.3"') 00:03:44 v #402 > > 00:03:44 v #403 > > inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string 00:03:44 v #404 > > (mapm.hash_map near.account_id (u64 * u32)))) = 00:03:44 v #405 > > !\($'$"&mut !state.4"') 00:03:44 v #406 > > 00:03:44 v #407 > > inl signer_account_id = near.signer_account_id () 00:03:44 v #408 > > inl predecessor_account_id = near.predecessor_account_id () 00:03:44 v #409 > > inl block_timestamp = near.block_timestamp () 00:03:44 v #410 > > 00:03:44 v #411 > > trace Debug 00:03:44 v #412 > > fun () => "chat_contract.claim_alias" 00:03:44 v #413 > > fun () => { 00:03:44 v #414 > > alias 00:03:44 v #415 > > block_timestamp 00:03:44 v #416 > > signer_account_id = signer_account_id |> sm'.to_string' 00:03:44 v #417 > > predecessor_account_id = predecessor_account_id |> sm'.to_string' 00:03:44 v #418 > > } 00:03:44 v #419 > > 00:03:44 v #420 > > if alias |> is_valid_alias |> not 00:03:44 v #421 > > then near.panic_str "chat_contract.claim_alias / invalid alias" . true 00:03:44 v #422 > > else false 00:03:44 v #423 > > |> ignore 00:03:44 v #424 > > 00:03:44 v #425 > > inl account_alias = 00:03:44 v #426 > > account_map 00:03:44 v #427 > > |> near.lookup_get signer_account_id 00:03:44 v #428 > > |> optionm'.cloned 00:03:44 v #429 > > 00:03:44 v #430 > > match account_alias |> optionm'.unbox with 00:03:44 v #431 > > | Some account_alias when account_alias =. alias => 00:03:44 v #432 > > trace Warning 00:03:44 v #433 > > fun () => "chat_contract.claim_alias / alias already claimed" 00:03:44 v #434 > > fun () => { account_alias = account_alias |> sm'.format_debug } 00:03:44 v #435 > > | account_alias' => 00:03:44 v #436 > > trace Debug 00:03:44 v #437 > > fun () => "chat_contract.claim_alias" 00:03:44 v #438 > > fun () => { account_alias = account_alias |> sm'.format_debug } 00:03:44 v #439 > > 00:03:44 v #440 > > match account_alias' with 00:03:44 v #441 > > | Some account_alias => 00:03:44 v #442 > > !\($'" !alias_map //"') : () 00:03:44 v #443 > > !\($'" .get_mut(&!account_alias) //"') : () 00:03:44 v #444 > > !\($'" .unwrap() //"') : () 00:03:44 v #445 > > !\\(signer_account_id, $'" .remove(&$0); //"') : () 00:03:44 v #446 > > | None => () 00:03:44 v #447 > > 00:03:44 v #448 > > !\\((signer_account_id, alias), $'" !account_map.insert($0.clone(), 00:03:44 v #449 > > $1.clone()); //"') : () 00:03:44 v #450 > > 00:03:44 v #451 > > account_set |> near.iterable_set_insert signer_account_id |> ignore 00:03:44 v #452 > > alias_set |> near.iterable_set_insert alias |> ignore 00:03:44 v #453 > > 00:03:44 v #454 > > !\\(alias, $'" let new_alias_account_map = match !alias_map.get(&$0) { 00:03:44 v #455 > > //"') : () 00:03:44 v #456 > > !\($'" None => { //"') : () 00:03:44 v #457 > > !\($'" let mut new_map = std::collections::HashMap::new(); //"') : 00:03:44 v #458 > > () 00:03:44 v #459 > > !\\((signer_account_id, block_timestamp), $'" new_map.insert($0, 00:03:44 v #460 > > ($1, 0u32)); //"') : () 00:03:44 v #461 > > !\($'" new_map //"') : () 00:03:44 v #462 > > !\($'" } //"') : () 00:03:44 v #463 > > !\($'" Some(accounts) => { //"') : () 00:03:44 v #464 > > !\($'" let mut accounts_vec = accounts.iter().collect::<Vec<_>>(); 00:03:44 v #465 > > //"') : () 00:03:44 v #466 > > !\($'" accounts_vec.sort_unstable_by_key(|(_, (_, index))| index); 00:03:44 v #467 > > //"') : () 00:03:44 v #468 > > !\($'" let mut new_map = accounts_vec //"') : () 00:03:44 v #469 > > !\($'" .iter() //"') : () 00:03:44 v #470 > > !\($'" .enumerate() //"') : () 00:03:44 v #471 > > !\($'" .map(|(i, (signer_account_id, (timestamp, _)))| { //"') : 00:03:44 v #472 > > () 00:03:44 v #473 > > !\($'" ((*signer_account_id).clone(), (*timestamp, i as u32)) 00:03:44 v #474 > > //"') : () 00:03:44 v #475 > > !\($'" }) //"') : () 00:03:44 v #476 > > !\($'" .collect::<std::collections::HashMap<_, _>>(); //"') : () 00:03:44 v #477 > > !\\(signer_account_id, $'" new_map.insert($0, (!block_timestamp, 00:03:44 v #478 > > accounts_vec.len() as u32)); //"') : () 00:03:44 v #479 > > !\($'" new_map //"') : () 00:03:44 v #480 > > !\($'" } //"') : () 00:03:44 v #481 > > !\($'" }; //"') : () 00:03:44 v #482 > > 00:03:44 v #483 > > !\\(alias, $'" !alias_map.insert($0, new_alias_account_map); //"') : () 00:03:44 v #484 > > 00:03:44 v #485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #486 > > //// test 00:03:44 v #487 > > ///! rust -c 00:03:44 v #488 > > 00:03:44 v #489 > > inl state = new () 00:03:44 v #490 > > inl version = state.version 00:03:44 v #491 > > inl account_set = state.account_set 00:03:44 v #492 > > inl alias_set = state.alias_set 00:03:44 v #493 > > inl account_map = state.account_map 00:03:44 v #494 > > inl alias_map = state.alias_map 00:03:44 v #495 > > inl version = join version 00:03:44 v #496 > > inl account_set = join account_set 00:03:44 v #497 > > inl alias_set = join alias_set 00:03:44 v #498 > > inl account_map = join account_map 00:03:44 v #499 > > inl alias_map = join alias_map 00:03:44 v #500 > > inl state : rust.ref (rust.mut' state) = 00:03:44 v #501 > > !\\( 00:03:44 v #502 > > version, 00:03:44 v #503 > > $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"' 00:03:44 v #504 > > ) 00:03:44 v #505 > > 00:03:44 v #506 > > "alias1" 00:03:44 v #507 > > |> sm'.to_std_string 00:03:44 v #508 > > |> claim_alias state 00:03:44 v #509 > > 00:03:44 v #510 > > trace Verbose 00:03:44 v #511 > > fun () => "chat_contract" 00:03:44 v #512 > > fun () => { state = state |> sm'.format_debug } 00:03:44 v #513 > > 00:03:44 v #514 > > trace Debug (fun () => "") id 00:04:33 v #515 > > 00:04:33 v #516 > > ╭─[ 48.57s - return value ]────────────────────────────────────────────────────╮ 00:04:33 v #517 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = "alias1"; │ 00:04:33 v #518 > > │ block_timestamp = 1735533915222995989; signer_account_id = │ 00:04:33 v #519 > > │ "dev-20241230044513-21208307385467"; predecessor_account_id = │ 00:04:33 v #520 > > │ "dev-20241230044513-21208307385467" } │ 00:04:33 v #521 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None } │ 00:04:33 v #522 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet { elements: │ 00:04:33 v #523 > > │ Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │ 00:04:33 v #524 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │ 00:04:33 v #525 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: [97, │ 00:04:33 v #526 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:04:33 v #527 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │ 00:04:33 v #528 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, │ 00:04:33 v #529 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) } │ 00:04:33 v #530 > > │ │ 00:04:33 v #531 > > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; │ 00:04:33 v #532 > > │ total_gas_burnt_usd = +0.002519; total_gas_burnt = 3771155334843 } │ 00:04:33 v #533 > > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:04:33 v #534 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:04:33 v #535 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:04:33 v #536 > > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:04:33 v #537 > > │ true; gas_burnt_usd = +0.002313; tokens_burnt_usd = +0.002313; gas_burnt = │ 00:04:33 v #538 > > │ 3463073475503; tokens_burnt = 346307347550300000000 } │ 00:04:33 v #539 > > │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry = 1; │ 00:04:33 v #540 > > │ error...ner_account_id = "dev-20241230044533-10018202634747"; │ 00:04:33 v #541 > > │ predecessor_account_id = "dev-20241230044533-10018202634747" } │ 00:04:33 v #542 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None } │ 00:04:33 v #543 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet { elements: │ 00:04:33 v #544 > > │ Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, │ 00:04:33 v #545 > > │ 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, │ 00:04:33 v #546 > > │ 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: [97, │ 00:04:33 v #547 > > │ 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:04:33 v #548 > > │ 97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, │ 00:04:33 v #549 > > │ 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, │ 00:04:33 v #550 > > │ 108, 105, 97, 115, 95, 109, 97, 112] }) } │ 00:04:33 v #551 > > │ │ 00:04:33 v #552 > > │ 00:00:26 i #20 near_workspaces.print_usd / { retry = 4; │ 00:04:33 v #553 > > │ total_gas_burnt_usd = +0.002668; total_gas_burnt = 3994337897343 } │ 00:04:33 v #554 > > │ 00:00:26 i #21 near_workspaces.print_usd / outcome / { is_success = │ 00:04:33 v #555 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:04:33 v #556 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:04:33 v #557 > > │ 00:00:26 i #22 near_workspaces.print_usd / outcome / { is_success = │ 00:04:33 v #558 > > │ true; gas_burnt_usd = +0.002313; tokens_burnt_usd = +0.002313; gas_burnt = │ 00:04:33 v #559 > > │ 3463073475503; tokens_burnt = 346307347550300000000 } │ 00:04:33 v #560 > > │ 00:00:26 i #23 near_workspaces.print_usd / outcome / { is_success = │ 00:04:33 v #561 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:04:33 v #562 > > │ 223182562500; tokens_burnt = 0 } │ 00:04:33 v #563 > > │ │ 00:04:33 v #564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:33 v #565 > > 00:04:33 v #566 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #567 > > //// test 00:04:33 v #568 > > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\" 00:04:33 v #569 > > 00:04:33 v #570 > > "" 00:04:33 v #571 > > |> sm'.to_std_string 00:04:33 v #572 > > |> claim_alias ( 00:04:33 v #573 > > inl state = new () 00:04:33 v #574 > > inl version = state.version 00:04:33 v #575 > > inl account_set = state.account_set 00:04:33 v #576 > > inl alias_set = state.alias_set 00:04:33 v #577 > > inl account_map = state.account_map 00:04:33 v #578 > > inl alias_map = state.alias_map 00:04:33 v #579 > > !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map, 00:04:33 v #580 > > !alias_map)"') 00:04:33 v #581 > > ) 00:04:33 v #582 > > trace Debug (fun () => "") id 00:05:02 v #583 > > 00:05:02 v #584 > > ╭─[ 28.84s - return value ]────────────────────────────────────────────────────╮ 00:05:02 v #585 > > │ │ 00:05:02 v #586 > > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; │ 00:05:02 v #587 > > │ total_gas_burnt_usd = +0.001145; total_gas_burnt = 1713840443085 } │ 00:05:02 v #588 > > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { is_success = │ 00:05:02 v #589 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:05:02 v #590 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:05:02 v #591 > > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { is_success = │ 00:05:02 v #592 > > │ false; gas_burnt_usd = +0.000939; tokens_burnt_usd = +0.000939; gas_burnt = │ 00:05:02 v #593 > > │ 1405758583745; tokens_burnt = 140575858374500000000 } │ 00:05:02 v #594 > > │ 00:00:06 c #5 spiral_wasm.run / Ok (Some error) / { retry = 1; error = │ 00:05:02 v #595 > > │ { receipt_outcomes_len = 1; retry = 1; receipt_failures = [ │ 00:05:02 v #596 > > │ ExecutionOutcome { │ 00:05:02 v #597 > > │ transaction_hash: nH27w1qiCU6UGz71LLZW4GiSivSWa2U51BdibEGdRir, │ 00:05:02 v #598 > > │ block_hash: BGckmxg3b6suTnv7UWbia7mNYBYCYzXm91TEsDAA7ynr, │ 00:05:02 v #599 > > │ logs: [], │ 00:05:02 v #600 > > │ receipt_ids: [ │ 00:05:02 v #601 > > │ AKqQ2yWU5rKbrM9LN1iFuMhLS5WFDJMADFR5g1SmvH8e, │ 00:05:02 v #602 > > │ ], │ 00:05:02 v #603 > > │ gas_burnt: NearGas { │ 00:05:02 v #604 > > │ inner: 1405758583745, │ 00:05:02 v #605 > > │ }, │ 00:05:02 v #606 > > │ tokens_burnt: NearToken { │ 00:05:02 v #607 > > │ inner: 140575858374500000000, │ 00:05:02 v #608 > > │ }, │ 00:05:02 v #609 > > │ executor_id: AccountId( │ 00:05:02 v #610 > > │ "dev-20241230044602-61770027195482", │ 00:05:02 v #611 > > │ ), │ 00:05:02 v #612 > > │ status: Failure(ActionError(ActionError { index: Some(0), kind: │ 00:05:02 v #613 > > │ FunctionCallError(ExecutionError("Smart contract panicked: │ 00:05:02 v #614 > > │ chat_contract.claim_alias / invalid alias")) })), │ 00:05:02 v #615 > > │ }, │ 00:05:02 v #616 > > │ ] } } │ 00:05:02 v #617 > > │ │ 00:05:02 v #618 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 v #619 > > 00:05:02 v #620 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 v #621 > > //// test 00:05:02 v #622 > > ///! rust -cd borsh 00:05:02 v #623 > > 00:05:02 v #624 > > inl state' = new () 00:05:02 v #625 > > inl state = state' 00:05:02 v #626 > > inl version = state.version 00:05:02 v #627 > > inl account_set = state.account_set 00:05:02 v #628 > > inl alias_set = state.alias_set 00:05:02 v #629 > > inl account_map = state.account_map 00:05:02 v #630 > > inl alias_map = state.alias_map 00:05:02 v #631 > > inl version = join version 00:05:02 v #632 > > inl account_set = join account_set 00:05:02 v #633 > > inl alias_set = join alias_set 00:05:02 v #634 > > inl account_map = join account_map 00:05:02 v #635 > > inl alias_map = join alias_map 00:05:02 v #636 > > 00:05:02 v #637 > > inl state = 00:05:02 v #638 > > !\\( 00:05:02 v #639 > > (version, account_set, alias_set), 00:05:02 v #640 > > $'$"&mut ($0, $1, $2, !account_map, !alias_map)"' 00:05:02 v #641 > > ) 00:05:02 v #642 > > 00:05:02 v #643 > > "alias1" 00:05:02 v #644 > > |> sm'.to_std_string 00:05:02 v #645 > > |> claim_alias state 00:05:02 v #646 > > 00:05:02 v #647 > > "alias1" 00:05:02 v #648 > > |> sm'.to_std_string 00:05:02 v #649 > > |> claim_alias state 00:05:02 v #650 > > 00:05:02 v #651 > > "alias1" 00:05:02 v #652 > > |> sm'.to_std_string 00:05:02 v #653 > > |> claim_alias state 00:05:02 v #654 > > 00:05:02 v #655 > > inl account_set' : rust.ref (near.iterable_set near.account_id) = 00:05:02 v #656 > > !\($'$"&!state.1"') 00:05:02 v #657 > > 00:05:02 v #658 > > inl alias_set' : rust.ref (near.iterable_set sm'.std_string) = 00:05:02 v #659 > > !\($'$"&!state.2"') 00:05:02 v #660 > > 00:05:02 v #661 > > inl account_set' = 00:05:02 v #662 > > account_set' 00:05:02 v #663 > > |> iter.iter_ref'' 00:05:02 v #664 > > |> iter.cloned 00:05:02 v #665 > > |> iter_collect 00:05:02 v #666 > > 00:05:02 v #667 > > inl alias_set' = 00:05:02 v #668 > > alias_set' 00:05:02 v #669 > > |> iter.iter_ref'' 00:05:02 v #670 > > |> iter.cloned 00:05:02 v #671 > > |> iter_collect 00:05:02 v #672 > > |> am'.vec_map sm'.from_std_string 00:05:02 v #673 > > 00:05:02 v #674 > > trace Verbose 00:05:02 v #675 > > fun () => "chat_contract" 00:05:02 v #676 > > fun () => { 00:05:02 v #677 > > account_set' = account_set' |> sm'.format_debug 00:05:02 v #678 > > alias_set' = alias_set' |> sm'.format_debug 00:05:02 v #679 > > state = state |> sm'.format_debug 00:05:02 v #680 > > } 00:05:02 v #681 > > 00:05:02 v #682 > > trace Debug (fun () => "") id 00:05:02 v #683 > > 00:05:02 v #684 > > account_set' 00:05:02 v #685 > > |> am'.vec_len 00:05:02 v #686 > > |> convert 00:05:02 v #687 > > |> _assert_eq 1u32 00:05:02 v #688 > > 00:05:02 v #689 > > alias_set' 00:05:02 v #690 > > |> am'.from_vec_base 00:05:02 v #691 > > |> _assert_eq' ;[[ "alias1" ]] 00:05:46 v #692 > > 00:05:46 v #693 > > ╭─[ 44.39s - return value ]────────────────────────────────────────────────────╮ 00:05:46 v #694 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = "alias1"; │ 00:05:46 v #695 > > │ block_timestamp = 1735533995017302880; signer_account_id = │ 00:05:46 v #696 > > │ "dev-20241230044633-42291688747000"; predecessor_account_id = │ 00:05:46 v #697 > > │ "dev-20241230044633-42291688747000" } │ 00:05:46 v #698 > > │ 00:00:00 d #2 chat_contract.claim_alias / { account_alias = None } │ 00:05:46 v #699 > > │ 00:00:00 d #3 chat_contract.claim_alias / { alias = "alias1"; │ 00:05:46 v #700 > > │ block_timestamp = 1735533995017302880; signer_account_id = │ 00:05:46 v #701 > > │ "dev-20241230044633-42291688747000"; predecessor_account_id = │ 00:05:46 v #702 > > │ "dev-20241230044633-42291688747000" } │ 00:05:46 v #703 > > │ 00:00:00 d #4 chat_contract.claim_alias / { account_alias = │ 00:05:46 v #704 > > │ Some("alias1") } │ 00:05:46 v #705 > > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = "alias1"; │ 00:05:46 v #706 > > │ block_timestamp = 1735533995017302880; signer_account_id = │ 00:05:46 v #707 > > │ "dev-20241230044633-42291688747000"; predecessor_account_id = │ 00:05:46 v #708 > > │ "dev-20241230044633-42291688747000" } │ 00:05:46 v #709 > > │ 00:00:00 d #6 chat_contract.claim_alias / { account_alias = │ 00:05:46 v #710 > > │ Some("alias1") } │ 00:05:46 v #711 > > │ 00:00:00 v #7 chat_contract / { account_set' = [ │ 00:05:46 v #712 > > │ AccountId("dev-20241230044633-42291688747000")]; alias_set' = ["alias1"]; │ 00:05:46 v #713 > > │ state = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, │ 00:05:46 v #714 > > │ 111, 117, 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:05:46 v #715 > > │ 97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { │ 00:05:46 v #716 > > │ elements: Vector { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, │ 00:05:46 v #717 > > │ 116, 118] }, index: LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, │ 00:05:46 v #718 > > │ 101, 116, 109] } }, LookupMap { prefix: [97, 99, 99, ...5477561865294" } │ 00:05:46 v #719 > > │ 00:00:00 d #6 chat_contract.claim_alias / { account_alias = │ 00:05:46 v #720 > > │ Some("alias1") } │ 00:05:46 v #721 > > │ 00:00:00 v #7 chat_contract / { account_set' = [ │ 00:05:46 v #722 > > │ AccountId("dev-20241230044646-15477561865294")]; alias_set' = ["alias1"]; │ 00:05:46 v #723 > > │ state = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, │ 00:05:46 v #724 > > │ 111, 117, 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [ │ 00:05:46 v #725 > > │ 97, 99, 99, 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { │ 00:05:46 v #726 > > │ elements: Vector { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, │ 00:05:46 v #727 > > │ 116, 118] }, index: LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, │ 00:05:46 v #728 > > │ 101, 116, 109] } }, LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, │ 00:05:46 v #729 > > │ 109, 97, 112] }, LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, │ 00:05:46 v #730 > > │ 112] }) } │ 00:05:46 v #731 > > │ │ 00:05:46 v #732 > > │ 00:00:20 i #14 near_workspaces.print_usd / { retry = 3; │ 00:05:46 v #733 > > │ total_gas_burnt_usd = +0.004481; total_gas_burnt = 6708768981350 } │ 00:05:46 v #734 > > │ 00:00:20 i #15 near_workspaces.print_usd / outcome / { is_success = │ 00:05:46 v #735 > > │ true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; gas_burnt = │ 00:05:46 v #736 > > │ 308081859340; tokens_burnt = 30808185934000000000 } │ 00:05:46 v #737 > > │ 00:00:20 i #16 near_workspaces.print_usd / outcome / { is_success = │ 00:05:46 v #738 > > │ true; gas_burnt_usd = +0.004127; tokens_burnt_usd = +0.004127; gas_burnt = │ 00:05:46 v #739 > > │ 6177504559510; tokens_burnt = 617750455951000000000 } │ 00:05:46 v #740 > > │ 00:00:20 i #17 near_workspaces.print_usd / outcome / { is_success = │ 00:05:46 v #741 > > │ true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; gas_burnt = │ 00:05:46 v #742 > > │ 223182562500; tokens_burnt = 0 } │ 00:05:46 v #743 > > │ │ 00:05:46 v #744 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:46 v #745 > > 00:05:46 v #746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #747 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:46 v #748 > > │ ### get_account_info │ 00:05:46 v #749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:46 v #750 > > 00:05:46 v #751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #752 > > inl get_account_info 00:05:46 v #753 > > (state : rust.ref state) 00:05:46 v #754 > > (account_id : near.account_id) 00:05:46 v #755 > > : optionm'.option' (sm'.std_string * (u64 * u32)) 00:05:46 v #756 > > = 00:05:46 v #757 > > inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string) 00:05:46 v #758 > > = 00:05:46 v #759 > > !\($'$"&!state.3"') 00:05:46 v #760 > > 00:05:46 v #761 > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 00:05:46 v #762 > > near.account_id (u64 * u32))) = 00:05:46 v #763 > > !\($'$"&!state.4"') 00:05:46 v #764 > > 00:05:46 v #765 > > !\\(account_id, $'"let result = !account_map.get(&$0).and_then(|alias| { 00:05:46 v #766 > > //"') : () 00:05:46 v #767 > > !\($'" !alias_map //"') : () 00:05:46 v #768 > > !\($'" .get(alias) //"') : () 00:05:46 v #769 > > !\($'" .map(|accounts| { //"') : () 00:05:46 v #770 > > !\($'" let result = (alias.clone(), 00:05:46 v #771 > > *accounts.get(&!account_id).unwrap()); //"') : () 00:05:46 v #772 > > !\($'" (result.0, result.1.0, result.1.1) //"') : () 00:05:46 v #773 > > !\($'" }) //"') : () 00:05:46 v #774 > > !\($'"}); //"') : () 00:05:46 v #775 > > 00:05:46 v #776 > > inl result = !\($'"result"') 00:05:46 v #777 > > 00:05:46 v #778 > > trace Debug 00:05:46 v #779 > > fun () => "chat_contract.get_account_info" 00:05:46 v #780 > > fun () => { account_id result } 00:05:46 v #781 > > 00:05:46 v #782 > > trace Debug (fun () => "") id 00:05:46 v #783 > > 00:05:46 v #784 > > result 00:05:47 v #785 > > 00:05:47 v #786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:47 v #787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:47 v #788 > > │ ### main │ 00:05:47 v #789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:47 v #790 > > 00:05:47 v #791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:47 v #792 > > ///! _ 00:05:47 v #793 > > 00:05:47 v #794 > > inl main () = 00:05:47 v #795 > > !\($'"} //"') : () 00:05:47 v #796 > > 00:05:47 v #797 > > !\($'"#[[near_sdk::near_bindgen]] //"') : () 00:05:47 v #798 > > 00:05:47 v #799 > > !\($'"#[[derive( //"') : () 00:05:47 v #800 > > !\($'" near_sdk::PanicOnDefault, //"') : () 00:05:47 v #801 > > !\($'" borsh::BorshDeserialize, //"') : () 00:05:47 v #802 > > !\($'" borsh::BorshSerialize, //"') : () 00:05:47 v #803 > > !\($'")]] //"') : () 00:05:47 v #804 > > 00:05:47 v #805 > > !\($'"pub struct State ( //"') : () 00:05:47 v #806 > > 00:05:47 v #807 > > !\($'"/*"') : () 00:05:47 v #808 > > (null () : rust.type_emit state) |> ignore 00:05:47 v #809 > > !\($'"*/ )"') : () 00:05:47 v #810 > > 00:05:47 v #811 > > inl new_ () = 00:05:47 v #812 > > !\($'"#[[init]] //"') : () 00:05:47 v #813 > > !\($'"pub fn new() -> Self { // 1"') : () 00:05:47 v #814 > > 00:05:47 v #815 > > (!\($'"true; /*"') : bool) |> ignore 00:05:47 v #816 > > 00:05:47 v #817 > > (null () : rust.type_emit ()) |> ignore 00:05:47 v #818 > > 00:05:47 v #819 > > (!\($'"true; */"') : bool) |> ignore 00:05:47 v #820 > > 00:05:47 v #821 > > inl result = new () 00:05:47 v #822 > > 00:05:47 v #823 > > $'let _result = !result in _result |> (fun x -> 00:05:47 v #824 > > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : () 00:05:47 v #825 > > 00:05:47 v #826 > > !\($'"} // 2."') : () 00:05:47 v #827 > > 00:05:47 v #828 > > !\($'"} // 1."') : () 00:05:47 v #829 > > 00:05:47 v #830 > > 2 00:05:47 v #831 > > 00:05:47 v #832 > > inl is_valid_alias () = 00:05:47 v #833 > > !\($'"fn is_valid_alias(alias: String) -> bool { //"') : () 00:05:47 v #834 > > inl alias = !\($'$"alias"') 00:05:47 v #835 > > inl result = alias |> is_valid_alias 00:05:47 v #836 > > $'let _result = !result in _result |> (fun x -> 00:05:47 v #837 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () 00:05:47 v #838 > > !\($'"} //"') : () 00:05:47 v #839 > > 1 00:05:47 v #840 > > 00:05:47 v #841 > > inl generate_cid () = 00:05:47 v #842 > > !\($'"pub fn generate_cid( //"') : () 00:05:47 v #843 > > !\($'" &self, //"') : () 00:05:47 v #844 > > !\($'" content: Vec<u8>, //"') : () 00:05:47 v #845 > > !\($'") -> String { //"') : () 00:05:47 v #846 > > inl content = !\($'$"content"') 00:05:47 v #847 > > inl result = generate_cid content 00:05:47 v #848 > > $'let _result = !result in _result |> (fun x -> 00:05:47 v #849 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () 00:05:47 v #850 > > !\($'"} //"') : () 00:05:47 v #851 > > 2 00:05:47 v #852 > > 00:05:47 v #853 > > inl generate_cid_borsh () = 00:05:47 v #854 > > !\($'"#[[result_serializer(borsh)]] //"') : () 00:05:47 v #855 > > !\($'"pub fn generate_cid_borsh( //"') : () 00:05:47 v #856 > > !\($'" &self, //"') : () 00:05:47 v #857 > > !\($'" #[[serializer(borsh)]] content: Vec<u8>, //"') : () 00:05:47 v #858 > > !\($'") -> String { //"') : () 00:05:47 v #859 > > !\($'" self.generate_cid(content) //"') : () 00:05:47 v #860 > > !\($'"} //"') : () 00:05:47 v #861 > > 1 00:05:47 v #862 > > 00:05:47 v #863 > > inl claim_alias () = 00:05:47 v #864 > > !\($'"pub fn claim_alias( //"') : () 00:05:47 v #865 > > !\($'" &mut self, //"') : () 00:05:47 v #866 > > !\($'" alias: String, //"') : () 00:05:47 v #867 > > !\($'") { //"') : () 00:05:47 v #868 > > 00:05:47 v #869 > > inl state = !\($'$"&mut self.0"') 00:05:47 v #870 > > inl alias = !\($'$"alias"') 00:05:47 v #871 > > 00:05:47 v #872 > > inl result = claim_alias state alias 00:05:47 v #873 > > trace Debug (fun () => "") (join id) 00:05:47 v #874 > > 00:05:47 v #875 > > !\($'"} //"') : () 00:05:47 v #876 > > 00:05:47 v #877 > > !\($'"} //"') : () 00:05:47 v #878 > > 00:05:47 v #879 > > !\($'"} //"') : () 00:05:47 v #880 > > 00:05:47 v #881 > > 3 00:05:47 v #882 > > 00:05:47 v #883 > > inl get_account_info () = 00:05:47 v #884 > > !\($'"pub fn get_account_info( //"') : () 00:05:47 v #885 > > !\($'" &self, //"') : () 00:05:47 v #886 > > !\($'" account_id: near_sdk::AccountId, //"') : () 00:05:47 v #887 > > !\($'") -> Option<(String, u64, u32)> { //"') : () 00:05:47 v #888 > > 00:05:47 v #889 > > inl state = !\($'$"&self.0"') 00:05:47 v #890 > > inl account_id : near.account_id = !\($'$"account_id"') 00:05:47 v #891 > > 00:05:47 v #892 > > inl result = account_id |> get_account_info state 00:05:47 v #893 > > $'let _result = !result in _result |> (fun x -> 00:05:47 v #894 > > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : () 00:05:47 v #895 > > 00:05:47 v #896 > > !\($'"} // 2"') : () 00:05:47 v #897 > > 00:05:47 v #898 > > !\($'"} // 1"') : () 00:05:47 v #899 > > 00:05:47 v #900 > > 2 00:05:47 v #901 > > 00:05:47 v #902 > > inl get_alias_map () = 00:05:47 v #903 > > !\($'"pub fn get_alias_map( //"') : () 00:05:47 v #904 > > !\($'" &self, //"') : () 00:05:47 v #905 > > !\($'" alias: String, //"') : () 00:05:47 v #906 > > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 00:05:47 v #907 > > u32)>> { //"') : () 00:05:47 v #908 > > 00:05:47 v #909 > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 00:05:47 v #910 > > near.account_id (u64 * u32))) = 00:05:47 v #911 > > !\($'$"&self.0.4"') 00:05:47 v #912 > > 00:05:47 v #913 > > inl alias : sm'.std_string = !\($'$"alias"') 00:05:47 v #914 > > 00:05:47 v #915 > > trace Debug 00:05:47 v #916 > > fun () => "chat_contract.get_alias_map" 00:05:47 v #917 > > fun () => { alias } 00:05:47 v #918 > > 00:05:47 v #919 > > trace Debug (fun () => "") (join id) 00:05:47 v #920 > > 00:05:47 v #921 > > !\\(alias, $'" !alias_map.get(&$0).cloned() //"') : () 00:05:47 v #922 > > !\($'"} //"') : () 00:05:47 v #923 > > 00:05:47 v #924 > > !\($'"} //"') : () 00:05:47 v #925 > > 00:05:47 v #926 > > 2 00:05:47 v #927 > > 00:05:47 v #928 > > inl get_alias_map_borsh () = 00:05:47 v #929 > > !\($'"#[[result_serializer(borsh)]] //"') : () 00:05:47 v #930 > > !\($'"pub fn get_alias_map_borsh( //"') : () 00:05:47 v #931 > > !\($'" &self, //"') : () 00:05:47 v #932 > > !\($'" #[[serializer(borsh)]] alias: String, //"') : () 00:05:47 v #933 > > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 00:05:47 v #934 > > u32)>> { //"') : () 00:05:47 v #935 > > !\($'" self.get_alias_map(alias) //"') : () 00:05:47 v #936 > > !\($'"} //"') : () 00:05:47 v #937 > > 1 00:05:47 v #938 > > 00:05:47 v #939 > > inl fns = 00:05:47 v #940 > > [[ 00:05:47 v #941 > > new_ 00:05:47 v #942 > > is_valid_alias 00:05:47 v #943 > > generate_cid 00:05:47 v #944 > > generate_cid_borsh 00:05:47 v #945 > > claim_alias 00:05:47 v #946 > > get_account_info 00:05:47 v #947 > > get_alias_map 00:05:47 v #948 > > get_alias_map_borsh 00:05:47 v #949 > > ]] 00:05:47 v #950 > > 00:05:47 v #951 > > inl rec loop acc fns i = 00:05:47 v #952 > > match fns with 00:05:47 v #953 > > | [[]] => acc 00:05:47 v #954 > > | x :: xs => 00:05:47 v #955 > > !\($'"#[[near_sdk::near_bindgen]] //"') : () 00:05:47 v #956 > > !\($'"impl State { //"') : () 00:05:47 v #957 > > inl n = x () 00:05:47 v #958 > > !\($'"} /* c"') : () 00:05:47 v #959 > > inl rec loop' i' = 00:05:47 v #960 > > if i' <> 1 // <= n 00:05:47 v #961 > > then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n: 00:05:47 v #962 > > !n"') : bool) |> ignore 00:05:47 v #963 > > else 00:05:47 v #964 > > (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: 00:05:47 v #965 > > !n"') : bool) |> ignore 00:05:47 v #966 > > loop' (i' + 1) 00:05:47 v #967 > > loop' 1u8 00:05:47 v #968 > > loop (acc + n) xs (i + 1) 00:05:47 v #969 > > inl n = loop 0u8 fns 1u8 00:05:47 v #970 > > 00:05:47 v #971 > > 00:05:47 v #972 > > // !\($'"/* a"') : () 00:05:47 v #973 > > 00:05:47 v #974 > > // !\($'"} // b"') : () 00:05:47 v #975 > > 00:05:47 v #976 > > !\($'"fn _main() //"') : () 00:05:47 v #977 > > !\($'"{ { //"') : () 00:05:47 v #978 > > 00:05:47 v #979 > > inl rec loop' i' = 00:05:47 v #980 > > if i' <= n 00:05:47 v #981 > > then 00:05:47 v #982 > > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore 00:05:47 v #983 > > loop' (i' + 1) 00:05:47 v #984 > > else 00:05:47 v #985 > > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore 00:05:47 v #986 > > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore 00:05:47 v #987 > > loop' 1u8 00:05:47 v #988 > > 00:05:47 v #989 > > inl main () = 00:05:47 v #990 > > $'!main |> ignore' : () 00:05:47 v #991 > 00:05:46 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 49155 } 00:05:47 v #992 > 00:05:46 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:49 v #993 > 00:05:48 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html 00:05:49 v #994 > 00:05:48 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:49 v #995 > 00:05:48 v #7 ! validate(nb) 00:05:49 v #996 > 00:05:48 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:49 v #997 > 00:05:48 v #9 ! return _pygments_highlight( 00:05:50 v #998 > 00:05:49 v #10 ! [NbConvertApp] Writing 394073 bytes to c:\home\git\polyglot\apps\chat\contract\chat_contract.dib.html 00:05:50 v #999 > 00:05:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 884 } 00:05:50 v #1000 > 00:05:49 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 884 } 00:05:50 v #1001 > 00:05:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:50 v #1002 > 00:05:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:50 v #1003 > 00:05:50 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:50 v #1004 > 00:05:50 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 50098 } 00:05:50 d #1005 runtime.execute_with_options_async / { exit_code = 0; output_length = 54766 } 00:05:50 d #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder.exe dib --path chat_contract.dib --retries 1 00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib 00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...03E ignore\u0027 : ()\n","uri":"file:///c:/home/git/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>] #endif type near_sdk_store_IterableSet<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>] #endif type near_sdk_store_LookupMap<'K, 'V> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy" let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy" let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy" let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy" let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy" let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 () let v0 : (unit -> unit) = closure0() v0 |> ignore () 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>] #endif type near_sdk_store_IterableSet<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>] #endif type near_sdk_store_LookupMap<'K, 'V> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy" let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy" let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy" let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy" let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy" let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 () let v0 : (unit -> unit) = closure0() v0 |> ignore () 00:00:01 d #10 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash: / code.Length: 141485 00:00:00 d #2 buildProject / fullPath: C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime linux-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\chat_contract" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 338 ms). 00:00:12 v #7 > C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3190,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] 00:00:17 v #8 > chat_contract -> C:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\linux-x64\chat_contract.dll 00:00:19 v #9 > chat_contract -> C:\home\git\polyglot\apps\chat\contract\dist\ 00:00:19 v #10 > 00:00:19 v #11 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:19 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 865 } 00:00:19 d #13 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime win-x64"; options = { command = dotnet publish "C:\home\git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "C:\home\git\polyglot\target\Builder\chat_contract" } } 00:00:19 v #14 > Determining projects to restore... 00:00:20 v #15 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:20 v #16 > The last full restore is still up to date. Nothing left to do. 00:00:20 v #17 > Total time taken: 0 milliseconds 00:00:20 v #18 > Restored C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 334 ms). 00:00:29 v #19 > C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3190,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [C:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] 00:00:34 v #20 > chat_contract -> C:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\win-x64\chat_contract.dll 00:00:35 v #21 > chat_contract -> C:\home\git\polyglot\apps\chat\contract\dist\ 00:00:35 v #22 > 00:00:35 v #23 > Workload updates are available. Run `dotnet workload list` for more information. 00:00:35 d #24 runtime.execute_with_options_async / { exit_code = 0; output_length = 863 } targetDir: C:\home\git\polyglot\target\Builder\chat_contract Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @iyegoroff Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\chat_contract\chat_contract.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 158ms Started Fable compilation... Fable compilation finished in 8296ms .\target\Builder\chat_contract\chat_contract.fs(3190,15): (3190,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). (code 25) .\lib\spiral\async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\date_time.fsx(2392,0): (2392,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\sm.fsx(521,0): (521,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\runtime.fsx(6912,0): (6912,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\file_system.fsx(16450,0): (16450,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\chat_contract\chat_contract.fs(3408,6): (3408,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling typenum v1.17.0 Compiling once_cell v1.20.2 Compiling heck v0.5.0 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling syn v1.0.109 Compiling hybrid-array v0.2.3 Compiling data-encoding-macro-internal v0.1.13 Compiling crypto-common v0.2.0-rc.1 Compiling block-buffer v0.11.0-rc.3 Compiling data-encoding-macro v0.1.15 Compiling multibase v0.9.1 Compiling digest v0.11.0-pre.9 Compiling sha2 v0.11.0-pre.4 Compiling wasm-bindgen-backend v0.2.99 Compiling darling_core v0.20.10 Compiling serde_derive v1.0.216 Compiling borsh-derive v1.5.3 Compiling strum_macros v0.26.4 Compiling wasm-bindgen-macro-support v0.2.99 Compiling borsh v1.5.3 Compiling wasm-bindgen-macro v0.2.99 Compiling darling_macro v0.20.10 Compiling wasm-bindgen v0.2.99 Compiling darling v0.20.10 Compiling js-sys v0.3.76 Compiling serde v1.0.216 Compiling serde_json v1.0.133 Compiling near-gas v0.3.0 Compiling near-token v0.3.0 Compiling near-account-id v1.0.0 Compiling near-sdk-macros v5.6.0 Compiling getrandom v0.2.15 Compiling fable_library_rust v0.1.0 (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling near-sdk v5.6.0 Compiling chat_contract v0.0.1 (C:\home\git\polyglot\apps\chat\contract) Finished `release` profile [optimized] target(s) in 37.32s Finished `release` profile [optimized] target(s) in 14.75s Running `/mnt/c/home/git/polyglot/workspace/target/release/chat_contract_tests` new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1641878353157, }, transaction: ExecutionOutcome { transaction_hash: NDHrjbYLprqkhzpqv88dYehf3GYnodaLm68GkQYT1TF, block_hash: rsjFnpswpEWqesK84CGiw6Em1SpBpzL2T8YtNP3vtr7, logs: [], receipt_ids: [ ycfcS2DMJZmX4rXroo4WQBK5rqfHPwH1pYy9x5r4RNT, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessReceiptId(ycfcS2DMJZmX4rXroo4WQBK5rqfHPwH1pYy9x5r4RNT), }, receipts: [ ExecutionOutcome { transaction_hash: ycfcS2DMJZmX4rXroo4WQBK5rqfHPwH1pYy9x5r4RNT, block_hash: rsjFnpswpEWqesK84CGiw6Em1SpBpzL2T8YtNP3vtr7, logs: [], receipt_ids: [ Fo7sdqrwsDpnNfpYgHVShnbbS8G8kwyvWoG7Ti9hXLeV, ], gas_burnt: NearGas { inner: 1333812145355, }, tokens_burnt: NearToken { inner: 133381214535500000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.001096774739908876 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0008909865130971399 outcome_tokens_burnt_usd: 0.0 claim_alias(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1918275607230, }, transaction: ExecutionOutcome { transaction_hash: 5p5JRNs84u1ynUQWUsSj2wr2d1RaBwynEe7y4MqwvSn1, block_hash: BK6Y1ycpAJ7CXv1XL4zZPB276DRHfZiJkPcLgzBpwiRw, logs: [], receipt_ids: [ DaUNL3Yc3keSeFFXub67pudzBqQpq9GYJy8cZrFs6Tqq, ], gas_burnt: NearGas { inner: 308110926482, }, tokens_burnt: NearToken { inner: 30811092648200000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessReceiptId(DaUNL3Yc3keSeFFXub67pudzBqQpq9GYJy8cZrFs6Tqq), }, receipts: [ ExecutionOutcome { transaction_hash: DaUNL3Yc3keSeFFXub67pudzBqQpq9GYJy8cZrFs6Tqq, block_hash: BK6Y1ycpAJ7CXv1XL4zZPB276DRHfZiJkPcLgzBpwiRw, logs: [], receipt_ids: [ 9XWHdXDnhngeXPztfq4yuZ9zuXuVzLC61smP7sJxbVzP, ], gas_burnt: NearGas { inner: 1610164680748, }, tokens_burnt: NearToken { inner: 161016468074800000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), }, ], status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), } total_gas_burnt_usd: 0.00128140810562964 outcome (success: true): outcome_gas_burnt_usd: 0.000205818098889976 outcome_tokens_burnt_usd: 0.0 outcome (success: false): outcome_gas_burnt_usd: 0.001075590006739664 outcome_tokens_burnt_usd: 0.0 dev_create_account(account1): Account { id: AccountId( "dev-20241230044849-51597254684079", ), } generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] } claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3517087138506, }, transaction: ExecutionOutcome { transaction_hash: 2ibLg4QCEfSnnzxYGQymGR6kCbPEas4Lbj42sumCUHVE, block_hash: Gd6qtGjbiwgjiUVd9pw76JnfuaS4cW6mRY4saypGtd49, logs: [], receipt_ids: [ EGy8DwFvLMxHYtyWGYMrDGKmrCv1zuBBxNVMPVpvce2P, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessReceiptId(EGy8DwFvLMxHYtyWGYMrDGKmrCv1zuBBxNVMPVpvce2P), }, receipts: [ ExecutionOutcome { transaction_hash: EGy8DwFvLMxHYtyWGYMrDGKmrCv1zuBBxNVMPVpvce2P, block_hash: H7ASKF62hcJoBx5kywcSRU8hecuViJR1CL6YjRcsseX2, logs: [ "04:48:50 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1735534130823027630; signer_account_id = \"dev-20241230044849-51597254684079\"; predecessor_account_id = \"dev-20241230044849-51597254684079\" }\n04:48:50 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ 9MUA2puSB2p37UKZUqaGFGmi15Jp5sy7dncDWcyTGaZL, ], gas_burnt: NearGas { inner: 2985780233920, }, tokens_burnt: NearToken { inner: 298578023392000000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 9MUA2puSB2p37UKZUqaGFGmi15Jp5sy7dncDWcyTGaZL, block_hash: AooUGyphnkFizQYUYzrgWW5F3EqUtowQsAATMDY6WKnJ, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002349414208522008 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00199450119625856 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3667714146762, }, transaction: ExecutionOutcome { transaction_hash: 8tQD99iBvgNGCXh2SuGaBMy753mB4kDXwZcYFZ2ngmRy, block_hash: DRJd3X1UJuU6HS7EJXibdC6Sfpr1MHePLUXqY7uGjRiw, logs: [], receipt_ids: [ Ej1oJxFDJMVE6mAWioeNTiVkrh67fFtGq4G1ZCRi7PBE, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessReceiptId(Ej1oJxFDJMVE6mAWioeNTiVkrh67fFtGq4G1ZCRi7PBE), }, receipts: [ ExecutionOutcome { transaction_hash: Ej1oJxFDJMVE6mAWioeNTiVkrh67fFtGq4G1ZCRi7PBE, block_hash: 9uski8aR2hCQH1Jj2KvW83hwSAEZdMEnsDaoPaitzP2K, logs: [ "04:48:51 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1735534131835968854; signer_account_id = \"dev-20241230044849-51597254684079\"; predecessor_account_id = \"dev-20241230044849-51597254684079\" }\n04:48:51 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ 6sJmEq1PyjSPuKDojM5xQfTdvAM3L6Qj9d3npZW1MUGP, ], gas_burnt: NearGas { inner: 3136407242176, }, tokens_burnt: NearToken { inner: 313640724217600000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 6sJmEq1PyjSPuKDojM5xQfTdvAM3L6Qj9d3npZW1MUGP, block_hash: 3QiQeFrWLqEYKHdwWDxJBTdNwkfYrbo1VwxpvUnR5rtc, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002450033050037016 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002095120037773568 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1735534131835968854, 0, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20241230044849-51597254684079", ): ( 1735534131835968854, 0, ), }, ) dev_create_account(account2): Account { id: AccountId( "dev-20241230044852-12475980141531", ), } claim_alias(alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3749070609618, }, transaction: ExecutionOutcome { transaction_hash: 5td9AMGJCQrxqAQR68Vounns9JxaHCAujLxGQDUUtMtk, block_hash: HhEoSaWr87wBCCUrNGTzqYB2nmWG48yF2RV7AEPhHERi, logs: [], receipt_ids: [ 64YjoMaXCJi7qL3nXQX8nycWCJnYyfBaQwCXZomBixw5, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044852-12475980141531", ), status: SuccessReceiptId(64YjoMaXCJi7qL3nXQX8nycWCJnYyfBaQwCXZomBixw5), }, receipts: [ ExecutionOutcome { transaction_hash: 64YjoMaXCJi7qL3nXQX8nycWCJnYyfBaQwCXZomBixw5, block_hash: 5GYTibPPGyntqTFwpHJyHT8XRN8z9uNU4vygntvMJS6T, logs: [ "04:48:53 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1735534133456818453; signer_account_id = \"dev-20241230044852-12475980141531\"; predecessor_account_id = \"dev-20241230044852-12475980141531\" }\n04:48:53 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ 7DMd6irDUpebx5rps39CWYuR8TSKYgKm7JLXnN1UkjVz, ], gas_burnt: NearGas { inner: 3217763705032, }, tokens_burnt: NearToken { inner: 321776370503200000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 7DMd6irDUpebx5rps39CWYuR8TSKYgKm7JLXnN1UkjVz, block_hash: 6uoVrTdNuqaSWA7ntdGK7qPTjCECbJMbUtv8xmLnedeh, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20241230044852-12475980141531", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002504379167224824 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0021494661549613762 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias2", 1735534133456818453, 0, ), ) get_alias_map_borsh(alias2): Some( { AccountId( "dev-20241230044852-12475980141531", ): ( 1735534133456818453, 0, ), }, ) claim_alias(account2, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3955154765739, }, transaction: ExecutionOutcome { transaction_hash: AAF8uobC4VmQxFtQqFHkRVJtiHqNPyvQ5n1i7yoSKR2, block_hash: DUqA7rgnNVbvdCJPNrkDV7Agv4RJbto6QDTQjFC7T1AX, logs: [], receipt_ids: [ FS2oT9m6jfX7EzHiwfCAcyr2RSdqgmMX6aExVzP7Pimr, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044852-12475980141531", ), status: SuccessReceiptId(FS2oT9m6jfX7EzHiwfCAcyr2RSdqgmMX6aExVzP7Pimr), }, receipts: [ ExecutionOutcome { transaction_hash: FS2oT9m6jfX7EzHiwfCAcyr2RSdqgmMX6aExVzP7Pimr, block_hash: 6g116bq4T4dRBd5H6sMFwMmHEWEtwYXyKiBMyDrLzZ7v, logs: [ "04:48:54 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1735534134469078452; signer_account_id = \"dev-20241230044852-12475980141531\"; predecessor_account_id = \"dev-20241230044852-12475980141531\" }\n04:48:54 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ BD2Sh6DDCUiWtWE1QPGqZfP1WpWy5KQGyb6JS3bDmEhh, ], gas_burnt: NearGas { inner: 3423847861153, }, tokens_burnt: NearToken { inner: 342384786115300000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: BD2Sh6DDCUiWtWE1QPGqZfP1WpWy5KQGyb6JS3bDmEhh, block_hash: 3GJGxZtQ29HqRd46ZJ6CvnVEBpfvj3zgFKmLrEUmsRRh, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20241230044852-12475980141531", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002642043383513652 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002287130371250204 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias1", 1735534134469078452, 1, ), ) get_alias_map(account2, alias1): Some( { AccountId( "dev-20241230044852-12475980141531", ): ( 1735534134469078452, 1, ), AccountId( "dev-20241230044849-51597254684079", ): ( 1735534131835968854, 0, ), }, ) get_alias_map(account2, alias2): Some( {}, ) claim_alias(account1, alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3952775498511, }, transaction: ExecutionOutcome { transaction_hash: BVieyJb617tibitECMByWaQuA9nQn1YfqGLccjPL4jHS, block_hash: 8Fc7Ah6ZsnDt49fj8aLSjsbVfTzSrG2pDzi9WGA18Bmw, logs: [], receipt_ids: [ HYuvhJjFeqU4tCEuSBEDGcvgAdxcpQ5LWHuhNc8mVvtH, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessReceiptId(HYuvhJjFeqU4tCEuSBEDGcvgAdxcpQ5LWHuhNc8mVvtH), }, receipts: [ ExecutionOutcome { transaction_hash: HYuvhJjFeqU4tCEuSBEDGcvgAdxcpQ5LWHuhNc8mVvtH, block_hash: B7cNwHHKUyuduKdVknKwLt1diTzCjm49k6PTqwsqfR2J, logs: [ "04:48:55 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1735534135481207252; signer_account_id = \"dev-20241230044849-51597254684079\"; predecessor_account_id = \"dev-20241230044849-51597254684079\" }\n04:48:55 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ AL2cySWbJ6ZsTAMefY77gjVSy1DpsYd29s5rCA3GeK8p, ], gas_burnt: NearGas { inner: 3421468593925, }, tokens_burnt: NearToken { inner: 342146859392500000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: AL2cySWbJ6ZsTAMefY77gjVSy1DpsYd29s5rCA3GeK8p, block_hash: 71jWdYbLxbxj44QRkDqDuZviZsmKB268VdYX3eWEP12d, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002640454033005348 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0022855410207419003 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias2", 1735534135481207252, 0, ), ) get_alias_map(account1, alias2): Some( { AccountId( "dev-20241230044849-51597254684079", ): ( 1735534135481207252, 0, ), }, ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20241230044852-12475980141531", ): ( 1735534134469078452, 1, ), }, ) claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3734181446223, }, transaction: ExecutionOutcome { transaction_hash: 2oXXLHg6Yk9H1M76TE8HWHgRSBvTtYd4TefDBzvfgcUi, block_hash: F6bHgLbkYDNTZUTchcFpJNMtsB3zDNAdR36zfpsk8tct, logs: [], receipt_ids: [ 7PB2zHHM2ZthHb3kD7zGy5e73ixq3SPhguUB68Z3FBU9, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20241230044849-51597254684079", ), status: SuccessReceiptId(7PB2zHHM2ZthHb3kD7zGy5e73ixq3SPhguUB68Z3FBU9), }, receipts: [ ExecutionOutcome { transaction_hash: 7PB2zHHM2ZthHb3kD7zGy5e73ixq3SPhguUB68Z3FBU9, block_hash: 2reD7MfoyTj1jqyUp4tpXnaoXWKC1zjYcnCpTKxxCKC7, logs: [ "04:48:56 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1735534136494931182; signer_account_id = \"dev-20241230044849-51597254684079\"; predecessor_account_id = \"dev-20241230044849-51597254684079\" }\n04:48:56 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ 7HBSHRY9qB7vZgLw6tJXniVSA8jK8VhXfonSmUAeyCnf, ], gas_burnt: NearGas { inner: 3426057104137, }, tokens_burnt: NearToken { inner: 342605710413700000000, }, executor_id: AccountId( "dev-20241230044847-89078377993854", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002494433206076964 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002288606145563516 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1735534136494931182, 1, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20241230044852-12475980141531", ): ( 1735534134469078452, 0, ), AccountId( "dev-20241230044849-51597254684079", ): ( 1735534136494931182, 1, ), }, ) get_alias_map(account1, alias2): Some( {}, )
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path cube.dib"; options = { command = ../../../../workspace/target/release/spiral_builder.exe dib --path cube.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # cube │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #9 > > 00:00:02 v #10 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #11 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #12 > > │ ## cube │ 00:00:02 v #13 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 v #14 > > 00:00:06 v #15 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:06 v #16 > > open System 00:00:06 v #17 > > open System.Threading.Tasks 00:00:06 v #18 > > open System.Text 00:00:06 v #19 > > 00:00:06 v #20 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:06 v #21 > > let width = 160 00:00:06 v #22 > > let height = 44 00:00:06 v #23 > > let backgroundChar = '.' 00:00:06 v #24 > > let distanceFromCam = 100.0 00:00:06 v #25 > > let k1 = 40.0 00:00:06 v #26 > > let incrementSpeed = 0.6 00:00:06 v #27 > > 00:00:06 v #28 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 v #29 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 v #30 > > │ ### get_width │ 00:00:06 v #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 v #32 > > 00:00:07 v #33 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 v #34 > > inl get_width () = 00:00:07 v #35 > > 160i32 00:00:08 v #36 > > 00:00:08 v #37 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #38 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #39 > > │ ### get_height │ 00:00:08 v #40 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #41 > > 00:00:08 v #42 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #43 > > inl get_height () = 00:00:08 v #44 > > 44i32 00:00:08 v #45 > > 00:00:08 v #46 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #47 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 v #48 > > │ ### get_background_char │ 00:00:08 v #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 v #50 > > 00:00:08 v #51 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #52 > > inl get_background_char () = 00:00:08 v #53 > > '.' 00:00:09 v #54 > > 00:00:09 v #55 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #56 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #57 > > │ ### get_distance_from_cam │ 00:00:09 v #58 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #59 > > 00:00:09 v #60 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #61 > > inl get_distance_from_cam () = 00:00:09 v #62 > > 100f64 00:00:09 v #63 > > 00:00:09 v #64 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #65 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 v #66 > > │ ### get_k1 │ 00:00:09 v #67 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 v #68 > > 00:00:09 v #69 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #70 > > inl get_k1 () = 00:00:09 v #71 > > 40f64 00:00:10 v #72 > > 00:00:10 v #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #75 > > │ ### get_increment_speed │ 00:00:10 v #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #77 > > 00:00:10 v #78 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #79 > > inl get_increment_speed () = 00:00:10 v #80 > > 0.6f64 00:00:10 v #81 > > 00:00:10 v #82 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #83 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:10 v #84 > > │ ### rotation │ 00:00:10 v #85 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:10 v #86 > > 00:00:10 v #87 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:10 v #88 > > type Rotation = { a: float; b: float; c: float } 00:00:11 v #89 > > 00:00:11 v #90 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #91 > > type rotation = 00:00:11 v #92 > > { 00:00:11 v #93 > > a : f64 00:00:11 v #94 > > b : f64 00:00:11 v #95 > > c : f64 00:00:11 v #96 > > } 00:00:11 v #97 > > 00:00:11 v #98 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #99 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #100 > > │ ### cube │ 00:00:11 v #101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #102 > > 00:00:11 v #103 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:11 v #104 > > type Cube = { cubeWidth: float; horizontalOffset: float } 00:00:11 v #105 > > 00:00:11 v #106 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #107 > > type cube = 00:00:11 v #108 > > { 00:00:11 v #109 > > cube_width : f64 00:00:11 v #110 > > horizontal_offset : f64 00:00:11 v #111 > > } 00:00:11 v #112 > > 00:00:11 v #113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:11 v #115 > > │ ### get_cubes │ 00:00:11 v #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:11 v #117 > > 00:00:11 v #118 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:11 v #119 > > let cubes = [[ 00:00:11 v #120 > > { cubeWidth = 20.0; horizontalOffset = -40.0 } 00:00:11 v #121 > > { cubeWidth = 10.0; horizontalOffset = 10.0 } 00:00:11 v #122 > > { cubeWidth = 5.0; horizontalOffset = 40.0 } 00:00:11 v #123 > > ]] 00:00:11 v #124 > > 00:00:11 v #125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #126 > > inl get_cubes () : list cube = 00:00:11 v #127 > > [[ 00:00:11 v #128 > > { cube_width = 20; horizontal_offset = -40 } 00:00:11 v #129 > > { cube_width = 10; horizontal_offset = 10 } 00:00:11 v #130 > > { cube_width = 5; horizontal_offset = 40 } 00:00:11 v #131 > > ]] 00:00:12 v #132 > > 00:00:12 v #133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #135 > > │ ### calculate_x │ 00:00:12 v #136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #137 > > 00:00:12 v #138 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #139 > > let calculateX i j k (rot: Rotation) = 00:00:12 v #140 > > let a, b, c = rot.a, rot.b, rot.c 00:00:12 v #141 > > j * sin a * sin b * cos c - k * cos a * sin b * cos c + 00:00:12 v #142 > > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c 00:00:12 v #143 > > 00:00:12 v #144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #145 > > inl calculate_x i j k (rot : rotation) = 00:00:12 v #146 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:12 v #147 > > j * sin a * sin b * cos c - k * cos a * sin b * cos c + 00:00:12 v #148 > > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c 00:00:12 v #149 > > 00:00:12 v #150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #151 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 v #152 > > │ ### calculate_y │ 00:00:12 v #153 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 v #154 > > 00:00:12 v #155 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #156 > > let calculateY i j k (rot: Rotation) = 00:00:12 v #157 > > let a, b, c = rot.a, rot.b, rot.c 00:00:12 v #158 > > j * cos a * cos c + k * sin a * cos c - 00:00:12 v #159 > > j * sin a * sin b * sin c + k * cos a * sin b * sin c - 00:00:12 v #160 > > i * cos b * sin c 00:00:12 v #161 > > 00:00:12 v #162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #163 > > inl calculate_y i j k (rot : rotation) = 00:00:12 v #164 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:12 v #165 > > j * cos a * cos c + k * sin a * cos c - 00:00:12 v #166 > > j * sin a * sin b * sin c + k * cos a * sin b * sin c - 00:00:12 v #167 > > i * cos b * sin c 00:00:13 v #168 > > 00:00:13 v #169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #170 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 v #171 > > │ ### calculate_z │ 00:00:13 v #172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 v #173 > > 00:00:13 v #174 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:13 v #175 > > let calculateZ i j k (rot: Rotation) = 00:00:13 v #176 > > let a, b, c = rot.a, rot.b, rot.c 00:00:13 v #177 > > k * cos a * cos b - j * sin a * cos b + i * sin b 00:00:13 v #178 > > 00:00:13 v #179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #180 > > inl calculate_z i j k (rot : rotation) = 00:00:13 v #181 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:13 v #182 > > k * cos a * cos b - j * sin a * cos b + i * sin b 00:00:13 v #183 > > 00:00:13 v #184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #185 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 v #186 > > │ ### calculate_for_surface │ 00:00:13 v #187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 v #188 > > 00:00:13 v #189 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:13 v #190 > > let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset = 00:00:13 v #191 > > let x = calculateX cubeX cubeY cubeZ rot 00:00:13 v #192 > > let y = calculateY cubeX cubeY cubeZ rot 00:00:13 v #193 > > let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam 00:00:13 v #194 > > let ooz = 1.0 / z 00:00:13 v #195 > > let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0) 00:00:13 v #196 > > let yp = int (float height / 2.0 + k1 * ooz * y) 00:00:13 v #197 > > let idx = xp + yp * width 00:00:13 v #198 > > if idx >= 0 && idx < width * height 00:00:13 v #199 > > then Some (idx, (ooz, ch)) 00:00:13 v #200 > > else None 00:00:13 v #201 > > 00:00:13 v #202 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #203 > > let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset = 00:00:13 v #204 > > inl x = calculate_x cube_x cube_y cube_z rot 00:00:13 v #205 > > inl y = calculate_y cube_x cube_y cube_z rot 00:00:13 v #206 > > inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam () 00:00:13 v #207 > > inl ooz = 1.0 / z 00:00:13 v #208 > > inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz 00:00:13 v #209 > > * x * 2.0) 00:00:13 v #210 > > inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y) 00:00:13 v #211 > > inl idx = xp + yp * get_width () 00:00:13 v #212 > > if idx >= 0 && idx < get_width () * get_height () 00:00:13 v #213 > > then Some (idx, (ooz, ch)) 00:00:13 v #214 > > else None 00:00:14 v #215 > > 00:00:14 v #216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #218 > > │ ### frange │ 00:00:14 v #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #220 > > 00:00:14 v #221 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #222 > > let frange start stop step = 00:00:14 v #223 > > seq { 00:00:14 v #224 > > let mutable current = start 00:00:14 v #225 > > while (step > 0.0 && current < stop) || (step < 0.0 && current > stop) 00:00:14 v #226 > > do 00:00:14 v #227 > > yield current 00:00:14 v #228 > > current <- current + step 00:00:14 v #229 > > } 00:00:14 v #230 > > 00:00:14 v #231 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #232 > > inl frange start stop step : _ f64 = 00:00:14 v #233 > > fun () => 00:00:14 v #234 > > inl current = mut start 00:00:14 v #235 > > loopw.while 00:00:14 v #236 > > fun () => (step > 0f64 && *current < stop) || (step < 0 && *current 00:00:14 v #237 > > > stop) 00:00:14 v #238 > > fun () => 00:00:14 v #239 > > *current |> yield 00:00:14 v #240 > > current <- *current + step 00:00:14 v #241 > > |> seq.new_seq 00:00:14 v #242 > > 00:00:14 v #243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #244 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:14 v #245 > > │ ### get_cube_points │ 00:00:14 v #246 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:14 v #247 > > 00:00:14 v #248 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #249 > > let getCubePoints (cube: Cube) rot = 00:00:14 v #250 > > let cw = cube.cubeWidth 00:00:14 v #251 > > let ho = cube.horizontalOffset 00:00:14 v #252 > > let cubeRange = frange (-cw) cw incrementSpeed 00:00:14 v #253 > > seq { 00:00:14 v #254 > > for cubeX in cubeRange do 00:00:14 v #255 > > for cubeY in cubeRange do 00:00:14 v #256 > > let x = 00:00:14 v #257 > > [[ 00:00:14 v #258 > > calculateForSurface cubeX cubeY (-cw) '@' rot ho 00:00:14 v #259 > > calculateForSurface cw cubeY cubeX '$' rot ho 00:00:14 v #260 > > calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho 00:00:14 v #261 > > calculateForSurface (-cubeX) cubeY cw '#' rot ho 00:00:14 v #262 > > calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho 00:00:14 v #263 > > calculateForSurface cubeX cw cubeY '+' rot ho 00:00:14 v #264 > > ]] 00:00:14 v #265 > > |> Seq.choose id 00:00:14 v #266 > > yield! x 00:00:14 v #267 > > } 00:00:14 v #268 > > 00:00:14 v #269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #270 > > inl get_cube_points (cube : cube) rot = 00:00:14 v #271 > > inl cw = cube.cube_width 00:00:14 v #272 > > inl ho = cube.horizontal_offset 00:00:14 v #273 > > inl cube_range = frange -cw cw (get_increment_speed ()) 00:00:14 v #274 > > inl cube_range = join cube_range 00:00:14 v #275 > > inl get cube_x cube_y = 00:00:14 v #276 > > [[ 00:00:14 v #277 > > calculate_for_surface cube_x cube_y -cw ';' rot ho 00:00:14 v #278 > > calculate_for_surface cw cube_y cube_x '\\' rot ho 00:00:14 v #279 > > calculate_for_surface -cw cube_y -cube_x '/' rot ho 00:00:14 v #280 > > calculate_for_surface -cube_x cube_y cw '=' rot ho 00:00:14 v #281 > > calculate_for_surface cube_x -cw -cube_y '>' rot ho 00:00:14 v #282 > > calculate_for_surface cube_x cw cube_y '<' rot ho 00:00:14 v #283 > > ]] 00:00:14 v #284 > > |> listm'.box 00:00:14 v #285 > > inl get = join get 00:00:14 v #286 > > inl box x : _ (i32 * f64 * char) = 00:00:14 v #287 > > optionm'.box x 00:00:14 v #288 > > inl box = join box 00:00:14 v #289 > > fun () => 00:00:14 v #290 > > backend_switch { 00:00:14 v #291 > > Fsharp = fun () => 00:00:14 v #292 > > $'for cube_x in !cube_range do' 00:00:14 v #293 > > $'for cube_y in !cube_range do' 00:00:14 v #294 > > $'let x = !get cube_x cube_y |> Seq.choose !box ' 00:00:14 v #295 > > $'yield\! x' : () 00:00:14 v #296 > > Python = fun () => 00:00:14 v #297 > > $'cube_range = !cube_range ' 00:00:14 v #298 > > $'get = !get ' 00:00:14 v #299 > > $'box = !box ' 00:00:14 v #300 > > $'for cube_x in cube_range:' 00:00:14 v #301 > > $' for cube_y in cube_range:' 00:00:14 v #302 > > $' x = get(cube_x)(cube_y)' 00:00:14 v #303 > > $' for i in x:' 00:00:14 v #304 > > $' i_ = box(i)' 00:00:14 v #305 > > $' if i_ is not None: yield i' : () 00:00:14 v #306 > > } 00:00:14 v #307 > > |> seq.new_seq 00:00:15 v #308 > > 00:00:15 v #309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 v #311 > > │ ### generate_frame │ 00:00:15 v #312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #313 > > 00:00:15 v #314 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #315 > > let generateFrame rot = 00:00:15 v #316 > > let updates = 00:00:15 v #317 > > cubes 00:00:15 v #318 > > |> Seq.collect (fun cube -> getCubePoints cube rot) 00:00:15 v #319 > > let buffer = Array.create (width * height) None 00:00:15 v #320 > > updates 00:00:15 v #321 > > |> Seq.iter (fun (idx, (ooz, ch)) -> 00:00:15 v #322 > > match buffer.[[idx]] with 00:00:15 v #323 > > | Some (prevOoz, _) when prevOoz >= ooz -> () 00:00:15 v #324 > > | _ -> buffer.[[idx]] <- Some (ooz, ch) 00:00:15 v #325 > > ) 00:00:15 v #326 > > let sb = StringBuilder() 00:00:15 v #327 > > for row in 0 .. (height - 1) do 00:00:15 v #328 > > for col in 0 .. (width - 1) do 00:00:15 v #329 > > let idx = col + row * width 00:00:15 v #330 > > let ch = 00:00:15 v #331 > > match buffer.[[idx]] with 00:00:15 v #332 > > | Some (_, ch) -> ch 00:00:15 v #333 > > | None -> backgroundChar 00:00:15 v #334 > > sb.Append(ch) |> ignore 00:00:15 v #335 > > sb.AppendLine() |> ignore 00:00:15 v #336 > > sb.ToString() 00:00:15 v #337 > > 00:00:15 v #338 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #339 > > //// test 00:00:15 v #340 > > 00:00:15 v #341 > > let rot = { a = 0.0; b = 0.0; c = 0.0 } 00:00:15 v #342 > > let frame = generateFrame rot 00:00:15 v #343 > > Console.Write frame 00:00:15 v #344 > > 00:00:15 v #345 > > ╭─[ 41.91ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:15 v #346 > > │ ............................................................................ │ 00:00:15 v #347 > > │ ............................................................................ │ 00:00:15 v #348 > > │ ........ │ 00:00:15 v #349 > > │ ............................................................................ │ 00:00:15 v #350 > > │ ............................................................................ │ 00:00:15 v #351 > > │ ........ │ 00:00:15 v #352 > > │ ............................................................................ │ 00:00:15 v #353 > > │ ............................................................................ │ 00:00:15 v #354 > > │ ........ │ 00:00:15 v #355 > > │ ............................................................................ │ 00:00:15 v #356 > > │ ............................................................................ │ 00:00:15 v #357 > > │ ........ │ 00:00:15 v #358 > > │ ............................................................................ │ 00:00:15 v #359 > > │ ............................................................................ │ 00:00:15 v #360 > > │ ........ │ 00:00:15 v #361 > > │ ............................................................................ │ 00:00:15 v #362 > > │ ............................................................................ │ 00:00:15 v #363 > > │ ........ │ 00:00:15 v #364 > > │ ............................................................................ │ 00:00:15 v #365 > > │ ............................................................................ │ 00:00:15 v #366 > > │ ........ │ 00:00:15 v #367 > > │ ............................................................................ │ 00:00:15 v #368 > > │ ............................................................................ │ 00:00:15 v #369 > > │ ........ │ 00:00:15 v #370 > > │ ............................................................................ │ 00:00:15 v #371 > > │ ............................................................................ │ 00:00:15 v #372 > > │ ........ │ 00:00:15 v #373 > > │ ............................................................................ │ 00:00:15 v #374 > > │ ............................................................................ │ 00:00:15 v #375 > > │ ........ │ 00:00:15 v #376 > > │ ............................................................................ │ 00:00:15 v #377 > > │ ............................................................................ │ 00:00:15 v #378 > > │ ........ │ 00:00:15 v #379 > > │ ............................................................................ │ 00:00:15 v #380 > > │ ............................................................................ │ 00:00:15 v #381 > > │ ........ │ 00:00:15 v #382 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #383 > > │ ............................................................................ │ 00:00:15 v #384 > > │ ........ │ 00:00:15 v #385 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #386 > > │ ............................................................................ │ 00:00:15 v #387 > > │ ........ │ 00:00:15 v #388 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #389 > > │ ............................................................................ │ 00:00:15 v #390 > > │ ........ │ 00:00:15 v #391 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #392 > > │ ............................................................................ │ 00:00:15 v #393 > > │ ........ │ 00:00:15 v #394 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #395 > > │ ............................................................................ │ 00:00:15 v #396 > > │ ........ │ 00:00:15 v #397 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #398 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │ 00:00:15 v #399 > > │ ........ │ 00:00:15 v #400 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #401 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │ 00:00:15 v #402 > > │ ........ │ 00:00:15 v #403 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #404 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │ 00:00:15 v #405 > > │ ........ │ 00:00:15 v #406 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #407 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │ 00:00:15 v #408 > > │ ........ │ 00:00:15 v #409 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #410 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │ 00:00:15 v #411 > > │ ........ │ 00:00:15 v #412 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #413 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │ 00:00:15 v #414 > > │ ........ │ 00:00:15 v #415 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #416 > > │ .....@@@@@@@@@@@@@@@@@$................@@@@@@@@@$........................... │ 00:00:15 v #417 > > │ ........ │ 00:00:15 v #418 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #419 > > │ .....@@@@@@@@@@@@@@@@@$................+++++++++............................ │ 00:00:15 v #420 > > │ ........ │ 00:00:15 v #421 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #422 > > │ .....@@@@@@@@@@@@@@@@@$..................................................... │ 00:00:15 v #423 > > │ ........ │ 00:00:15 v #424 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #425 > > │ .....+++++++++++++++++$..................................................... │ 00:00:15 v #426 > > │ ........ │ 00:00:15 v #427 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #428 > > │ ............................................................................ │ 00:00:15 v #429 > > │ ........ │ 00:00:15 v #430 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #431 > > │ ............................................................................ │ 00:00:15 v #432 > > │ ........ │ 00:00:15 v #433 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #434 > > │ ............................................................................ │ 00:00:15 v #435 > > │ ........ │ 00:00:15 v #436 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #437 > > │ ............................................................................ │ 00:00:15 v #438 > > │ ........ │ 00:00:15 v #439 > > │ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$............... │ 00:00:15 v #440 > > │ ............................................................................ │ 00:00:15 v #441 > > │ ........ │ 00:00:15 v #442 > > │ ....................++++++++++++++++++++++++++++++++++++++++................ │ 00:00:15 v #443 > > │ ............................................................................ │ 00:00:15 v #444 > > │ ........ │ 00:00:15 v #445 > > │ ............................................................................ │ 00:00:15 v #446 > > │ ............................................................................ │ 00:00:15 v #447 > > │ ........ │ 00:00:15 v #448 > > │ ............................................................................ │ 00:00:15 v #449 > > │ ............................................................................ │ 00:00:15 v #450 > > │ ........ │ 00:00:15 v #451 > > │ ............................................................................ │ 00:00:15 v #452 > > │ ............................................................................ │ 00:00:15 v #453 > > │ ........ │ 00:00:15 v #454 > > │ ............................................................................ │ 00:00:15 v #455 > > │ ............................................................................ │ 00:00:15 v #456 > > │ ........ │ 00:00:15 v #457 > > │ ............................................................................ │ 00:00:15 v #458 > > │ ............................................................................ │ 00:00:15 v #459 > > │ ........ │ 00:00:15 v #460 > > │ ............................................................................ │ 00:00:15 v #461 > > │ ............................................................................ │ 00:00:15 v #462 > > │ ........ │ 00:00:15 v #463 > > │ ............................................................................ │ 00:00:15 v #464 > > │ ............................................................................ │ 00:00:15 v #465 > > │ ........ │ 00:00:15 v #466 > > │ ............................................................................ │ 00:00:15 v #467 > > │ ............................................................................ │ 00:00:15 v #468 > > │ ........ │ 00:00:15 v #469 > > │ ............................................................................ │ 00:00:15 v #470 > > │ ............................................................................ │ 00:00:15 v #471 > > │ ........ │ 00:00:15 v #472 > > │ ............................................................................ │ 00:00:15 v #473 > > │ ............................................................................ │ 00:00:15 v #474 > > │ ........ │ 00:00:15 v #475 > > │ ............................................................................ │ 00:00:15 v #476 > > │ ............................................................................ │ 00:00:15 v #477 > > │ ........ │ 00:00:15 v #478 > > │ │ 00:00:15 v #479 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 v #480 > > 00:00:15 v #481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #482 > > inl generate_frame rot = 00:00:15 v #483 > > inl updates : seq.seq' (int * (f64 * char)) = 00:00:15 v #484 > > inl get_cube_points' cube : seq.seq' (int * (f64 * char)) = 00:00:15 v #485 > > get_cube_points cube rot 00:00:15 v #486 > > inl cubes = get_cubes () |> listm'.box 00:00:15 v #487 > > backend_switch { 00:00:15 v #488 > > Fsharp = fun () => 00:00:15 v #489 > > inl get_cube_points' = join get_cube_points' 00:00:15 v #490 > > (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int * 00:00:15 v #491 > > (f64 * char)) 00:00:15 v #492 > > Python = fun () => 00:00:15 v #493 > > $'cubes = !cubes ' 00:00:15 v #494 > > $'get_cube_points = !get_cube_points' ' 00:00:15 v #495 > > $'[[x for cube in cubes for x in get_cube_points(*cube)]]' : 00:00:15 v #496 > > seq.seq' (int * (f64 * char)) 00:00:15 v #497 > > } 00:00:15 v #498 > > inl none : _ (f64 * char) = None 00:00:15 v #499 > > inl width = get_width () 00:00:15 v #500 > > inl height = get_height () 00:00:15 v #501 > > inl buffer = 00:00:15 v #502 > > backend_switch { 00:00:15 v #503 > > Fsharp = fun () => 00:00:15 v #504 > > $'Array.create (!width * !height) !none ' : a int (option (f64 * 00:00:15 v #505 > > char)) 00:00:15 v #506 > > Python = fun () => 00:00:15 v #507 > > $'[[!none for _ in range(!width * !height)]]' : a int (option 00:00:15 v #508 > > (f64 * char)) 00:00:15 v #509 > > } 00:00:15 v #510 > > 00:00:15 v #511 > > inl fn idx ((ooz : f64), (ch : char)) = 00:00:15 v #512 > > match buffer |> am'.index idx with 00:00:15 v #513 > > | Some (prev_ooz, _) when prev_ooz >= ooz => () 00:00:15 v #514 > > | _ => 00:00:15 v #515 > > inl x = (ooz, ch) |> Some 00:00:15 v #516 > > backend_switch { 00:00:15 v #517 > > Fsharp = fun () => 00:00:15 v #518 > > $'!buffer.[[!idx]] <- !x ' : () 00:00:15 v #519 > > Python = fun () => 00:00:15 v #520 > > $'!buffer[[!idx]] = !x ' : () 00:00:15 v #521 > > } 00:00:15 v #522 > > backend_switch { 00:00:15 v #523 > > Fsharp = fun () => 00:00:15 v #524 > > updates 00:00:15 v #525 > > |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' : 00:00:15 v #526 > > () 00:00:15 v #527 > > Python = fun () => 00:00:15 v #528 > > $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : () 00:00:15 v #529 > > } 00:00:15 v #530 > > 00:00:15 v #531 > > inl sb = "" |> sm'.string_builder 00:00:15 v #532 > > inl fn1 row = 00:00:15 v #533 > > inl fn2 col = 00:00:15 v #534 > > inl idx = col + row * width 00:00:15 v #535 > > inl ch = 00:00:15 v #536 > > match buffer |> am'.index idx with 00:00:15 v #537 > > | Some (_, ch) => ch 00:00:15 v #538 > > | None => get_background_char () 00:00:15 v #539 > > sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore 00:00:15 v #540 > > 00:00:15 v #541 > > backend_switch { 00:00:15 v #542 > > Fsharp = fun () => 00:00:15 v #543 > > $'for col in 0 .. (!width - 1) do !fn2 col' : () 00:00:15 v #544 > > Python = fun () => 00:00:15 v #545 > > $'for col in range(!width): !fn2(col)' : () 00:00:15 v #546 > > } 00:00:15 v #547 > > sb |> sm'.builder_append_line |> ignore 00:00:15 v #548 > > 00:00:15 v #549 > > backend_switch { 00:00:15 v #550 > > Fsharp = fun () => 00:00:15 v #551 > > $'for row in 0 .. (!height - 1) do !fn1 row' : () 00:00:15 v #552 > > Python = fun () => 00:00:15 v #553 > > $'for row in range(!height): !fn1(row)' : () 00:00:15 v #554 > > } 00:00:15 v #555 > > sb |> sm'.obj_to_string 00:00:16 v #556 > > 00:00:16 v #557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #558 > > //// test 00:00:16 v #559 > > ///! fsharp 00:00:16 v #560 > > ///! cuda 00:00:16 v #561 > > ///! rust 00:00:16 v #562 > > ///! typescript 00:00:16 v #563 > > ///! python 00:00:16 v #564 > > 00:00:16 v #565 > > { a = 0.0; b = 0.0; c = 0.0 } 00:00:16 v #566 > > |> generate_frame 00:00:16 v #567 > > |> console.write_line 00:00:34 v #568 > > 00:00:34 v #569 > > ╭─[ 18.23s - return value ]────────────────────────────────────────────────────╮ 00:00:34 v #570 > > │ " │ 00:00:34 v #571 > > │ .py output (Cuda): │ 00:00:34 v #572 > > │ ............................................................................ │ 00:00:34 v #573 > > │ ............................................................................ │ 00:00:34 v #574 > > │ ........ │ 00:00:34 v #575 > > │ ............................................................................ │ 00:00:34 v #576 > > │ ............................................................................ │ 00:00:34 v #577 > > │ ........ │ 00:00:34 v #578 > > │ ............................................................................ │ 00:00:34 v #579 > > │ ............................................................................ │ 00:00:34 v #580 > > │ ........ │ 00:00:34 v #581 > > │ ............................................................................ │ 00:00:34 v #582 > > │ ............................................................................ │ 00:00:34 v #583 > > │ ........ │ 00:00:34 v #584 > > │ ............................................................................ │ 00:00:34 v #585 > > │ ............................................................................ │ 00:00:34 v #586 > > │ ........ │ 00:00:34 v #587 > > │ ............................................................................ │ 00:00:34 v #588 > > │ ............................................................................ │ 00:00:34 v #589 > > │ ........ │ 00:00:34 v #590 > > │ ............................................................................ │ 00:00:34 v #591 > > │ ............................................................................ │ 00:00:34 v #592 > > │ ........ │ 00:00:34 v #593 > > │ ............................................................................ │ 00:00:34 v #594 > > │ ............................................................................ │ 00:00:34 v #595 > > │ ........ │ 00:00:34 v #596 > > │ ............................................................................ │ 00:00:34 v #597 > > │ ............................................................................ │ 00:00:34 v #598 > > │ ........ │ 00:00:34 v #599 > > │ ............................................................................ │ 00:00:34 v #600 > > │ ............................................................................ │ 00:00:34 v #601 > > │ ............................................................................ │ 00:00:34 v #602 > > │ ........ │ 00:00:34 v #603 > > │ ............................................................................ │ 00:00:34 v #604 > > │ ............................................................................ │ 00:00:34 v #605 > > │ ........ │ 00:00:34 v #606 > > │ ............................................................................ │ 00:00:34 v #607 > > │ ............................................................................ │ 00:00:34 v #608 > > │ ........ │ 00:00:34 v #609 > > │ ............................................................................ │ 00:00:34 v #610 > > │ ............................................................................ │ 00:00:34 v #611 > > │ ........ │ 00:00:34 v #612 > > │ ............................................................................ │ 00:00:34 v #613 > > │ ............................................................................ │ 00:00:34 v #614 > > │ ........ │ 00:00:34 v #615 > > │ ............................................................................ │ 00:00:34 v #616 > > │ ............................................................................ │ 00:00:34 v #617 > > │ ........ │ 00:00:34 v #618 > > │ ............................................................................ │ 00:00:34 v #619 > > │ ............................................................................ │ 00:00:34 v #620 > > │ ........ │ 00:00:34 v #621 > > │ ............................................................................ │ 00:00:34 v #622 > > │ ............................................................................ │ 00:00:34 v #623 > > │ ........ │ 00:00:34 v #624 > > │ ............................................................................ │ 00:00:34 v #625 > > │ ............................................................................ │ 00:00:34 v #626 > > │ ........ │ 00:00:34 v #627 > > │ │ 00:00:34 v #628 > > │ │ 00:00:34 v #629 > > │ │ 00:00:34 v #630 > > │ " │ 00:00:34 v #631 > > │ │ 00:00:34 v #632 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 v #633 > > 00:00:34 v #634 > > ╭─[ 18.23s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:34 v #635 > > │ .fsx output: │ 00:00:34 v #636 > > │ ............................................................................ │ 00:00:34 v #637 > > │ ............................................................................ │ 00:00:34 v #638 > > │ ........ │ 00:00:34 v #639 > > │ ............................................................................ │ 00:00:34 v #640 > > │ ............................................................................ │ 00:00:34 v #641 > > │ ........ │ 00:00:34 v #642 > > │ ............................................................................ │ 00:00:34 v #643 > > │ ............................................................................ │ 00:00:34 v #644 > > │ ........ │ 00:00:34 v #645 > > │ ............................................................................ │ 00:00:34 v #646 > > │ ............................................................................ │ 00:00:34 v #647 > > │ ........ │ 00:00:34 v #648 > > │ ............................................................................ │ 00:00:34 v #649 > > │ ............................................................................ │ 00:00:34 v #650 > > │ ........ │ 00:00:34 v #651 > > │ ............................................................................ │ 00:00:34 v #652 > > │ ............................................................................ │ 00:00:34 v #653 > > │ ........ │ 00:00:34 v #654 > > │ ............................................................................ │ 00:00:34 v #655 > > │ ............................................................................ │ 00:00:34 v #656 > > │ ........ │ 00:00:34 v #657 > > │ ............................................................................ │ 00:00:34 v #658 > > │ ............................................................................ │ 00:00:34 v #659 > > │ ........ │ 00:00:34 v #660 > > │ ............................................................................ │ 00:00:34 v #661 > > │ ............................................................................ │ 00:00:34 v #662 > > │ ........ │ 00:00:34 v #663 > > │ ............................................................................ │ 00:00:34 v #664 > > │ ............................................................................ │ 00:00:34 v #665 > > │ ........ │ 00:00:34 v #666 > > │ ............................................................................ │ 00:00:34 v #667 > > │ ............................................................................ │ 00:00:34 v #668 > > │ ........ │ 00:00:34 v #669 > > │ ............................................................................ │ 00:00:34 v #670 > > │ ............................................................................ │ 00:00:34 v #671 > > │ ........ │ 00:00:34 v #672 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #673 > > │ ............................................................................ │ 00:00:34 v #674 > > │ ........ │ 00:00:34 v #675 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #676 > > │ ............................................................................ │ 00:00:34 v #677 > > │ ........ │ 00:00:34 v #678 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #679 > > │ ............................................................................ │ 00:00:34 v #680 > > │ ........ │ 00:00:34 v #681 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #682 > > │ ............................................................................ │ 00:00:34 v #683 > > │ ........ │ 00:00:34 v #684 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #685 > > │ ............................................................................ │ 00:00:34 v #686 > > │ ........ │ 00:00:34 v #687 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #688 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:34 v #689 > > │ ........ │ 00:00:34 v #690 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #691 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:34 v #692 > > │ ........ │ 00:00:34 v #693 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #694 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:34 v #695 > > │ ........ │ 00:00:34 v #696 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #697 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:34 v #698 > > │ ........ │ 00:00:34 v #699 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #700 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:34 v #701 > > │ ........ │ 00:00:34 v #702 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #703 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:34 v #704 > > │ ........ │ 00:00:34 v #705 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #706 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:34 v #707 > > │ ........ │ 00:00:34 v #708 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #709 > > │ .....;;;;;;;;;;;;;;;;;\................<<<<<<<<<............................ │ 00:00:34 v #710 > > │ ........ │ 00:00:34 v #711 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #712 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:34 v #713 > > │ ........ │ 00:00:34 v #714 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #715 > > │ .....<<<<<<<<<<<<<<<<<\..................................................... │ 00:00:34 v #716 > > │ ........ │ 00:00:34 v #717 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #718 > > │ ............................................................................ │ 00:00:34 v #719 > > │ ........ │ 00:00:34 v #720 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #721 > > │ ............................................................................ │ 00:00:34 v #722 > > │ ........ │ 00:00:34 v #723 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #724 > > │ ............................................................................ │ 00:00:34 v #725 > > │ ........ │ 00:00:34 v #726 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #727 > > │ ............................................................................ │ 00:00:34 v #728 > > │ ........ │ 00:00:34 v #729 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:34 v #730 > > │ ............................................................................ │ 00:00:34 v #731 > > │ ........ │ 00:00:34 v #732 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │ 00:00:34 v #733 > > │ ............................................................................ │ 00:00:34 v #734 > > │ ........ │ 00:00:34 v #735 > > │ ............................................................................ │ 00:00:34 v #736 > > │ ............................................................................ │ 00:00:34 v #737 > > │ ........ │ 00:00:34 v #738 > > │ ............................................................................ │ 00:00:34 v #739 > > │ ............................................................................ │ 00:00:34 v #740 > > │ ........ │ 00:00:34 v #741 > > │ ............................................................................ │ 00:00:34 v #742 > > │ ............................................................................ │ 00:00:34 v #743 > > │ ........ │ 00:00:34 v #744 > > │ ............................................................................ │ 00:00:34 v #745 > > │ ............................................................................ │ 00:00:34 v #746 > > │ ........ │ 00:00:34 v #747 > > │ ............................................................................ │ 00:00:34 v #748 > > │ ............................................................................ │ 00:00:34 v #749 > > │ ........ │ 00:00:34 v #750 > > │ ............................................................................ │ 00:00:34 v #751 > > │ ............................................................................ │ 00:00:34 v #752 > > │ ........ │ 00:00:34 v #753 > > │ ............................................................................ │ 00:00:34 v #754 > > │ ............................................................................ │ 00:00:34 v #755 > > │ ........ │ 00:00:34 v #756 > > │ ............................................................................ │ 00:00:34 v #757 > > │ ............................................................................ │ 00:00:34 v #758 > > │ ........ │ 00:00:34 v #759 > > │ ............................................................................ │ 00:00:34 v #760 > > │ ............................................................................ │ 00:00:34 v #761 > > │ ........ │ 00:00:34 v #762 > > │ ............................................................................ │ 00:00:34 v #763 > > │ ............................................................................ │ 00:00:34 v #764 > > │ ........ │ 00:00:34 v #765 > > │ ............................................................................ │ 00:00:34 v #766 > > │ ............................................................................ │ 00:00:34 v #767 > > │ ........ │ 00:00:34 v #768 > > │ │ 00:00:34 v #769 > > │ │ 00:00:34 v #770 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 v #771 > > 00:00:34 v #772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 v #773 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 v #774 > > │ ### main_loop │ 00:00:34 v #775 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 v #776 > > 00:00:34 v #777 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 v #778 > > let rec mainLoop rot = async { 00:00:34 v #779 > > let frame = generateFrame rot 00:00:34 v #780 > > // Console.SetCursorPosition(0, 0) 00:00:34 v #781 > > Console.Write(frame) 00:00:34 v #782 > > let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } 00:00:34 v #783 > > do! Async.Sleep 16 00:00:34 v #784 > > return! mainLoop rot' 00:00:34 v #785 > > } 00:00:34 v #786 > > 00:00:34 v #787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 v #788 > > let rec main_loop max i rot = 00:00:34 v #789 > > fun () => 00:00:34 v #790 > > inl rot = join rot 00:00:34 v #791 > > inl frame = rot |> generate_frame 00:00:34 v #792 > > if max < 0 then 00:00:34 v #793 > > run_target function 00:00:34 v #794 > > | Fsharp (Native) => fun () => 00:00:34 v #795 > > $'System.Console.SetCursorPosition (0, 0)' 00:00:34 v #796 > > | Rust _ => fun () => 00:00:34 v #797 > > open rust.rust_operators 00:00:34 v #798 > > !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"') 00:00:34 v #799 > > | TypeScript _ => fun () => 00:00:34 v #800 > > open typescript_operators 00:00:34 v #801 > > !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"') 00:00:34 v #802 > > | Python _ => fun () => 00:00:34 v #803 > > open python_operators 00:00:34 v #804 > > // global "import sys" 00:00:34 v #805 > > !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"') 00:00:34 v #806 > > | Cuda _ => fun () => 00:00:34 v #807 > > global "import sys" 00:00:34 v #808 > > $'sys.stdout.write("\\033[[1;1H")' 00:00:34 v #809 > > | _ => fun () => () 00:00:34 v #810 > > frame |> console.write_line 00:00:34 v #811 > > async.sleep 1 |> async.do 00:00:34 v #812 > > if max > 0 && i >= max 00:00:34 v #813 > > then () 00:00:34 v #814 > > else 00:00:34 v #815 > > { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } 00:00:34 v #816 > > |> main_loop max (i + 1) 00:00:34 v #817 > > |> async.return_await' 00:00:34 v #818 > > |> async.new_async_unit 00:00:34 v #819 > > 00:00:34 v #820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 v #821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 v #822 > > │ ### main │ 00:00:34 v #823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 v #824 > > 00:00:34 v #825 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 v #826 > > // [[<EntryPoint>]] 00:00:34 v #827 > > let main argv = 00:00:34 v #828 > > // Console.CursorVisible <- false 00:00:34 v #829 > > Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 }) 00:00:34 v #830 > > System.Threading.Thread.Sleep(1000) 00:00:34 v #831 > > 00:00:34 v #832 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 v #833 > > // main [[||]] 00:00:34 v #834 > > 00:00:34 v #835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 v #836 > > inl main (_args : array_base string) = 00:00:34 v #837 > > inl console = 00:00:34 v #838 > > run_target function 00:00:34 v #839 > > | Fsharp (Wasm) => fun () => false 00:00:34 v #840 > > | _ => fun () => 00:00:34 v #841 > > ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length 00:00:34 v #842 > > |> (=) 0i32) 00:00:34 v #843 > > && ("AUTOMATION" |> env.get_environment_variable |> sm'.length 00:00:34 v #844 > > |> (=) 0i32) 00:00:34 v #845 > > if console then 00:00:34 v #846 > > run_target function 00:00:34 v #847 > > | Fsharp (Native) => fun () => $'System.Console.CursorVisible <- 00:00:34 v #848 > > false' 00:00:34 v #849 > > | Rust _ => fun () => 00:00:34 v #850 > > open rust.rust_operators 00:00:34 v #851 > > !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"') 00:00:34 v #852 > > | TypeScript _ => fun () => 00:00:34 v #853 > > open typescript_operators 00:00:34 v #854 > > !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"') 00:00:34 v #855 > > | Python _ => fun () => 00:00:34 v #856 > > open python_operators 00:00:34 v #857 > > python.import_all "sys" 00:00:34 v #858 > > !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"') 00:00:34 v #859 > > | _ => fun () => () 00:00:34 v #860 > > main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 } 00:00:34 v #861 > > |> fun x => 00:00:34 v #862 > > run_target_args' x function 00:00:34 v #863 > > | Fsharp (Wasm) 00:00:34 v #864 > > | TypeScript _ => fun x => 00:00:34 v #865 > > x 00:00:34 v #866 > > |> async.start_child 00:00:34 v #867 > > |> ignore 00:00:34 v #868 > > | Python _ => fun x => 00:00:34 v #869 > > x 00:00:34 v #870 > > |> async.start_immediate 00:00:34 v #871 > > threading.sleep' 2000 00:00:34 v #872 > > | _ => fun x => 00:00:34 v #873 > > x 00:00:34 v #874 > > |> async.run_synchronously 00:00:34 v #875 > > 00:00:34 v #876 > > inl main () = 00:00:34 v #877 > > backend_switch { 00:00:34 v #878 > > Fsharp = fun () => 00:00:34 v #879 > > $'let main_ = !main ' 00:00:34 v #880 > > $'#if \!FABLE_COMPILER_RUST' 00:00:34 v #881 > > $'main_ [[||]]' : () 00:00:34 v #882 > > $'#else' 00:00:34 v #883 > > $'let main args = main_ [[||]]; 0' : () 00:00:34 v #884 > > $'#endif' : () 00:00:34 v #885 > > Python = fun () => 00:00:34 v #886 > > main ;[[]] 00:00:34 v #887 > > } 00:00:34 v #888 > > : () 00:00:37 v #889 > > 00:00:37 v #890 > > ╭─[ 2.83s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:37 v #891 > > │ ............................................................................ │ 00:00:37 v #892 > > │ ............................................................................ │ 00:00:37 v #893 > > │ ........ │ 00:00:37 v #894 > > │ ............................................................................ │ 00:00:37 v #895 > > │ ............................................................................ │ 00:00:37 v #896 > > │ ........ │ 00:00:37 v #897 > > │ ............................................................................ │ 00:00:37 v #898 > > │ ............................................................................ │ 00:00:37 v #899 > > │ ........ │ 00:00:37 v #900 > > │ ............................................................................ │ 00:00:37 v #901 > > │ ............................................................................ │ 00:00:37 v #902 > > │ ........ │ 00:00:37 v #903 > > │ ............................................................................ │ 00:00:37 v #904 > > │ ............................................................................ │ 00:00:37 v #905 > > │ ........ │ 00:00:37 v #906 > > │ ............................................................................ │ 00:00:37 v #907 > > │ ............................................................................ │ 00:00:37 v #908 > > │ ........ │ 00:00:37 v #909 > > │ ............................................................................ │ 00:00:37 v #910 > > │ ............................................................................ │ 00:00:37 v #911 > > │ ........ │ 00:00:37 v #912 > > │ ............................................................................ │ 00:00:37 v #913 > > │ ............................................................................ │ 00:00:37 v #914 > > │ ........ │ 00:00:37 v #915 > > │ ............................................................................ │ 00:00:37 v #916 > > │ ............................................................................ │ 00:00:37 v #917 > > │ ........ │ 00:00:37 v #918 > > │ ............................................................................ │ 00:00:37 v #919 > > │ ............................................................................ │ 00:00:37 v #920 > > │ ........ │ 00:00:37 v #921 > > │ ............................................................................ │ 00:00:37 v #922 > > │ ............................................................................ │ 00:00:37 v #923 > > │ ........ │ 00:00:37 v #924 > > │ ............................................................................ │ 00:00:37 v #925 > > │ ............................................................................ │ 00:00:37 v #926 > > │ ........ │ 00:00:37 v #927 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #928 > > │ ............................................................................ │ 00:00:37 v #929 > > │ ........ │ 00:00:37 v #930 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #931 > > │ ............................................................................ │ 00:00:37 v #932 > > │ ........ │ 00:00:37 v #933 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #934 > > │ ............................................................................ │ 00:00:37 v #935 > > │ ........ │ 00:00:37 v #936 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #937 > > │ ............................................................................ │ 00:00:37 v #938 > > │ ........ │ 00:00:37 v #939 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #940 > > │ ............................................................................ │ 00:00:37 v #941 > > │ ........ │ 00:00:37 v #942 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #943 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:37 v #944 > > │ ........ │ 00:00:37 v #945 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #946 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:37 v #947 > > │ ........ │ 00:00:37 v #948 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #949 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:37 v #950 > > │ ........ │ 00:00:37 v #951 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #952 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:37 v #953 > > │ ........ │ 00:00:37 v #954 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #955 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:37 v #956 > > │ ........ │ 00:00:37 v #957 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #958 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:37 v #959 > > │ ........ │ 00:00:37 v #960 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #961 > > │ .....;;;;;;;;;;;;;;;;;\................;;;;;;;;;\........................... │ 00:00:37 v #962 > > │ ........ │ 00:00:37 v #963 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #964 > > │ .....;;;;;;;;;;;;;;;;;\................<<<<<<<<<............................ │ 00:00:37 v #965 > > │ ........ │ 00:00:37 v #966 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #967 > > │ .....;;;;;;;;;;;;;;;;;\..................................................... │ 00:00:37 v #968 > > │ ........ │ 00:00:37 v #969 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #970 > > │ .....<<<<<<<<<<<<<<<<<\..................................................... │ 00:00:37 v #971 > > │ ........ │ 00:00:37 v #972 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #973 > > │ ............................................................................ │ 00:00:37 v #974 > > │ ........ │ 00:00:37 v #975 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #976 > > │ ............................................................................ │ 00:00:37 v #977 > > │ ........ │ 00:00:37 v #978 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #979 > > │ ............................................................................ │ 00:00:37 v #980 > > │ ........ │ 00:00:37 v #981 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #982 > > │ ............................................................................ │ 00:00:37 v #983 > > │ ........ │ 00:00:37 v #984 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #985 > > │ ............................................................................ │ 00:00:37 v #986 > > │ ........ │ 00:00:37 v #987 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #988 > > │ ............................................................................ │ 00:00:37 v #989 > > │ ........ │ 00:00:37 v #990 > > │ ............................................................................ │ 00:00:37 v #991 > > │ ............................................................................ │ 00:00:37 v #992 > > │ ........ │ 00:00:37 v #993 > > │ ............................................................................ │ 00:00:37 v #994 > > │ ............................................................................ │ 00:00:37 v #995 > > │ ........ │ 00:00:37 v #996 > > │ ............................................................................ │ 00:00:37 v #997 > > │ ............................................................................ │ 00:00:37 v #998 > > │ ........ │ 00:00:37 v #999 > > │ ............................................................................ │ 00:00:37 v #1000 > > │ ............................................................................ │ 00:00:37 v #1001 > > │ ........ │ 00:00:37 v #1002 > > │ ............................................................................ │ 00:00:37 v #1003 > > │ ............................................................................ │ 00:00:37 v #1004 > > │ ........ │ 00:00:37 v #1005 > > │ ............................................................................ │ 00:00:37 v #1006 > > │ ............................................................................ │ 00:00:37 v #1007 > > │ ........ │ 00:00:37 v #1008 > > │ ............................................................................ │ 00:00:37 v #1009 > > │ ............................................................................ │ 00:00:37 v #1010 > > │ ........ │ 00:00:37 v #1011 > > │ ............................................................................ │ 00:00:37 v #1012 > > │ ............................................................................ │ 00:00:37 v #1013 > > │ ........ │ 00:00:37 v #1014 > > │ ............................................................................ │ 00:00:37 v #1015 > > │ ............................................................................ │ 00:00:37 v #1016 > > │ ........ │ 00:00:37 v #1017 > > │ ............................................................................ │ 00:00:37 v #1018 > > │ ............................................................................ │ 00:00:37 v #1019 > > │ ........ │ 00:00:37 v #1020 > > │ ............................................................................ │ 00:00:37 v #1021 > > │ ............................................................................ │ 00:00:37 v #1022 > > │ ........ │ 00:00:37 v #1023 > > │ │ 00:00:37 v #1024 > > │ ............................................................................ │ 00:00:37 v #1025 > > │ ............................................................................ │ 00:00:37 v #1026 > > │ ........ │ 00:00:37 v #1027 > > │ ............................................................................ │ 00:00:37 v #1028 > > │ ............................................................................ │ 00:00:37 v #1029 > > │ ........ │ 00:00:37 v #1030 > > │ ............................................................................ │ 00:00:37 v #1031 > > │ ............................................................................ │ 00:00:37 v #1032 > > │ ........ │ 00:00:37 v #1033 > > │ ............................................................................ │ 00:00:37 v #1034 > > │ ............................................................................ │ 00:00:37 v #1035 > > │ ........ │ 00:00:37 v #1036 > > │ ............................................................................ │ 00:00:37 v #1037 > > │ ............................................................................ │ 00:00:37 v #1038 > > │ ........ │ 00:00:37 v #1039 > > │ ............................................................................ │ 00:00:37 v #1040 > > │ ............................................................................ │ 00:00:37 v #1041 > > │ ........ │ 00:00:37 v #1042 > > │ ............................................................................ │ 00:00:37 v #1043 > > │ ............................................................................ │ 00:00:37 v #1044 > > │ ........ │ 00:00:37 v #1045 > > │ ............................................................................ │ 00:00:37 v #1046 > > │ ............................................................................ │ 00:00:37 v #1047 > > │ ........ │ 00:00:37 v #1048 > > │ ............................................................................ │ 00:00:37 v #1049 > > │ ............................................................................ │ 00:00:37 v #1050 > > │ ........ │ 00:00:37 v #1051 > > │ ............................................................................ │ 00:00:37 v #1052 > > │ ............................................................................ │ 00:00:37 v #1053 > > │ ........ │ 00:00:37 v #1054 > > │ ............................................................................ │ 00:00:37 v #1055 > > │ ............................................................................ │ 00:00:37 v #1056 > > │ ........ │ 00:00:37 v #1057 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1058 > > │ ............................................................................ │ 00:00:37 v #1059 > > │ ........ │ 00:00:37 v #1060 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1061 > > │ ............................................................................ │ 00:00:37 v #1062 > > │ ........ │ 00:00:37 v #1063 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1064 > > │ ............................................................................ │ 00:00:37 v #1065 > > │ ........ │ 00:00:37 v #1066 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1067 > > │ ............................................................................ │ 00:00:37 v #1068 > > │ ........ │ 00:00:37 v #1069 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1070 > > │ ............................................................................ │ 00:00:37 v #1071 > > │ ........ │ 00:00:37 v #1072 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1073 > > │ ............................................................................ │ 00:00:37 v #1074 > > │ ........ │ 00:00:37 v #1075 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1076 > > │ .....;;;;;;;;;;;;;;;;;;\.................................................... │ 00:00:37 v #1077 > > │ ........ │ 00:00:37 v #1078 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1079 > > │ .....;;;;;;;;;;;;;;;;;;\.................................................... │ 00:00:37 v #1080 > > │ ........ │ 00:00:37 v #1081 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1082 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │ 00:00:37 v #1083 > > │ ........ │ 00:00:37 v #1084 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1085 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │ 00:00:37 v #1086 > > │ ........ │ 00:00:37 v #1087 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1088 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │ 00:00:37 v #1089 > > │ ........ │ 00:00:37 v #1090 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1091 > > │ .....;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;........................... │ 00:00:37 v #1092 > > │ ........ │ 00:00:37 v #1093 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1094 > > │ .....;;;;;;;;;;;;;;;;;;;................;;;;;<<<<........................... │ 00:00:37 v #1095 > > │ ........ │ 00:00:37 v #1096 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1097 > > │ .....;;;;;;;;;;;;;;;;;;;................<<<<<............................... │ 00:00:37 v #1098 > > │ ........ │ 00:00:37 v #1099 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1100 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1101 > > │ ........ │ 00:00:37 v #1102 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1103 > > │ .....<<<<<<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #1104 > > │ ........ │ 00:00:37 v #1105 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1106 > > │ ............................................................................ │ 00:00:37 v #1107 > > │ ........ │ 00:00:37 v #1108 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1109 > > │ ............................................................................ │ 00:00:37 v #1110 > > │ ........ │ 00:00:37 v #1111 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1112 > > │ ............................................................................ │ 00:00:37 v #1113 > > │ ........ │ 00:00:37 v #1114 > > │ ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1115 > > │ ............................................................................ │ 00:00:37 v #1116 > > │ ........ │ 00:00:37 v #1117 > > │ ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.............. │ 00:00:37 v #1118 > > │ ............................................................................ │ 00:00:37 v #1119 > > │ ........ │ 00:00:37 v #1120 > > │ ............................................................................ │ 00:00:37 v #1121 > > │ ............................................................................ │ 00:00:37 v #1122 > > │ ........ │ 00:00:37 v #1123 > > │ ............................................................................ │ 00:00:37 v #1124 > > │ ............................................................................ │ 00:00:37 v #1125 > > │ ........ │ 00:00:37 v #1126 > > │ ............................................................................ │ 00:00:37 v #1127 > > │ ............................................................................ │ 00:00:37 v #1128 > > │ ........ │ 00:00:37 v #1129 > > │ ............................................................................ │ 00:00:37 v #1130 > > │ ............................................................................ │ 00:00:37 v #1131 > > │ ........ │ 00:00:37 v #1132 > > │ ............................................................................ │ 00:00:37 v #1133 > > │ ............................................................................ │ 00:00:37 v #1134 > > │ ........ │ 00:00:37 v #1135 > > │ ............................................................................ │ 00:00:37 v #1136 > > │ ............................................................................ │ 00:00:37 v #1137 > > │ ........ │ 00:00:37 v #1138 > > │ ............................................................................ │ 00:00:37 v #1139 > > │ ............................................................................ │ 00:00:37 v #1140 > > │ ........ │ 00:00:37 v #1141 > > │ ............................................................................ │ 00:00:37 v #1142 > > │ ............................................................................ │ 00:00:37 v #1143 > > │ ........ │ 00:00:37 v #1144 > > │ ............................................................................ │ 00:00:37 v #1145 > > │ ............................................................................ │ 00:00:37 v #1146 > > │ ........ │ 00:00:37 v #1147 > > │ ............................................................................ │ 00:00:37 v #1148 > > │ ............................................................................ │ 00:00:37 v #1149 > > │ ........ │ 00:00:37 v #1150 > > │ ............................................................................ │ 00:00:37 v #1151 > > │ ............................................................................ │ 00:00:37 v #1152 > > │ ........ │ 00:00:37 v #1153 > > │ ............................................................................ │ 00:00:37 v #1154 > > │ ............................................................................ │ 00:00:37 v #1155 > > │ ........ │ 00:00:37 v #1156 > > │ │ 00:00:37 v #1157 > > │ ............................................................................ │ 00:00:37 v #1158 > > │ ............................................................................ │ 00:00:37 v #1159 > > │ ........ │ 00:00:37 v #1160 > > │ ............................................................................ │ 00:00:37 v #1161 > > │ ............................................................................ │ 00:00:37 v #1162 > > │ ........ │ 00:00:37 v #1163 > > │ ............................................................................ │ 00:00:37 v #1164 > > │ ............................................................................ │ 00:00:37 v #1165 > > │ ........ │ 00:00:37 v #1166 > > │ ............................................................................ │ 00:00:37 v #1167 > > │ ............................................................................ │ 00:00:37 v #1168 > > │ ........ │ 00:00:37 v #1169 > > │ ............................................................................ │ 00:00:37 v #1170 > > │ ............................................................................ │ 00:00:37 v #1171 > > │ ........ │ 00:00:37 v #1172 > > │ ............................................................................ │ 00:00:37 v #1173 > > │ ............................................................................ │ 00:00:37 v #1174 > > │ ........ │ 00:00:37 v #1175 > > │ ............................................................................ │ 00:00:37 v #1176 > > │ ............................................................................ │ 00:00:37 v #1177 > > │ ........ │ 00:00:37 v #1178 > > │ ............................................................................ │ 00:00:37 v #1179 > > │ ............................................................................ │ 00:00:37 v #1180 > > │ ........ │ 00:00:37 v #1181 > > │ ............................................................................ │ 00:00:37 v #1182 > > │ ............................................................................ │ 00:00:37 v #1183 > > │ ........ │ 00:00:37 v #1184 > > │ ............................................................................ │ 00:00:37 v #1185 > > │ ............................................................................ │ 00:00:37 v #1186 > > │ ........ │ 00:00:37 v #1187 > > │ ............................................................................ │ 00:00:37 v #1188 > > │ ............................................................................ │ 00:00:37 v #1189 > > │ ........ │ 00:00:37 v #1190 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1191 > > │ ............................................................................ │ 00:00:37 v #1192 > > │ ........ │ 00:00:37 v #1193 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1194 > > │ ............................................................................ │ 00:00:37 v #1195 > > │ ........ │ 00:00:37 v #1196 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1197 > > │ ............................................................................ │ 00:00:37 v #1198 > > │ ........ │ 00:00:37 v #1199 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1200 > > │ ............................................................................ │ 00:00:37 v #1201 > > │ ........ │ 00:00:37 v #1202 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1203 > > │ ............................................................................ │ 00:00:37 v #1204 > > │ ........ │ 00:00:37 v #1205 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1206 > > │ ............................................................................ │ 00:00:37 v #1207 > > │ ........ │ 00:00:37 v #1208 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1209 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1210 > > │ ........ │ 00:00:37 v #1211 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1212 > > │ .....;;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1213 > > │ ........ │ 00:00:37 v #1214 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1215 > > │ .....;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │ 00:00:37 v #1216 > > │ ........ │ 00:00:37 v #1217 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1218 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │ 00:00:37 v #1219 > > │ ........ │ 00:00:37 v #1220 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1221 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │ 00:00:37 v #1222 > > │ ........ │ 00:00:37 v #1223 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1224 > > │ .....;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │ 00:00:37 v #1225 > > │ ........ │ 00:00:37 v #1226 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1227 > > │ .....;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<........................... │ 00:00:37 v #1228 > > │ ........ │ 00:00:37 v #1229 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1230 > > │ ......;;;;;;;;;;;;;;;;;;...............<<<<<<<<<............................ │ 00:00:37 v #1231 > > │ ........ │ 00:00:37 v #1232 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1233 > > │ ......;;;;;;;;;;<<<<<<<<.................................................... │ 00:00:37 v #1234 > > │ ........ │ 00:00:37 v #1235 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1236 > > │ ......<<<<<<<<<<............................................................ │ 00:00:37 v #1237 > > │ ........ │ 00:00:37 v #1238 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1239 > > │ ............................................................................ │ 00:00:37 v #1240 > > │ ........ │ 00:00:37 v #1241 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1242 > > │ ............................................................................ │ 00:00:37 v #1243 > > │ ........ │ 00:00:37 v #1244 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1245 > > │ ............................................................................ │ 00:00:37 v #1246 > > │ ........ │ 00:00:37 v #1247 > > │ .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\............. │ 00:00:37 v #1248 > > │ ............................................................................ │ 00:00:37 v #1249 > > │ ........ │ 00:00:37 v #1250 > > │ .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<........................... │ 00:00:37 v #1251 > > │ ............................................................................ │ 00:00:37 v #1252 > > │ ........ │ 00:00:37 v #1253 > > │ ............................................................................ │ 00:00:37 v #1254 > > │ ............................................................................ │ 00:00:37 v #1255 > > │ ........ │ 00:00:37 v #1256 > > │ ............................................................................ │ 00:00:37 v #1257 > > │ ............................................................................ │ 00:00:37 v #1258 > > │ ........ │ 00:00:37 v #1259 > > │ ............................................................................ │ 00:00:37 v #1260 > > │ ............................................................................ │ 00:00:37 v #1261 > > │ ........ │ 00:00:37 v #1262 > > │ ............................................................................ │ 00:00:37 v #1263 > > │ ............................................................................ │ 00:00:37 v #1264 > > │ ........ │ 00:00:37 v #1265 > > │ ............................................................................ │ 00:00:37 v #1266 > > │ ............................................................................ │ 00:00:37 v #1267 > > │ ........ │ 00:00:37 v #1268 > > │ ............................................................................ │ 00:00:37 v #1269 > > │ ............................................................................ │ 00:00:37 v #1270 > > │ ........ │ 00:00:37 v #1271 > > │ ............................................................................ │ 00:00:37 v #1272 > > │ ............................................................................ │ 00:00:37 v #1273 > > │ ........ │ 00:00:37 v #1274 > > │ ............................................................................ │ 00:00:37 v #1275 > > │ ............................................................................ │ 00:00:37 v #1276 > > │ ........ │ 00:00:37 v #1277 > > │ ............................................................................ │ 00:00:37 v #1278 > > │ ............................................................................ │ 00:00:37 v #1279 > > │ ........ │ 00:00:37 v #1280 > > │ ............................................................................ │ 00:00:37 v #1281 > > │ ............................................................................ │ 00:00:37 v #1282 > > │ ........ │ 00:00:37 v #1283 > > │ ............................................................................ │ 00:00:37 v #1284 > > │ ............................................................................ │ 00:00:37 v #1285 > > │ ........ │ 00:00:37 v #1286 > > │ ............................................................................ │ 00:00:37 v #1287 > > │ ............................................................................ │ 00:00:37 v #1288 > > │ ........ │ 00:00:37 v #1289 > > │ │ 00:00:37 v #1290 > > │ ............................................................................ │ 00:00:37 v #1291 > > │ ............................................................................ │ 00:00:37 v #1292 > > │ ........ │ 00:00:37 v #1293 > > │ ............................................................................ │ 00:00:37 v #1294 > > │ ............................................................................ │ 00:00:37 v #1295 > > │ ........ │ 00:00:37 v #1296 > > │ ............................................................................ │ 00:00:37 v #1297 > > │ ............................................................................ │ 00:00:37 v #1298 > > │ ........ │ 00:00:37 v #1299 > > │ ............................................................................ │ 00:00:37 v #1300 > > │ ............................................................................ │ 00:00:37 v #1301 > > │ ........ │ 00:00:37 v #1302 > > │ ............................................................................ │ 00:00:37 v #1303 > > │ ............................................................................ │ 00:00:37 v #1304 > > │ ........ │ 00:00:37 v #1305 > > │ ............................................................................ │ 00:00:37 v #1306 > > │ ............................................................................ │ 00:00:37 v #1307 > > │ ........ │ 00:00:37 v #1308 > > │ ............................................................................ │ 00:00:37 v #1309 > > │ ............................................................................ │ 00:00:37 v #1310 > > │ ........ │ 00:00:37 v #1311 > > │ ............................................................................ │ 00:00:37 v #1312 > > │ ............................................................................ │ 00:00:37 v #1313 > > │ ........ │ 00:00:37 v #1314 > > │ ............................................................................ │ 00:00:37 v #1315 > > │ ............................................................................ │ 00:00:37 v #1316 > > │ ........ │ 00:00:37 v #1317 > > │ ............................................................................ │ 00:00:37 v #1318 > > │ ............................................................................ │ 00:00:37 v #1319 > > │ ........ │ 00:00:37 v #1320 > > │ ......................;;;;;;;;;;;........................................... │ 00:00:37 v #1321 > > │ ............................................................................ │ 00:00:37 v #1322 > > │ ........ │ 00:00:37 v #1323 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1324 > > │ ............................................................................ │ 00:00:37 v #1325 > > │ ........ │ 00:00:37 v #1326 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1327 > > │ ............................................................................ │ 00:00:37 v #1328 > > │ ........ │ 00:00:37 v #1329 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1330 > > │ ............................................................................ │ 00:00:37 v #1331 > > │ ........ │ 00:00:37 v #1332 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1333 > > │ ............................................................................ │ 00:00:37 v #1334 > > │ ........ │ 00:00:37 v #1335 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1336 > > │ ............................................................................ │ 00:00:37 v #1337 > > │ ........ │ 00:00:37 v #1338 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1339 > > │ ..................;;;;;;.................................................... │ 00:00:37 v #1340 > > │ ........ │ 00:00:37 v #1341 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1342 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1343 > > │ ........ │ 00:00:37 v #1344 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1345 > > │ ...../;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1346 > > │ ........ │ 00:00:37 v #1347 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1348 > > │ ...../;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │ 00:00:37 v #1349 > > │ ........ │ 00:00:37 v #1350 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1351 > > │ ...../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │ 00:00:37 v #1352 > > │ ........ │ 00:00:37 v #1353 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1354 > > │ ...../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;........................... │ 00:00:37 v #1355 > > │ ........ │ 00:00:37 v #1356 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1357 > > │ ...../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;........................... │ 00:00:37 v #1358 > > │ ........ │ 00:00:37 v #1359 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1360 > > │ ...../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<........................... │ 00:00:37 v #1361 > > │ ........ │ 00:00:37 v #1362 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1363 > > │ ...../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<............................ │ 00:00:37 v #1364 > > │ ........ │ 00:00:37 v #1365 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1366 > > │ ...../<<<<<<<<<<<<<<<<<<<................................................... │ 00:00:37 v #1367 > > │ ........ │ 00:00:37 v #1368 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1369 > > │ ...../<<<<<<<<<<<<<<<....................................................... │ 00:00:37 v #1370 > > │ ........ │ 00:00:37 v #1371 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1372 > > │ ............................................................................ │ 00:00:37 v #1373 > > │ ........ │ 00:00:37 v #1374 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1375 > > │ ............................................................................ │ 00:00:37 v #1376 > > │ ........ │ 00:00:37 v #1377 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1378 > > │ ............................................................................ │ 00:00:37 v #1379 > > │ ........ │ 00:00:37 v #1380 > > │ ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #1381 > > │ ............................................................................ │ 00:00:37 v #1382 > > │ ........ │ 00:00:37 v #1383 > > │ ......................<<<<<<<<<<............................................ │ 00:00:37 v #1384 > > │ ............................................................................ │ 00:00:37 v #1385 > > │ ........ │ 00:00:37 v #1386 > > │ ............................................................................ │ 00:00:37 v #1387 > > │ ............................................................................ │ 00:00:37 v #1388 > > │ ........ │ 00:00:37 v #1389 > > │ ............................................................................ │ 00:00:37 v #1390 > > │ ............................................................................ │ 00:00:37 v #1391 > > │ ........ │ 00:00:37 v #1392 > > │ ............................................................................ │ 00:00:37 v #1393 > > │ ............................................................................ │ 00:00:37 v #1394 > > │ ........ │ 00:00:37 v #1395 > > │ ............................................................................ │ 00:00:37 v #1396 > > │ ............................................................................ │ 00:00:37 v #1397 > > │ ........ │ 00:00:37 v #1398 > > │ ............................................................................ │ 00:00:37 v #1399 > > │ ............................................................................ │ 00:00:37 v #1400 > > │ ........ │ 00:00:37 v #1401 > > │ ............................................................................ │ 00:00:37 v #1402 > > │ ............................................................................ │ 00:00:37 v #1403 > > │ ........ │ 00:00:37 v #1404 > > │ ............................................................................ │ 00:00:37 v #1405 > > │ ............................................................................ │ 00:00:37 v #1406 > > │ ........ │ 00:00:37 v #1407 > > │ ............................................................................ │ 00:00:37 v #1408 > > │ ............................................................................ │ 00:00:37 v #1409 > > │ ........ │ 00:00:37 v #1410 > > │ ............................................................................ │ 00:00:37 v #1411 > > │ ............................................................................ │ 00:00:37 v #1412 > > │ ........ │ 00:00:37 v #1413 > > │ ............................................................................ │ 00:00:37 v #1414 > > │ ............................................................................ │ 00:00:37 v #1415 > > │ ........ │ 00:00:37 v #1416 > > │ ............................................................................ │ 00:00:37 v #1417 > > │ ............................................................................ │ 00:00:37 v #1418 > > │ ........ │ 00:00:37 v #1419 > > │ ............................................................................ │ 00:00:37 v #1420 > > │ ............................................................................ │ 00:00:37 v #1421 > > │ ........ │ 00:00:37 v #1422 > > │ │ 00:00:37 v #1423 > > │ ............................................................................ │ 00:00:37 v #1424 > > │ ............................................................................ │ 00:00:37 v #1425 > > │ ........ │ 00:00:37 v #1426 > > │ ............................................................................ │ 00:00:37 v #1427 > > │ ............................................................................ │ 00:00:37 v #1428 > > │ ........ │ 00:00:37 v #1429 > > │ ............................................................................ │ 00:00:37 v #1430 > > │ ............................................................................ │ 00:00:37 v #1431 > > │ ........ │ 00:00:37 v #1432 > > │ ............................................................................ │ 00:00:37 v #1433 > > │ ............................................................................ │ 00:00:37 v #1434 > > │ ........ │ 00:00:37 v #1435 > > │ ............................................................................ │ 00:00:37 v #1436 > > │ ............................................................................ │ 00:00:37 v #1437 > > │ ........ │ 00:00:37 v #1438 > > │ ............................................................................ │ 00:00:37 v #1439 > > │ ............................................................................ │ 00:00:37 v #1440 > > │ ........ │ 00:00:37 v #1441 > > │ ............................................................................ │ 00:00:37 v #1442 > > │ ............................................................................ │ 00:00:37 v #1443 > > │ ........ │ 00:00:37 v #1444 > > │ ............................................................................ │ 00:00:37 v #1445 > > │ ............................................................................ │ 00:00:37 v #1446 > > │ ........ │ 00:00:37 v #1447 > > │ ............................................................................ │ 00:00:37 v #1448 > > │ ............................................................................ │ 00:00:37 v #1449 > > │ ........ │ 00:00:37 v #1450 > > │ ............................................................................ │ 00:00:37 v #1451 > > │ ............................................................................ │ 00:00:37 v #1452 > > │ ........ │ 00:00:37 v #1453 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1454 > > │ ............................................................................ │ 00:00:37 v #1455 > > │ ........ │ 00:00:37 v #1456 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1457 > > │ ............................................................................ │ 00:00:37 v #1458 > > │ ........ │ 00:00:37 v #1459 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1460 > > │ ............................................................................ │ 00:00:37 v #1461 > > │ ........ │ 00:00:37 v #1462 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1463 > > │ ............................................................................ │ 00:00:37 v #1464 > > │ ........ │ 00:00:37 v #1465 > > │ ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1466 > > │ ............................................................................ │ 00:00:37 v #1467 > > │ ........ │ 00:00:37 v #1468 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1469 > > │ ............................................................................ │ 00:00:37 v #1470 > > │ ........ │ 00:00:37 v #1471 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #1472 > > │ ......;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1473 > > │ ........ │ 00:00:37 v #1474 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1475 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1476 > > │ ........ │ 00:00:37 v #1477 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1478 > > │ ...../;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1479 > > │ ........ │ 00:00:37 v #1480 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1481 > > │ ....>/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;........................... │ 00:00:37 v #1482 > > │ ........ │ 00:00:37 v #1483 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1484 > > │ ...../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;........................... │ 00:00:37 v #1485 > > │ ........ │ 00:00:37 v #1486 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1487 > > │ ...../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;........................... │ 00:00:37 v #1488 > > │ ........ │ 00:00:37 v #1489 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1490 > > │ ...../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.......................... │ 00:00:37 v #1491 > > │ ........ │ 00:00:37 v #1492 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1493 > > │ .....//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.......................... │ 00:00:37 v #1494 > > │ ........ │ 00:00:37 v #1495 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1496 > > │ .....//;;;;;;;;;;;;;;;;;;............../<<<<<<<<............................ │ 00:00:37 v #1497 > > │ ........ │ 00:00:37 v #1498 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1499 > > │ .....//<<<<<<<<<<<<<<<<<<................................................... │ 00:00:37 v #1500 > > │ ........ │ 00:00:37 v #1501 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1502 > > │ ...../<<<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #1503 > > │ ........ │ 00:00:37 v #1504 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │ 00:00:37 v #1505 > > │ ............................................................................ │ 00:00:37 v #1506 > > │ ........ │ 00:00:37 v #1507 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #1508 > > │ ............................................................................ │ 00:00:37 v #1509 > > │ ........ │ 00:00:37 v #1510 > > │ ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #1511 > > │ ............................................................................ │ 00:00:37 v #1512 > > │ ........ │ 00:00:37 v #1513 > > │ ........................<<<<<<<<<<<<<<<<<<<<<<.............................. │ 00:00:37 v #1514 > > │ ............................................................................ │ 00:00:37 v #1515 > > │ ........ │ 00:00:37 v #1516 > > │ ............................................................................ │ 00:00:37 v #1517 > > │ ............................................................................ │ 00:00:37 v #1518 > > │ ........ │ 00:00:37 v #1519 > > │ ............................................................................ │ 00:00:37 v #1520 > > │ ............................................................................ │ 00:00:37 v #1521 > > │ ........ │ 00:00:37 v #1522 > > │ ............................................................................ │ 00:00:37 v #1523 > > │ ............................................................................ │ 00:00:37 v #1524 > > │ ........ │ 00:00:37 v #1525 > > │ ............................................................................ │ 00:00:37 v #1526 > > │ ............................................................................ │ 00:00:37 v #1527 > > │ ........ │ 00:00:37 v #1528 > > │ ............................................................................ │ 00:00:37 v #1529 > > │ ............................................................................ │ 00:00:37 v #1530 > > │ ........ │ 00:00:37 v #1531 > > │ ............................................................................ │ 00:00:37 v #1532 > > │ ............................................................................ │ 00:00:37 v #1533 > > │ ........ │ 00:00:37 v #1534 > > │ ............................................................................ │ 00:00:37 v #1535 > > │ ............................................................................ │ 00:00:37 v #1536 > > │ ........ │ 00:00:37 v #1537 > > │ ............................................................................ │ 00:00:37 v #1538 > > │ ............................................................................ │ 00:00:37 v #1539 > > │ ........ │ 00:00:37 v #1540 > > │ ............................................................................ │ 00:00:37 v #1541 > > │ ............................................................................ │ 00:00:37 v #1542 > > │ ........ │ 00:00:37 v #1543 > > │ ............................................................................ │ 00:00:37 v #1544 > > │ ............................................................................ │ 00:00:37 v #1545 > > │ ........ │ 00:00:37 v #1546 > > │ ............................................................................ │ 00:00:37 v #1547 > > │ ............................................................................ │ 00:00:37 v #1548 > > │ ........ │ 00:00:37 v #1549 > > │ ............................................................................ │ 00:00:37 v #1550 > > │ ............................................................................ │ 00:00:37 v #1551 > > │ ........ │ 00:00:37 v #1552 > > │ ............................................................................ │ 00:00:37 v #1553 > > │ ............................................................................ │ 00:00:37 v #1554 > > │ ........ │ 00:00:37 v #1555 > > │ │ 00:00:37 v #1556 > > │ ............................................................................ │ 00:00:37 v #1557 > > │ ............................................................................ │ 00:00:37 v #1558 > > │ ........ │ 00:00:37 v #1559 > > │ ............................................................................ │ 00:00:37 v #1560 > > │ ............................................................................ │ 00:00:37 v #1561 > > │ ........ │ 00:00:37 v #1562 > > │ ............................................................................ │ 00:00:37 v #1563 > > │ ............................................................................ │ 00:00:37 v #1564 > > │ ........ │ 00:00:37 v #1565 > > │ ............................................................................ │ 00:00:37 v #1566 > > │ ............................................................................ │ 00:00:37 v #1567 > > │ ........ │ 00:00:37 v #1568 > > │ ............................................................................ │ 00:00:37 v #1569 > > │ ............................................................................ │ 00:00:37 v #1570 > > │ ........ │ 00:00:37 v #1571 > > │ ............................................................................ │ 00:00:37 v #1572 > > │ ............................................................................ │ 00:00:37 v #1573 > > │ ........ │ 00:00:37 v #1574 > > │ ............................................................................ │ 00:00:37 v #1575 > > │ ............................................................................ │ 00:00:37 v #1576 > > │ ........ │ 00:00:37 v #1577 > > │ ............................................................................ │ 00:00:37 v #1578 > > │ ............................................................................ │ 00:00:37 v #1579 > > │ ........ │ 00:00:37 v #1580 > > │ ............................................................................ │ 00:00:37 v #1581 > > │ ............................................................................ │ 00:00:37 v #1582 > > │ ........ │ 00:00:37 v #1583 > > │ ............................................................................ │ 00:00:37 v #1584 > > │ ............................................................................ │ 00:00:37 v #1585 > > │ ........ │ 00:00:37 v #1586 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │ 00:00:37 v #1587 > > │ ............................................................................ │ 00:00:37 v #1588 > > │ ........ │ 00:00:37 v #1589 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1590 > > │ ............................................................................ │ 00:00:37 v #1591 > > │ ........ │ 00:00:37 v #1592 > > │ ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1593 > > │ ............................................................................ │ 00:00:37 v #1594 > > │ ........ │ 00:00:37 v #1595 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1596 > > │ ............................................................................ │ 00:00:37 v #1597 > > │ ........ │ 00:00:37 v #1598 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1599 > > │ ............................................................................ │ 00:00:37 v #1600 > > │ ........ │ 00:00:37 v #1601 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1602 > > │ ............................................................................ │ 00:00:37 v #1603 > > │ ........ │ 00:00:37 v #1604 > > │ ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1605 > > │ ......;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1606 > > │ ........ │ 00:00:37 v #1607 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1608 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1609 > > │ ........ │ 00:00:37 v #1610 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1611 > > │ ....>/;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1612 > > │ ........ │ 00:00:37 v #1613 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1614 > > │ ....//;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;........................... │ 00:00:37 v #1615 > > │ ........ │ 00:00:37 v #1616 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1617 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;........................... │ 00:00:37 v #1618 > > │ ........ │ 00:00:37 v #1619 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1620 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.......................... │ 00:00:37 v #1621 > > │ ........ │ 00:00:37 v #1622 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1623 > > │ ....///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.......................... │ 00:00:37 v #1624 > > │ ........ │ 00:00:37 v #1625 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1626 > > │ .....//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.......................... │ 00:00:37 v #1627 > > │ ........ │ 00:00:37 v #1628 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │ 00:00:37 v #1629 > > │ .....//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<............................ │ 00:00:37 v #1630 > > │ ........ │ 00:00:37 v #1631 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #1632 > > │ .....///<<<<<<<<<<<<<<<<<................................................... │ 00:00:37 v #1633 > > │ ........ │ 00:00:37 v #1634 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #1635 > > │ ...../<<<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #1636 > > │ ........ │ 00:00:37 v #1637 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #1638 > > │ ............................................................................ │ 00:00:37 v #1639 > > │ ........ │ 00:00:37 v #1640 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.......... │ 00:00:37 v #1641 > > │ ............................................................................ │ 00:00:37 v #1642 > > │ ........ │ 00:00:37 v #1643 > > │ .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #1644 > > │ ............................................................................ │ 00:00:37 v #1645 > > │ ........ │ 00:00:37 v #1646 > > │ .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.......................... │ 00:00:37 v #1647 > > │ ............................................................................ │ 00:00:37 v #1648 > > │ ........ │ 00:00:37 v #1649 > > │ ........................<<<<<<<............................................. │ 00:00:37 v #1650 > > │ ............................................................................ │ 00:00:37 v #1651 > > │ ........ │ 00:00:37 v #1652 > > │ ............................................................................ │ 00:00:37 v #1653 > > │ ............................................................................ │ 00:00:37 v #1654 > > │ ........ │ 00:00:37 v #1655 > > │ ............................................................................ │ 00:00:37 v #1656 > > │ ............................................................................ │ 00:00:37 v #1657 > > │ ........ │ 00:00:37 v #1658 > > │ ............................................................................ │ 00:00:37 v #1659 > > │ ............................................................................ │ 00:00:37 v #1660 > > │ ........ │ 00:00:37 v #1661 > > │ ............................................................................ │ 00:00:37 v #1662 > > │ ............................................................................ │ 00:00:37 v #1663 > > │ ........ │ 00:00:37 v #1664 > > │ ............................................................................ │ 00:00:37 v #1665 > > │ ............................................................................ │ 00:00:37 v #1666 > > │ ........ │ 00:00:37 v #1667 > > │ ............................................................................ │ 00:00:37 v #1668 > > │ ............................................................................ │ 00:00:37 v #1669 > > │ ........ │ 00:00:37 v #1670 > > │ ............................................................................ │ 00:00:37 v #1671 > > │ ............................................................................ │ 00:00:37 v #1672 > > │ ........ │ 00:00:37 v #1673 > > │ ............................................................................ │ 00:00:37 v #1674 > > │ ............................................................................ │ 00:00:37 v #1675 > > │ ........ │ 00:00:37 v #1676 > > │ ............................................................................ │ 00:00:37 v #1677 > > │ ............................................................................ │ 00:00:37 v #1678 > > │ ........ │ 00:00:37 v #1679 > > │ ............................................................................ │ 00:00:37 v #1680 > > │ ............................................................................ │ 00:00:37 v #1681 > > │ ........ │ 00:00:37 v #1682 > > │ ............................................................................ │ 00:00:37 v #1683 > > │ ............................................................................ │ 00:00:37 v #1684 > > │ ........ │ 00:00:37 v #1685 > > │ ............................................................................ │ 00:00:37 v #1686 > > │ ............................................................................ │ 00:00:37 v #1687 > > │ ........ │ 00:00:37 v #1688 > > │ │ 00:00:37 v #1689 > > │ ............................................................................ │ 00:00:37 v #1690 > > │ ............................................................................ │ 00:00:37 v #1691 > > │ ........ │ 00:00:37 v #1692 > > │ ............................................................................ │ 00:00:37 v #1693 > > │ ............................................................................ │ 00:00:37 v #1694 > > │ ........ │ 00:00:37 v #1695 > > │ ............................................................................ │ 00:00:37 v #1696 > > │ ............................................................................ │ 00:00:37 v #1697 > > │ ........ │ 00:00:37 v #1698 > > │ ............................................................................ │ 00:00:37 v #1699 > > │ ............................................................................ │ 00:00:37 v #1700 > > │ ........ │ 00:00:37 v #1701 > > │ ............................................................................ │ 00:00:37 v #1702 > > │ ............................................................................ │ 00:00:37 v #1703 > > │ ........ │ 00:00:37 v #1704 > > │ ............................................................................ │ 00:00:37 v #1705 > > │ ............................................................................ │ 00:00:37 v #1706 > > │ ........ │ 00:00:37 v #1707 > > │ ............................................................................ │ 00:00:37 v #1708 > > │ ............................................................................ │ 00:00:37 v #1709 > > │ ........ │ 00:00:37 v #1710 > > │ ............................................................................ │ 00:00:37 v #1711 > > │ ............................................................................ │ 00:00:37 v #1712 > > │ ........ │ 00:00:37 v #1713 > > │ ............................................................................ │ 00:00:37 v #1714 > > │ ............................................................................ │ 00:00:37 v #1715 > > │ ........ │ 00:00:37 v #1716 > > │ ............................................................................ │ 00:00:37 v #1717 > > │ ............................................................................ │ 00:00:37 v #1718 > > │ ........ │ 00:00:37 v #1719 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #1720 > > │ ............................................................................ │ 00:00:37 v #1721 > > │ ........ │ 00:00:37 v #1722 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #1723 > > │ ............................................................................ │ 00:00:37 v #1724 > > │ ........ │ 00:00:37 v #1725 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1726 > > │ ............................................................................ │ 00:00:37 v #1727 > > │ ........ │ 00:00:37 v #1728 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1729 > > │ ............................................................................ │ 00:00:37 v #1730 > > │ ........ │ 00:00:37 v #1731 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1732 > > │ ............................................................................ │ 00:00:37 v #1733 > > │ ........ │ 00:00:37 v #1734 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1735 > > │ ............................................................................ │ 00:00:37 v #1736 > > │ ........ │ 00:00:37 v #1737 > > │ .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1738 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #1739 > > │ ........ │ 00:00:37 v #1740 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1741 > > │ .....>;;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1742 > > │ ........ │ 00:00:37 v #1743 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #1744 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1745 > > │ ........ │ 00:00:37 v #1746 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1747 > > │ ....///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;........................... │ 00:00:37 v #1748 > > │ ........ │ 00:00:37 v #1749 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1750 > > │ ....///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;........................... │ 00:00:37 v #1751 > > │ ........ │ 00:00:37 v #1752 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1753 > > │ ....///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.......................... │ 00:00:37 v #1754 > > │ ........ │ 00:00:37 v #1755 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........... │ 00:00:37 v #1756 > > │ ....////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.......................... │ 00:00:37 v #1757 > > │ ........ │ 00:00:37 v #1758 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #1759 > > │ ....////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.......................... │ 00:00:37 v #1760 > > │ ........ │ 00:00:37 v #1761 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #1762 > > │ ....////;;;;;;;<<<<<<<<<<<............./<<<<<<<<............................ │ 00:00:37 v #1763 > > │ ........ │ 00:00:37 v #1764 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #1765 > > │ .....///<<<<<<<<<<<<<<<<<................................................... │ 00:00:37 v #1766 > > │ ........ │ 00:00:37 v #1767 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │ 00:00:37 v #1768 > > │ .....//<<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #1769 > > │ ........ │ 00:00:37 v #1770 > > │ .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<......... │ 00:00:37 v #1771 > > │ .....<<<.................................................................... │ 00:00:37 v #1772 > > │ ........ │ 00:00:37 v #1773 > > │ .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #1774 > > │ ............................................................................ │ 00:00:37 v #1775 > > │ ........ │ 00:00:37 v #1776 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #1777 > > │ ............................................................................ │ 00:00:37 v #1778 > > │ ........ │ 00:00:37 v #1779 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<........................ │ 00:00:37 v #1780 > > │ ............................................................................ │ 00:00:37 v #1781 > > │ ........ │ 00:00:37 v #1782 > > │ .......................//<<<<<<<<<<<<<...................................... │ 00:00:37 v #1783 > > │ ............................................................................ │ 00:00:37 v #1784 > > │ ........ │ 00:00:37 v #1785 > > │ ............................................................................ │ 00:00:37 v #1786 > > │ ............................................................................ │ 00:00:37 v #1787 > > │ ........ │ 00:00:37 v #1788 > > │ ............................................................................ │ 00:00:37 v #1789 > > │ ............................................................................ │ 00:00:37 v #1790 > > │ ........ │ 00:00:37 v #1791 > > │ ............................................................................ │ 00:00:37 v #1792 > > │ ............................................................................ │ 00:00:37 v #1793 > > │ ........ │ 00:00:37 v #1794 > > │ ............................................................................ │ 00:00:37 v #1795 > > │ ............................................................................ │ 00:00:37 v #1796 > > │ ........ │ 00:00:37 v #1797 > > │ ............................................................................ │ 00:00:37 v #1798 > > │ ............................................................................ │ 00:00:37 v #1799 > > │ ........ │ 00:00:37 v #1800 > > │ ............................................................................ │ 00:00:37 v #1801 > > │ ............................................................................ │ 00:00:37 v #1802 > > │ ........ │ 00:00:37 v #1803 > > │ ............................................................................ │ 00:00:37 v #1804 > > │ ............................................................................ │ 00:00:37 v #1805 > > │ ........ │ 00:00:37 v #1806 > > │ ............................................................................ │ 00:00:37 v #1807 > > │ ............................................................................ │ 00:00:37 v #1808 > > │ ........ │ 00:00:37 v #1809 > > │ ............................................................................ │ 00:00:37 v #1810 > > │ ............................................................................ │ 00:00:37 v #1811 > > │ ........ │ 00:00:37 v #1812 > > │ ............................................................................ │ 00:00:37 v #1813 > > │ ............................................................................ │ 00:00:37 v #1814 > > │ ........ │ 00:00:37 v #1815 > > │ ............................................................................ │ 00:00:37 v #1816 > > │ ............................................................................ │ 00:00:37 v #1817 > > │ ........ │ 00:00:37 v #1818 > > │ ............................................................................ │ 00:00:37 v #1819 > > │ ............................................................................ │ 00:00:37 v #1820 > > │ ........ │ 00:00:37 v #1821 > > │ │ 00:00:37 v #1822 > > │ ............................................................................ │ 00:00:37 v #1823 > > │ ............................................................................ │ 00:00:37 v #1824 > > │ ........ │ 00:00:37 v #1825 > > │ ............................................................................ │ 00:00:37 v #1826 > > │ ............................................................................ │ 00:00:37 v #1827 > > │ ........ │ 00:00:37 v #1828 > > │ ............................................................................ │ 00:00:37 v #1829 > > │ ............................................................................ │ 00:00:37 v #1830 > > │ ........ │ 00:00:37 v #1831 > > │ ............................................................................ │ 00:00:37 v #1832 > > │ ............................................................................ │ 00:00:37 v #1833 > > │ ........ │ 00:00:37 v #1834 > > │ ............................................................................ │ 00:00:37 v #1835 > > │ ............................................................................ │ 00:00:37 v #1836 > > │ ........ │ 00:00:37 v #1837 > > │ ............................................................................ │ 00:00:37 v #1838 > > │ ............................................................................ │ 00:00:37 v #1839 > > │ ........ │ 00:00:37 v #1840 > > │ ............................................................................ │ 00:00:37 v #1841 > > │ ............................................................................ │ 00:00:37 v #1842 > > │ ........ │ 00:00:37 v #1843 > > │ ............................................................................ │ 00:00:37 v #1844 > > │ ............................................................................ │ 00:00:37 v #1845 > > │ ........ │ 00:00:37 v #1846 > > │ ............................................................................ │ 00:00:37 v #1847 > > │ ............................................................................ │ 00:00:37 v #1848 > > │ ........ │ 00:00:37 v #1849 > > │ ............................................................................ │ 00:00:37 v #1850 > > │ ............................................................................ │ 00:00:37 v #1851 > > │ ........ │ 00:00:37 v #1852 > > │ .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #1853 > > │ ............................................................................ │ 00:00:37 v #1854 > > │ ........ │ 00:00:37 v #1855 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #1856 > > │ ............................................................................ │ 00:00:37 v #1857 > > │ ........ │ 00:00:37 v #1858 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │ 00:00:37 v #1859 > > │ ............................................................................ │ 00:00:37 v #1860 > > │ ........ │ 00:00:37 v #1861 > > │ ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1862 > > │ ............................................................................ │ 00:00:37 v #1863 > > │ ........ │ 00:00:37 v #1864 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #1865 > > │ ............................................................................ │ 00:00:37 v #1866 > > │ ........ │ 00:00:37 v #1867 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #1868 > > │ ............................................................................ │ 00:00:37 v #1869 > > │ ........ │ 00:00:37 v #1870 > > │ .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1871 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #1872 > > │ ........ │ 00:00:37 v #1873 > > │ ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #1874 > > │ .....>/;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1875 > > │ ........ │ 00:00:37 v #1876 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #1877 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #1878 > > │ ........ │ 00:00:37 v #1879 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #1880 > > │ ...>///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │ 00:00:37 v #1881 > > │ ........ │ 00:00:37 v #1882 > > │ ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #1883 > > │ .../////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;........................... │ 00:00:37 v #1884 > > │ ........ │ 00:00:37 v #1885 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #1886 > > │ .../////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │ 00:00:37 v #1887 > > │ ........ │ 00:00:37 v #1888 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #1889 > > │ ....////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │ 00:00:37 v #1890 > > │ ........ │ 00:00:37 v #1891 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #1892 > > │ ....////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.......................... │ 00:00:37 v #1893 > > │ ........ │ 00:00:37 v #1894 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │ 00:00:37 v #1895 > > │ ..../////<<<<<<<<<<<<<<<<<<............/<<<<<<<<............................ │ 00:00:37 v #1896 > > │ ........ │ 00:00:37 v #1897 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │ 00:00:37 v #1898 > > │ .....///<<<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #1899 > > │ ........ │ 00:00:37 v #1900 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<........ │ 00:00:37 v #1901 > > │ .....//<<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #1902 > > │ ........ │ 00:00:37 v #1903 > > │ ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #1904 > > │ .....<<<<<<................................................................. │ 00:00:37 v #1905 > > │ ........ │ 00:00:37 v #1906 > > │ ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #1907 > > │ ............................................................................ │ 00:00:37 v #1908 > > │ ........ │ 00:00:37 v #1909 > > │ .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... │ 00:00:37 v #1910 > > │ ............................................................................ │ 00:00:37 v #1911 > > │ ........ │ 00:00:37 v #1912 > > │ .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... │ 00:00:37 v #1913 > > │ ............................................................................ │ 00:00:37 v #1914 > > │ ........ │ 00:00:37 v #1915 > > │ .......................///<<<<<<<<<<<<<<<<.................................. │ 00:00:37 v #1916 > > │ ............................................................................ │ 00:00:37 v #1917 > > │ ........ │ 00:00:37 v #1918 > > │ ......................./<<<<<............................................... │ 00:00:37 v #1919 > > │ ............................................................................ │ 00:00:37 v #1920 > > │ ........ │ 00:00:37 v #1921 > > │ ............................................................................ │ 00:00:37 v #1922 > > │ ............................................................................ │ 00:00:37 v #1923 > > │ ........ │ 00:00:37 v #1924 > > │ ............................................................................ │ 00:00:37 v #1925 > > │ ............................................................................ │ 00:00:37 v #1926 > > │ ........ │ 00:00:37 v #1927 > > │ ............................................................................ │ 00:00:37 v #1928 > > │ ............................................................................ │ 00:00:37 v #1929 > > │ ........ │ 00:00:37 v #1930 > > │ ............................................................................ │ 00:00:37 v #1931 > > │ ............................................................................ │ 00:00:37 v #1932 > > │ ........ │ 00:00:37 v #1933 > > │ ............................................................................ │ 00:00:37 v #1934 > > │ ............................................................................ │ 00:00:37 v #1935 > > │ ........ │ 00:00:37 v #1936 > > │ ............................................................................ │ 00:00:37 v #1937 > > │ ............................................................................ │ 00:00:37 v #1938 > > │ ........ │ 00:00:37 v #1939 > > │ ............................................................................ │ 00:00:37 v #1940 > > │ ............................................................................ │ 00:00:37 v #1941 > > │ ........ │ 00:00:37 v #1942 > > │ ............................................................................ │ 00:00:37 v #1943 > > │ ............................................................................ │ 00:00:37 v #1944 > > │ ........ │ 00:00:37 v #1945 > > │ ............................................................................ │ 00:00:37 v #1946 > > │ ............................................................................ │ 00:00:37 v #1947 > > │ ........ │ 00:00:37 v #1948 > > │ ............................................................................ │ 00:00:37 v #1949 > > │ ............................................................................ │ 00:00:37 v #1950 > > │ ........ │ 00:00:37 v #1951 > > │ ............................................................................ │ 00:00:37 v #1952 > > │ ............................................................................ │ 00:00:37 v #1953 > > │ ........ │ 00:00:37 v #1954 > > │ │ 00:00:37 v #1955 > > │ ............................................................................ │ 00:00:37 v #1956 > > │ ............................................................................ │ 00:00:37 v #1957 > > │ ........ │ 00:00:37 v #1958 > > │ ............................................................................ │ 00:00:37 v #1959 > > │ ............................................................................ │ 00:00:37 v #1960 > > │ ........ │ 00:00:37 v #1961 > > │ ............................................................................ │ 00:00:37 v #1962 > > │ ............................................................................ │ 00:00:37 v #1963 > > │ ........ │ 00:00:37 v #1964 > > │ ............................................................................ │ 00:00:37 v #1965 > > │ ............................................................................ │ 00:00:37 v #1966 > > │ ........ │ 00:00:37 v #1967 > > │ ............................................................................ │ 00:00:37 v #1968 > > │ ............................................................................ │ 00:00:37 v #1969 > > │ ........ │ 00:00:37 v #1970 > > │ ............................................................................ │ 00:00:37 v #1971 > > │ ............................................................................ │ 00:00:37 v #1972 > > │ ........ │ 00:00:37 v #1973 > > │ ............................................................................ │ 00:00:37 v #1974 > > │ ............................................................................ │ 00:00:37 v #1975 > > │ ........ │ 00:00:37 v #1976 > > │ ............................................................................ │ 00:00:37 v #1977 > > │ ............................................................................ │ 00:00:37 v #1978 > > │ ........ │ 00:00:37 v #1979 > > │ ............................................................................ │ 00:00:37 v #1980 > > │ ............................................................................ │ 00:00:37 v #1981 > > │ ........ │ 00:00:37 v #1982 > > │ ........................;;;;;;.............................................. │ 00:00:37 v #1983 > > │ ............................................................................ │ 00:00:37 v #1984 > > │ ........ │ 00:00:37 v #1985 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #1986 > > │ ............................................................................ │ 00:00:37 v #1987 > > │ ........ │ 00:00:37 v #1988 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #1989 > > │ ............................................................................ │ 00:00:37 v #1990 > > │ ........ │ 00:00:37 v #1991 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #1992 > > │ ............................................................................ │ 00:00:37 v #1993 > > │ ........ │ 00:00:37 v #1994 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │ 00:00:37 v #1995 > > │ ............................................................................ │ 00:00:37 v #1996 > > │ ........ │ 00:00:37 v #1997 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #1998 > > │ ............................................................................ │ 00:00:37 v #1999 > > │ ........ │ 00:00:37 v #2000 > > │ ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #2001 > > │ ............................................................................ │ 00:00:37 v #2002 > > │ ........ │ 00:00:37 v #2003 > > │ ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #2004 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2005 > > │ ........ │ 00:00:37 v #2006 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #2007 > > │ .....>/;;;;;;;;;;;;;;;;\.................................................... │ 00:00:37 v #2008 > > │ ........ │ 00:00:37 v #2009 > > │ ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #2010 > > │ ....>//;;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2011 > > │ ........ │ 00:00:37 v #2012 > > │ ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2013 > > │ ...////;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │ 00:00:37 v #2014 > > │ ........ │ 00:00:37 v #2015 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #2016 > > │ .../////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.......................... │ 00:00:37 v #2017 > > │ ........ │ 00:00:37 v #2018 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #2019 > > │ .../////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.......................... │ 00:00:37 v #2020 > > │ ........ │ 00:00:37 v #2021 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #2022 > > │ ...//////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\......................... │ 00:00:37 v #2023 > > │ ........ │ 00:00:37 v #2024 > > │ .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │ 00:00:37 v #2025 > > │ ..../////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.......................... │ 00:00:37 v #2026 > > │ ........ │ 00:00:37 v #2027 > > │ .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │ 00:00:37 v #2028 > > │ ....//////<<<<<<<<<<<<<<<<<............//<<<<<<<............................ │ 00:00:37 v #2029 > > │ ........ │ 00:00:37 v #2030 > > │ ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │ 00:00:37 v #2031 > > │ ..../////<<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #2032 > > │ ........ │ 00:00:37 v #2033 > > │ ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<........ │ 00:00:37 v #2034 > > │ .....//<<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #2035 > > │ ........ │ 00:00:37 v #2036 > > │ ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #2037 > > │ ...../<<<<<<<<.............................................................. │ 00:00:37 v #2038 > > │ ........ │ 00:00:37 v #2039 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #2040 > > │ ............................................................................ │ 00:00:37 v #2041 > > │ ........ │ 00:00:37 v #2042 > > │ ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................... │ 00:00:37 v #2043 > > │ ............................................................................ │ 00:00:37 v #2044 > > │ ........ │ 00:00:37 v #2045 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<....................... │ 00:00:37 v #2046 > > │ ............................................................................ │ 00:00:37 v #2047 > > │ ........ │ 00:00:37 v #2048 > > │ .......................///<<<<<<<<<<<<<<<<<<<<.............................. │ 00:00:37 v #2049 > > │ ............................................................................ │ 00:00:37 v #2050 > > │ ........ │ 00:00:37 v #2051 > > │ .......................//<<<<<<<<<.......................................... │ 00:00:37 v #2052 > > │ ............................................................................ │ 00:00:37 v #2053 > > │ ........ │ 00:00:37 v #2054 > > │ ............................................................................ │ 00:00:37 v #2055 > > │ ............................................................................ │ 00:00:37 v #2056 > > │ ........ │ 00:00:37 v #2057 > > │ ............................................................................ │ 00:00:37 v #2058 > > │ ............................................................................ │ 00:00:37 v #2059 > > │ ........ │ 00:00:37 v #2060 > > │ ............................................................................ │ 00:00:37 v #2061 > > │ ............................................................................ │ 00:00:37 v #2062 > > │ ........ │ 00:00:37 v #2063 > > │ ............................................................................ │ 00:00:37 v #2064 > > │ ............................................................................ │ 00:00:37 v #2065 > > │ ........ │ 00:00:37 v #2066 > > │ ............................................................................ │ 00:00:37 v #2067 > > │ ............................................................................ │ 00:00:37 v #2068 > > │ ........ │ 00:00:37 v #2069 > > │ ............................................................................ │ 00:00:37 v #2070 > > │ ............................................................................ │ 00:00:37 v #2071 > > │ ........ │ 00:00:37 v #2072 > > │ ............................................................................ │ 00:00:37 v #2073 > > │ ............................................................................ │ 00:00:37 v #2074 > > │ ........ │ 00:00:37 v #2075 > > │ ............................................................................ │ 00:00:37 v #2076 > > │ ............................................................................ │ 00:00:37 v #2077 > > │ ........ │ 00:00:37 v #2078 > > │ ............................................................................ │ 00:00:37 v #2079 > > │ ............................................................................ │ 00:00:37 v #2080 > > │ ........ │ 00:00:37 v #2081 > > │ ............................................................................ │ 00:00:37 v #2082 > > │ ............................................................................ │ 00:00:37 v #2083 > > │ ........ │ 00:00:37 v #2084 > > │ ............................................................................ │ 00:00:37 v #2085 > > │ ............................................................................ │ 00:00:37 v #2086 > > │ ........ │ 00:00:37 v #2087 > > │ │ 00:00:37 v #2088 > > │ ............................................................................ │ 00:00:37 v #2089 > > │ ............................................................................ │ 00:00:37 v #2090 > > │ ........ │ 00:00:37 v #2091 > > │ ............................................................................ │ 00:00:37 v #2092 > > │ ............................................................................ │ 00:00:37 v #2093 > > │ ........ │ 00:00:37 v #2094 > > │ ............................................................................ │ 00:00:37 v #2095 > > │ ............................................................................ │ 00:00:37 v #2096 > > │ ........ │ 00:00:37 v #2097 > > │ ............................................................................ │ 00:00:37 v #2098 > > │ ............................................................................ │ 00:00:37 v #2099 > > │ ........ │ 00:00:37 v #2100 > > │ ............................................................................ │ 00:00:37 v #2101 > > │ ............................................................................ │ 00:00:37 v #2102 > > │ ........ │ 00:00:37 v #2103 > > │ ............................................................................ │ 00:00:37 v #2104 > > │ ............................................................................ │ 00:00:37 v #2105 > > │ ........ │ 00:00:37 v #2106 > > │ ............................................................................ │ 00:00:37 v #2107 > > │ ............................................................................ │ 00:00:37 v #2108 > > │ ........ │ 00:00:37 v #2109 > > │ ............................................................................ │ 00:00:37 v #2110 > > │ ............................................................................ │ 00:00:37 v #2111 > > │ ........ │ 00:00:37 v #2112 > > │ ............................................................................ │ 00:00:37 v #2113 > > │ ............................................................................ │ 00:00:37 v #2114 > > │ ........ │ 00:00:37 v #2115 > > │ ........................;;;;;;;;;........................................... │ 00:00:37 v #2116 > > │ ............................................................................ │ 00:00:37 v #2117 > > │ ........ │ 00:00:37 v #2118 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │ 00:00:37 v #2119 > > │ ............................................................................ │ 00:00:37 v #2120 > > │ ........ │ 00:00:37 v #2121 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #2122 > > │ ............................................................................ │ 00:00:37 v #2123 > > │ ........ │ 00:00:37 v #2124 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #2125 > > │ ............................................................................ │ 00:00:37 v #2126 > > │ ........ │ 00:00:37 v #2127 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #2128 > > │ ............................................................................ │ 00:00:37 v #2129 > > │ ........ │ 00:00:37 v #2130 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #2131 > > │ ............................................................................ │ 00:00:37 v #2132 > > │ ........ │ 00:00:37 v #2133 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #2134 > > │ ............................................................................ │ 00:00:37 v #2135 > > │ ........ │ 00:00:37 v #2136 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #2137 > > │ ......;;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2138 > > │ ........ │ 00:00:37 v #2139 > > │ ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #2140 > > │ .....>/;;;;;;;;;;;;;;;;\.................................................... │ 00:00:37 v #2141 > > │ ........ │ 00:00:37 v #2142 > > │ .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #2143 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2144 > > │ ........ │ 00:00:37 v #2145 > > │ ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2146 > > │ ...>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │ 00:00:37 v #2147 > > │ ........ │ 00:00:37 v #2148 > > │ ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #2149 > > │ ..>/////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │ 00:00:37 v #2150 > > │ ........ │ 00:00:37 v #2151 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #2152 > > │ ..///////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.......................... │ 00:00:37 v #2153 > > │ ........ │ 00:00:37 v #2154 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │ 00:00:37 v #2155 > > │ ...///////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<......................... │ 00:00:37 v #2156 > > │ ........ │ 00:00:37 v #2157 > > │ ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │ 00:00:37 v #2158 > > │ ...////////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.......................... │ 00:00:37 v #2159 > > │ ........ │ 00:00:37 v #2160 > > │ ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │ 00:00:37 v #2161 > > │ ....///////<<<<<<<<<<<<<<<.............//<<<<<<<............................ │ 00:00:37 v #2162 > > │ ........ │ 00:00:37 v #2163 > > │ .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<....... │ 00:00:37 v #2164 > > │ ..../////<<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #2165 > > │ ........ │ 00:00:37 v #2166 > > │ .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.......... │ 00:00:37 v #2167 > > │ .....///<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #2168 > > │ ........ │ 00:00:37 v #2169 > > │ .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #2170 > > │ .....//<<<<<<<<<............................................................ │ 00:00:37 v #2171 > > │ ........ │ 00:00:37 v #2172 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #2173 > > │ ............................................................................ │ 00:00:37 v #2174 > > │ ........ │ 00:00:37 v #2175 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... │ 00:00:37 v #2176 > > │ ............................................................................ │ 00:00:37 v #2177 > > │ ........ │ 00:00:37 v #2178 > > │ ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2179 > > │ ............................................................................ │ 00:00:37 v #2180 > > │ ........ │ 00:00:37 v #2181 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<............................ │ 00:00:37 v #2182 > > │ ............................................................................ │ 00:00:37 v #2183 > > │ ........ │ 00:00:37 v #2184 > > │ .......................///<<<<<<<<<<<<...................................... │ 00:00:37 v #2185 > > │ ............................................................................ │ 00:00:37 v #2186 > > │ ........ │ 00:00:37 v #2187 > > │ ........................<<<<<............................................... │ 00:00:37 v #2188 > > │ ............................................................................ │ 00:00:37 v #2189 > > │ ........ │ 00:00:37 v #2190 > > │ ............................................................................ │ 00:00:37 v #2191 > > │ ............................................................................ │ 00:00:37 v #2192 > > │ ........ │ 00:00:37 v #2193 > > │ ............................................................................ │ 00:00:37 v #2194 > > │ ............................................................................ │ 00:00:37 v #2195 > > │ ........ │ 00:00:37 v #2196 > > │ ............................................................................ │ 00:00:37 v #2197 > > │ ............................................................................ │ 00:00:37 v #2198 > > │ ........ │ 00:00:37 v #2199 > > │ ............................................................................ │ 00:00:37 v #2200 > > │ ............................................................................ │ 00:00:37 v #2201 > > │ ........ │ 00:00:37 v #2202 > > │ ............................................................................ │ 00:00:37 v #2203 > > │ ............................................................................ │ 00:00:37 v #2204 > > │ ........ │ 00:00:37 v #2205 > > │ ............................................................................ │ 00:00:37 v #2206 > > │ ............................................................................ │ 00:00:37 v #2207 > > │ ........ │ 00:00:37 v #2208 > > │ ............................................................................ │ 00:00:37 v #2209 > > │ ............................................................................ │ 00:00:37 v #2210 > > │ ........ │ 00:00:37 v #2211 > > │ ............................................................................ │ 00:00:37 v #2212 > > │ ............................................................................ │ 00:00:37 v #2213 > > │ ........ │ 00:00:37 v #2214 > > │ ............................................................................ │ 00:00:37 v #2215 > > │ ............................................................................ │ 00:00:37 v #2216 > > │ ........ │ 00:00:37 v #2217 > > │ ............................................................................ │ 00:00:37 v #2218 > > │ ............................................................................ │ 00:00:37 v #2219 > > │ ........ │ 00:00:37 v #2220 > > │ │ 00:00:37 v #2221 > > │ ............................................................................ │ 00:00:37 v #2222 > > │ ............................................................................ │ 00:00:37 v #2223 > > │ ........ │ 00:00:37 v #2224 > > │ ............................................................................ │ 00:00:37 v #2225 > > │ ............................................................................ │ 00:00:37 v #2226 > > │ ........ │ 00:00:37 v #2227 > > │ ............................................................................ │ 00:00:37 v #2228 > > │ ............................................................................ │ 00:00:37 v #2229 > > │ ........ │ 00:00:37 v #2230 > > │ ............................................................................ │ 00:00:37 v #2231 > > │ ............................................................................ │ 00:00:37 v #2232 > > │ ........ │ 00:00:37 v #2233 > > │ ............................................................................ │ 00:00:37 v #2234 > > │ ............................................................................ │ 00:00:37 v #2235 > > │ ........ │ 00:00:37 v #2236 > > │ ............................................................................ │ 00:00:37 v #2237 > > │ ............................................................................ │ 00:00:37 v #2238 > > │ ........ │ 00:00:37 v #2239 > > │ ............................................................................ │ 00:00:37 v #2240 > > │ ............................................................................ │ 00:00:37 v #2241 > > │ ........ │ 00:00:37 v #2242 > > │ ............................................................................ │ 00:00:37 v #2243 > > │ ............................................................................ │ 00:00:37 v #2244 > > │ ........ │ 00:00:37 v #2245 > > │ ............................................................................ │ 00:00:37 v #2246 > > │ ............................................................................ │ 00:00:37 v #2247 > > │ ........ │ 00:00:37 v #2248 > > │ ........................;;;;;;;;;;.......................................... │ 00:00:37 v #2249 > > │ ............................................................................ │ 00:00:37 v #2250 > > │ ........ │ 00:00:37 v #2251 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │ 00:00:37 v #2252 > > │ ............................................................................ │ 00:00:37 v #2253 > > │ ........ │ 00:00:37 v #2254 > > │ .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │ 00:00:37 v #2255 > > │ ............................................................................ │ 00:00:37 v #2256 > > │ ........ │ 00:00:37 v #2257 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #2258 > > │ ............................................................................ │ 00:00:37 v #2259 > > │ ........ │ 00:00:37 v #2260 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #2261 > > │ ............................................................................ │ 00:00:37 v #2262 > > │ ........ │ 00:00:37 v #2263 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #2264 > > │ ............................................................................ │ 00:00:37 v #2265 > > │ ........ │ 00:00:37 v #2266 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... │ 00:00:37 v #2267 > > │ ............................................................................ │ 00:00:37 v #2268 > > │ ........ │ 00:00:37 v #2269 > > │ ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #2270 > > │ ....../;;;;;;;;;;;;;;;...................................................... │ 00:00:37 v #2271 > > │ ........ │ 00:00:37 v #2272 > > │ ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. │ 00:00:37 v #2273 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2274 > > │ ........ │ 00:00:37 v #2275 > > │ ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2276 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2277 > > │ ........ │ 00:00:37 v #2278 > > │ ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #2279 > > │ ...>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;........................... │ 00:00:37 v #2280 > > │ ........ │ 00:00:37 v #2281 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #2282 > > │ ..>//////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │ 00:00:37 v #2283 > > │ ........ │ 00:00:37 v #2284 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │ 00:00:37 v #2285 > > │ ..////////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\......................... │ 00:00:37 v #2286 > > │ ........ │ 00:00:37 v #2287 > > │ .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │ 00:00:37 v #2288 > > │ ..////////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<......................... │ 00:00:37 v #2289 > > │ ........ │ 00:00:37 v #2290 > > │ .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │ 00:00:37 v #2291 > > │ ...////////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.......................... │ 00:00:37 v #2292 > > │ ........ │ 00:00:37 v #2293 > > │ ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<....... │ 00:00:37 v #2294 > > │ ....////////<<<<<<<<<<<<<<.............//<<<<<<<............................ │ 00:00:37 v #2295 > > │ ........ │ 00:00:37 v #2296 > > │ ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #2297 > > │ ....//////<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #2298 > > │ ........ │ 00:00:37 v #2299 > > │ ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #2300 > > │ .....////<<<<<<<<<<<<<...................................................... │ 00:00:37 v #2301 > > │ ........ │ 00:00:37 v #2302 > > │ ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #2303 > > │ ......<<<<<<<<<<<........................................................... │ 00:00:37 v #2304 > > │ ........ │ 00:00:37 v #2305 > > │ .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................. │ 00:00:37 v #2306 > > │ ............................................................................ │ 00:00:37 v #2307 > > │ ........ │ 00:00:37 v #2308 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2309 > > │ ............................................................................ │ 00:00:37 v #2310 > > │ ........ │ 00:00:37 v #2311 > > │ ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2312 > > │ ............................................................................ │ 00:00:37 v #2313 > > │ ........ │ 00:00:37 v #2314 > > │ ......................./////<<<<<<<<<<<<<<<<<<<<<<.......................... │ 00:00:37 v #2315 > > │ ............................................................................ │ 00:00:37 v #2316 > > │ ........ │ 00:00:37 v #2317 > > │ .......................////<<<<<<<<<<<<<<................................... │ 00:00:37 v #2318 > > │ ............................................................................ │ 00:00:37 v #2319 > > │ ........ │ 00:00:37 v #2320 > > │ ......................../<<<<<<<<........................................... │ 00:00:37 v #2321 > > │ ............................................................................ │ 00:00:37 v #2322 > > │ ........ │ 00:00:37 v #2323 > > │ ............................................................................ │ 00:00:37 v #2324 > > │ ............................................................................ │ 00:00:37 v #2325 > > │ ........ │ 00:00:37 v #2326 > > │ ............................................................................ │ 00:00:37 v #2327 > > │ ............................................................................ │ 00:00:37 v #2328 > > │ ........ │ 00:00:37 v #2329 > > │ ............................................................................ │ 00:00:37 v #2330 > > │ ............................................................................ │ 00:00:37 v #2331 > > │ ........ │ 00:00:37 v #2332 > > │ ............................................................................ │ 00:00:37 v #2333 > > │ ............................................................................ │ 00:00:37 v #2334 > > │ ........ │ 00:00:37 v #2335 > > │ ............................................................................ │ 00:00:37 v #2336 > > │ ............................................................................ │ 00:00:37 v #2337 > > │ ........ │ 00:00:37 v #2338 > > │ ............................................................................ │ 00:00:37 v #2339 > > │ ............................................................................ │ 00:00:37 v #2340 > > │ ........ │ 00:00:37 v #2341 > > │ ............................................................................ │ 00:00:37 v #2342 > > │ ............................................................................ │ 00:00:37 v #2343 > > │ ........ │ 00:00:37 v #2344 > > │ ............................................................................ │ 00:00:37 v #2345 > > │ ............................................................................ │ 00:00:37 v #2346 > > │ ........ │ 00:00:37 v #2347 > > │ ............................................................................ │ 00:00:37 v #2348 > > │ ............................................................................ │ 00:00:37 v #2349 > > │ ........ │ 00:00:37 v #2350 > > │ ............................................................................ │ 00:00:37 v #2351 > > │ ............................................................................ │ 00:00:37 v #2352 > > │ ........ │ 00:00:37 v #2353 > > │ │ 00:00:37 v #2354 > > │ ............................................................................ │ 00:00:37 v #2355 > > │ ............................................................................ │ 00:00:37 v #2356 > > │ ........ │ 00:00:37 v #2357 > > │ ............................................................................ │ 00:00:37 v #2358 > > │ ............................................................................ │ 00:00:37 v #2359 > > │ ........ │ 00:00:37 v #2360 > > │ ............................................................................ │ 00:00:37 v #2361 > > │ ............................................................................ │ 00:00:37 v #2362 > > │ ........ │ 00:00:37 v #2363 > > │ ............................................................................ │ 00:00:37 v #2364 > > │ ............................................................................ │ 00:00:37 v #2365 > > │ ........ │ 00:00:37 v #2366 > > │ ............................................................................ │ 00:00:37 v #2367 > > │ ............................................................................ │ 00:00:37 v #2368 > > │ ........ │ 00:00:37 v #2369 > > │ ............................................................................ │ 00:00:37 v #2370 > > │ ............................................................................ │ 00:00:37 v #2371 > > │ ........ │ 00:00:37 v #2372 > > │ ............................................................................ │ 00:00:37 v #2373 > > │ ............................................................................ │ 00:00:37 v #2374 > > │ ........ │ 00:00:37 v #2375 > > │ ............................................................................ │ 00:00:37 v #2376 > > │ ............................................................................ │ 00:00:37 v #2377 > > │ ........ │ 00:00:37 v #2378 > > │ ............................................................................ │ 00:00:37 v #2379 > > │ ............................................................................ │ 00:00:37 v #2380 > > │ ........ │ 00:00:37 v #2381 > > │ ........................;;;;;;;;;........................................... │ 00:00:37 v #2382 > > │ ............................................................................ │ 00:00:37 v #2383 > > │ ........ │ 00:00:37 v #2384 > > │ .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │ 00:00:37 v #2385 > > │ ............................................................................ │ 00:00:37 v #2386 > > │ ........ │ 00:00:37 v #2387 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │ 00:00:37 v #2388 > > │ ............................................................................ │ 00:00:37 v #2389 > > │ ........ │ 00:00:37 v #2390 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │ 00:00:37 v #2391 > > │ ............................................................................ │ 00:00:37 v #2392 > > │ ........ │ 00:00:37 v #2393 > > │ .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #2394 > > │ ............................................................................ │ 00:00:37 v #2395 > > │ ........ │ 00:00:37 v #2396 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #2397 > > │ ............................................................................ │ 00:00:37 v #2398 > > │ ........ │ 00:00:37 v #2399 > > │ ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #2400 > > │ ............................................................................ │ 00:00:37 v #2401 > > │ ........ │ 00:00:37 v #2402 > > │ ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #2403 > > │ ......;;;;;;;;;;;;;;;;...................................................... │ 00:00:37 v #2404 > > │ ........ │ 00:00:37 v #2405 > > │ ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #2406 > > │ .....>//;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2407 > > │ ........ │ 00:00:37 v #2408 > > │ ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2409 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2410 > > │ ........ │ 00:00:37 v #2411 > > │ ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #2412 > > │ ...>/////;;;;;;;;;;;;;;;;..............>;;;;;;;;\........................... │ 00:00:37 v #2413 > > │ ........ │ 00:00:37 v #2414 > > │ .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\......... │ 00:00:37 v #2415 > > │ ..>///////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.......................... │ 00:00:37 v #2416 > > │ ........ │ 00:00:37 v #2417 > > │ .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │ 00:00:37 v #2418 > > │ ./////////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;......................... │ 00:00:37 v #2419 > > │ ........ │ 00:00:37 v #2420 > > │ ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │ 00:00:37 v #2421 > > │ ../////////;;;;;;;;;;;;<<<<<........../////<<<<<<<<......................... │ 00:00:37 v #2422 > > │ ........ │ 00:00:37 v #2423 > > │ ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<...... │ 00:00:37 v #2424 > > │ .../////////;<<<<<<<<<<<<<<...........////<<<<<<<<.......................... │ 00:00:37 v #2425 > > │ ........ │ 00:00:37 v #2426 > > │ ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<........ │ 00:00:37 v #2427 > > │ .../////////<<<<<<<<<<<<<<.............//<<<<<<<............................ │ 00:00:37 v #2428 > > │ ........ │ 00:00:37 v #2429 > > │ .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.......... │ 00:00:37 v #2430 > > │ ....//////<<<<<<<<<<<<<<.................................................... │ 00:00:37 v #2431 > > │ ........ │ 00:00:37 v #2432 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #2433 > > │ .....///<<<<<<<<<<<<<<...................................................... │ 00:00:37 v #2434 > > │ ........ │ 00:00:37 v #2435 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #2436 > > │ ......//<<<<<<<<<<.......................................................... │ 00:00:37 v #2437 > > │ ........ │ 00:00:37 v #2438 > > │ ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<................. │ 00:00:37 v #2439 > > │ ......<..................................................................... │ 00:00:37 v #2440 > > │ ........ │ 00:00:37 v #2441 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2442 > > │ ............................................................................ │ 00:00:37 v #2443 > > │ ........ │ 00:00:37 v #2444 > > │ ....................../////////<<<<<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2445 > > │ ............................................................................ │ 00:00:37 v #2446 > > │ ........ │ 00:00:37 v #2447 > > │ .......................//////<<<<<<<<<<<<<<<<<<<<<<......................... │ 00:00:37 v #2448 > > │ ............................................................................ │ 00:00:37 v #2449 > > │ ........ │ 00:00:37 v #2450 > > │ ........................////<<<<<<<<<<<<<<<................................. │ 00:00:37 v #2451 > > │ ............................................................................ │ 00:00:37 v #2452 > > │ ........ │ 00:00:37 v #2453 > > │ ........................//<<<<<<<<<<........................................ │ 00:00:37 v #2454 > > │ ............................................................................ │ 00:00:37 v #2455 > > │ ........ │ 00:00:37 v #2456 > > │ .........................<<<................................................ │ 00:00:37 v #2457 > > │ ............................................................................ │ 00:00:37 v #2458 > > │ ........ │ 00:00:37 v #2459 > > │ ............................................................................ │ 00:00:37 v #2460 > > │ ............................................................................ │ 00:00:37 v #2461 > > │ ........ │ 00:00:37 v #2462 > > │ ............................................................................ │ 00:00:37 v #2463 > > │ ............................................................................ │ 00:00:37 v #2464 > > │ ........ │ 00:00:37 v #2465 > > │ ............................................................................ │ 00:00:37 v #2466 > > │ ............................................................................ │ 00:00:37 v #2467 > > │ ........ │ 00:00:37 v #2468 > > │ ............................................................................ │ 00:00:37 v #2469 > > │ ............................................................................ │ 00:00:37 v #2470 > > │ ........ │ 00:00:37 v #2471 > > │ ............................................................................ │ 00:00:37 v #2472 > > │ ............................................................................ │ 00:00:37 v #2473 > > │ ........ │ 00:00:37 v #2474 > > │ ............................................................................ │ 00:00:37 v #2475 > > │ ............................................................................ │ 00:00:37 v #2476 > > │ ........ │ 00:00:37 v #2477 > > │ ............................................................................ │ 00:00:37 v #2478 > > │ ............................................................................ │ 00:00:37 v #2479 > > │ ........ │ 00:00:37 v #2480 > > │ ............................................................................ │ 00:00:37 v #2481 > > │ ............................................................................ │ 00:00:37 v #2482 > > │ ........ │ 00:00:37 v #2483 > > │ ............................................................................ │ 00:00:37 v #2484 > > │ ............................................................................ │ 00:00:37 v #2485 > > │ ........ │ 00:00:37 v #2486 > > │ │ 00:00:37 v #2487 > > │ ............................................................................ │ 00:00:37 v #2488 > > │ ............................................................................ │ 00:00:37 v #2489 > > │ ........ │ 00:00:37 v #2490 > > │ ............................................................................ │ 00:00:37 v #2491 > > │ ............................................................................ │ 00:00:37 v #2492 > > │ ........ │ 00:00:37 v #2493 > > │ ............................................................................ │ 00:00:37 v #2494 > > │ ............................................................................ │ 00:00:37 v #2495 > > │ ........ │ 00:00:37 v #2496 > > │ ............................................................................ │ 00:00:37 v #2497 > > │ ............................................................................ │ 00:00:37 v #2498 > > │ ........ │ 00:00:37 v #2499 > > │ ............................................................................ │ 00:00:37 v #2500 > > │ ............................................................................ │ 00:00:37 v #2501 > > │ ........ │ 00:00:37 v #2502 > > │ ............................................................................ │ 00:00:37 v #2503 > > │ ............................................................................ │ 00:00:37 v #2504 > > │ ........ │ 00:00:37 v #2505 > > │ ............................................................................ │ 00:00:37 v #2506 > > │ ............................................................................ │ 00:00:37 v #2507 > > │ ........ │ 00:00:37 v #2508 > > │ ............................................................................ │ 00:00:37 v #2509 > > │ ............................................................................ │ 00:00:37 v #2510 > > │ ........ │ 00:00:37 v #2511 > > │ ............................................................................ │ 00:00:37 v #2512 > > │ ............................................................................ │ 00:00:37 v #2513 > > │ ........ │ 00:00:37 v #2514 > > │ .......................>;;;;;;;;............................................ │ 00:00:37 v #2515 > > │ ............................................................................ │ 00:00:37 v #2516 > > │ ........ │ 00:00:37 v #2517 > > │ .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................... │ 00:00:37 v #2518 > > │ ............................................................................ │ 00:00:37 v #2519 > > │ ........ │ 00:00:37 v #2520 > > │ ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │ 00:00:37 v #2521 > > │ ............................................................................ │ 00:00:37 v #2522 > > │ ........ │ 00:00:37 v #2523 > > │ ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... │ 00:00:37 v #2524 > > │ ............................................................................ │ 00:00:37 v #2525 > > │ ........ │ 00:00:37 v #2526 > > │ .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #2527 > > │ ............................................................................ │ 00:00:37 v #2528 > > │ ........ │ 00:00:37 v #2529 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. │ 00:00:37 v #2530 > > │ ............................................................................ │ 00:00:37 v #2531 > > │ ........ │ 00:00:37 v #2532 > > │ ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #2533 > > │ ............................................................................ │ 00:00:37 v #2534 > > │ ........ │ 00:00:37 v #2535 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #2536 > > │ ......;;;;;;;;;;;;;;;\...................................................... │ 00:00:37 v #2537 > > │ ........ │ 00:00:37 v #2538 > > │ ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #2539 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2540 > > │ ........ │ 00:00:37 v #2541 > > │ ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2542 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2543 > > │ ........ │ 00:00:37 v #2544 > > │ .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #2545 > > │ ...>/////;;;;;;;;;;;;;;;;..............>/;;;;;;;\........................... │ 00:00:37 v #2546 > > │ ........ │ 00:00:37 v #2547 > > │ ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │ 00:00:37 v #2548 > > │ ..>///////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.......................... │ 00:00:37 v #2549 > > │ ........ │ 00:00:37 v #2550 > > │ ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │ 00:00:37 v #2551 > > │ .>/////////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;......................... │ 00:00:37 v #2552 > > │ ........ │ 00:00:37 v #2553 > > │ .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<...... │ 00:00:37 v #2554 > > │ .///////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<......................... │ 00:00:37 v #2555 > > │ ........ │ 00:00:37 v #2556 > > │ ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<....... │ 00:00:37 v #2557 > > │ ..///////////<<<<<<<<<<<<<<...........////<<<<<<<<.......................... │ 00:00:37 v #2558 > > │ ........ │ 00:00:37 v #2559 > > │ ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #2560 > > │ .../////////<<<<<<<<<<<<<..............//<<<<<<<............................ │ 00:00:37 v #2561 > > │ ........ │ 00:00:37 v #2562 > > │ ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #2563 > > │ ....///////<<<<<<<<<<<<<.................................................... │ 00:00:37 v #2564 > > │ ........ │ 00:00:37 v #2565 > > │ ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #2566 > > │ .....////<<<<<<<<<<<<<...................................................... │ 00:00:37 v #2567 > > │ ........ │ 00:00:37 v #2568 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #2569 > > │ ......//<<<<<<<<<<<......................................................... │ 00:00:37 v #2570 > > │ ........ │ 00:00:37 v #2571 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #2572 > > │ .......<<................................................................... │ 00:00:37 v #2573 > > │ ........ │ 00:00:37 v #2574 > > │ ......................////////////<<<<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2575 > > │ ............................................................................ │ 00:00:37 v #2576 > > │ ........ │ 00:00:37 v #2577 > > │ ......................//////////<<<<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2578 > > │ ............................................................................ │ 00:00:37 v #2579 > > │ ........ │ 00:00:37 v #2580 > > │ .......................///////<<<<<<<<<<<<<<<<<<<<<<........................ │ 00:00:37 v #2581 > > │ ............................................................................ │ 00:00:37 v #2582 > > │ ........ │ 00:00:37 v #2583 > > │ ......................../////<<<<<<<<<<<<<<<<............................... │ 00:00:37 v #2584 > > │ ............................................................................ │ 00:00:37 v #2585 > > │ ........ │ 00:00:37 v #2586 > > │ ........................////<<<<<<<<<<...................................... │ 00:00:37 v #2587 > > │ ............................................................................ │ 00:00:37 v #2588 > > │ ........ │ 00:00:37 v #2589 > > │ ........................./<<<<<<............................................ │ 00:00:37 v #2590 > > │ ............................................................................ │ 00:00:37 v #2591 > > │ ........ │ 00:00:37 v #2592 > > │ ............................................................................ │ 00:00:37 v #2593 > > │ ............................................................................ │ 00:00:37 v #2594 > > │ ........ │ 00:00:37 v #2595 > > │ ............................................................................ │ 00:00:37 v #2596 > > │ ............................................................................ │ 00:00:37 v #2597 > > │ ........ │ 00:00:37 v #2598 > > │ ............................................................................ │ 00:00:37 v #2599 > > │ ............................................................................ │ 00:00:37 v #2600 > > │ ........ │ 00:00:37 v #2601 > > │ ............................................................................ │ 00:00:37 v #2602 > > │ ............................................................................ │ 00:00:37 v #2603 > > │ ........ │ 00:00:37 v #2604 > > │ ............................................................................ │ 00:00:37 v #2605 > > │ ............................................................................ │ 00:00:37 v #2606 > > │ ........ │ 00:00:37 v #2607 > > │ ............................................................................ │ 00:00:37 v #2608 > > │ ............................................................................ │ 00:00:37 v #2609 > > │ ........ │ 00:00:37 v #2610 > > │ ............................................................................ │ 00:00:37 v #2611 > > │ ............................................................................ │ 00:00:37 v #2612 > > │ ........ │ 00:00:37 v #2613 > > │ ............................................................................ │ 00:00:37 v #2614 > > │ ............................................................................ │ 00:00:37 v #2615 > > │ ........ │ 00:00:37 v #2616 > > │ ............................................................................ │ 00:00:37 v #2617 > > │ ............................................................................ │ 00:00:37 v #2618 > > │ ........ │ 00:00:37 v #2619 > > │ │ 00:00:37 v #2620 > > │ ............................................................................ │ 00:00:37 v #2621 > > │ ............................................................................ │ 00:00:37 v #2622 > > │ ........ │ 00:00:37 v #2623 > > │ ............................................................................ │ 00:00:37 v #2624 > > │ ............................................................................ │ 00:00:37 v #2625 > > │ ........ │ 00:00:37 v #2626 > > │ ............................................................................ │ 00:00:37 v #2627 > > │ ............................................................................ │ 00:00:37 v #2628 > > │ ........ │ 00:00:37 v #2629 > > │ ............................................................................ │ 00:00:37 v #2630 > > │ ............................................................................ │ 00:00:37 v #2631 > > │ ........ │ 00:00:37 v #2632 > > │ ............................................................................ │ 00:00:37 v #2633 > > │ ............................................................................ │ 00:00:37 v #2634 > > │ ........ │ 00:00:37 v #2635 > > │ ............................................................................ │ 00:00:37 v #2636 > > │ ............................................................................ │ 00:00:37 v #2637 > > │ ........ │ 00:00:37 v #2638 > > │ ............................................................................ │ 00:00:37 v #2639 > > │ ............................................................................ │ 00:00:37 v #2640 > > │ ........ │ 00:00:37 v #2641 > > │ ............................................................................ │ 00:00:37 v #2642 > > │ ............................................................................ │ 00:00:37 v #2643 > > │ ........ │ 00:00:37 v #2644 > > │ ............................................................................ │ 00:00:37 v #2645 > > │ ............................................................................ │ 00:00:37 v #2646 > > │ ........ │ 00:00:37 v #2647 > > │ .......................;;;;;;;.............................................. │ 00:00:37 v #2648 > > │ ............................................................................ │ 00:00:37 v #2649 > > │ ........ │ 00:00:37 v #2650 > > │ ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... │ 00:00:37 v #2651 > > │ ............................................................................ │ 00:00:37 v #2652 > > │ ........ │ 00:00:37 v #2653 > > │ ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... │ 00:00:37 v #2654 > > │ ............................................................................ │ 00:00:37 v #2655 > > │ ........ │ 00:00:37 v #2656 > > │ .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... │ 00:00:37 v #2657 > > │ ............................................................................ │ 00:00:37 v #2658 > > │ ........ │ 00:00:37 v #2659 > > │ .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... │ 00:00:37 v #2660 > > │ ............................................................................ │ 00:00:37 v #2661 > > │ ........ │ 00:00:37 v #2662 > > │ ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. │ 00:00:37 v #2663 > > │ ............................................................................ │ 00:00:37 v #2664 > > │ ........ │ 00:00:37 v #2665 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ │ 00:00:37 v #2666 > > │ ............................................................................ │ 00:00:37 v #2667 > > │ ........ │ 00:00:37 v #2668 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #2669 > > │ ....../;;;;;;;;;;;;;;....................................................... │ 00:00:37 v #2670 > > │ ........ │ 00:00:37 v #2671 > > │ ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #2672 > > │ .....>/;;;;;;;;;;;;;;;;..................................................... │ 00:00:37 v #2673 > > │ ........ │ 00:00:37 v #2674 > > │ ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... │ 00:00:37 v #2675 > > │ ....>///;;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2676 > > │ ........ │ 00:00:37 v #2677 > > │ .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... │ 00:00:37 v #2678 > > │ ...>///////;;;;;;;;;;;;;;..............>/;;;;;;;............................ │ 00:00:37 v #2679 > > │ ........ │ 00:00:37 v #2680 > > │ ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........ │ 00:00:37 v #2681 > > │ ..>/////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.......................... │ 00:00:37 v #2682 > > │ ........ │ 00:00:37 v #2683 > > │ ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<...... │ 00:00:37 v #2684 > > │ .>///////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<......................... │ 00:00:37 v #2685 > > │ ........ │ 00:00:37 v #2686 > > │ ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<....... │ 00:00:37 v #2687 > > │ .////////////;<<<<<<<<<<<<<<.........//////;<<<<<<<......................... │ 00:00:37 v #2688 > > │ ........ │ 00:00:37 v #2689 > > │ ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #2690 > > │ ..////////////<<<<<<<<<<<<<.........../////<<<<<<<.......................... │ 00:00:37 v #2691 > > │ ........ │ 00:00:37 v #2692 > > │ .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.......... │ 00:00:37 v #2693 > > │ ...//////////<<<<<<<<<<<<..............//<<<<<<<............................ │ 00:00:37 v #2694 > > │ ........ │ 00:00:37 v #2695 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #2696 > > │ ....////////<<<<<<<<<<<<.................................................... │ 00:00:37 v #2697 > > │ ........ │ 00:00:37 v #2698 > > │ ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #2699 > > │ ...../////<<<<<<<<<<<<...................................................... │ 00:00:37 v #2700 > > │ ........ │ 00:00:37 v #2701 > > │ ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #2702 > > │ ......///<<<<<<<<<<......................................................... │ 00:00:37 v #2703 > > │ ........ │ 00:00:37 v #2704 > > │ .....................///////////////<<<<<<<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #2705 > > │ ......./<<<................................................................. │ 00:00:37 v #2706 > > │ ........ │ 00:00:37 v #2707 > > │ .....................//////////////<<<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2708 > > │ ............................................................................ │ 00:00:37 v #2709 > > │ ........ │ 00:00:37 v #2710 > > │ ......................///////////<<<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2711 > > │ ............................................................................ │ 00:00:37 v #2712 > > │ ........ │ 00:00:37 v #2713 > > │ ......................./////////<<<<<<<<<<<<<<<<<<<<........................ │ 00:00:37 v #2714 > > │ ............................................................................ │ 00:00:37 v #2715 > > │ ........ │ 00:00:37 v #2716 > > │ ........................///////<<<<<<<<<<<<<<<.............................. │ 00:00:37 v #2717 > > │ ............................................................................ │ 00:00:37 v #2718 > > │ ........ │ 00:00:37 v #2719 > > │ .........................////<<<<<<<<<<<.................................... │ 00:00:37 v #2720 > > │ ............................................................................ │ 00:00:37 v #2721 > > │ ........ │ 00:00:37 v #2722 > > │ ..........................//<<<<<<<......................................... │ 00:00:37 v #2723 > > │ ............................................................................ │ 00:00:37 v #2724 > > │ ........ │ 00:00:37 v #2725 > > │ ...........................<<............................................... │ 00:00:37 v #2726 > > │ ............................................................................ │ 00:00:37 v #2727 > > │ ........ │ 00:00:37 v #2728 > > │ ............................................................................ │ 00:00:37 v #2729 > > │ ............................................................................ │ 00:00:37 v #2730 > > │ ........ │ 00:00:37 v #2731 > > │ ............................................................................ │ 00:00:37 v #2732 > > │ ............................................................................ │ 00:00:37 v #2733 > > │ ........ │ 00:00:37 v #2734 > > │ ............................................................................ │ 00:00:37 v #2735 > > │ ............................................................................ │ 00:00:37 v #2736 > > │ ........ │ 00:00:37 v #2737 > > │ ............................................................................ │ 00:00:37 v #2738 > > │ ............................................................................ │ 00:00:37 v #2739 > > │ ........ │ 00:00:37 v #2740 > > │ ............................................................................ │ 00:00:37 v #2741 > > │ ............................................................................ │ 00:00:37 v #2742 > > │ ........ │ 00:00:37 v #2743 > > │ ............................................................................ │ 00:00:37 v #2744 > > │ ............................................................................ │ 00:00:37 v #2745 > > │ ........ │ 00:00:37 v #2746 > > │ ............................................................................ │ 00:00:37 v #2747 > > │ ............................................................................ │ 00:00:37 v #2748 > > │ ........ │ 00:00:37 v #2749 > > │ ............................................................................ │ 00:00:37 v #2750 > > │ ............................................................................ │ 00:00:37 v #2751 > > │ ........ │ 00:00:37 v #2752 > > │ │ 00:00:37 v #2753 > > │ ............................................................................ │ 00:00:37 v #2754 > > │ ............................................................................ │ 00:00:37 v #2755 > > │ ........ │ 00:00:37 v #2756 > > │ ............................................................................ │ 00:00:37 v #2757 > > │ ............................................................................ │ 00:00:37 v #2758 > > │ ........ │ 00:00:37 v #2759 > > │ ............................................................................ │ 00:00:37 v #2760 > > │ ............................................................................ │ 00:00:37 v #2761 > > │ ........ │ 00:00:37 v #2762 > > │ ............................................................................ │ 00:00:37 v #2763 > > │ ............................................................................ │ 00:00:37 v #2764 > > │ ........ │ 00:00:37 v #2765 > > │ ............................................................................ │ 00:00:37 v #2766 > > │ ............................................................................ │ 00:00:37 v #2767 > > │ ........ │ 00:00:37 v #2768 > > │ ............................................................................ │ 00:00:37 v #2769 > > │ ............................................................................ │ 00:00:37 v #2770 > > │ ........ │ 00:00:37 v #2771 > > │ ............................................................................ │ 00:00:37 v #2772 > > │ ............................................................................ │ 00:00:37 v #2773 > > │ ........ │ 00:00:37 v #2774 > > │ ............................................................................ │ 00:00:37 v #2775 > > │ ............................................................................ │ 00:00:37 v #2776 > > │ ........ │ 00:00:37 v #2777 > > │ ............................................................................ │ 00:00:37 v #2778 > > │ ............................................................................ │ 00:00:37 v #2779 > > │ ........ │ 00:00:37 v #2780 > > │ .......................;;;;................................................. │ 00:00:37 v #2781 > > │ ............................................................................ │ 00:00:37 v #2782 > > │ ........ │ 00:00:37 v #2783 > > │ ......................>/;;;;;;;;;;;;;;;;;;;;;;;;............................ │ 00:00:37 v #2784 > > │ ............................................................................ │ 00:00:37 v #2785 > > │ ........ │ 00:00:37 v #2786 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;......................... │ 00:00:37 v #2787 > > │ ............................................................................ │ 00:00:37 v #2788 > > │ ........ │ 00:00:37 v #2789 > > │ .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;....................... │ 00:00:37 v #2790 > > │ ............................................................................ │ 00:00:37 v #2791 > > │ ........ │ 00:00:37 v #2792 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;..................... │ 00:00:37 v #2793 > > │ ............................................................................ │ 00:00:37 v #2794 > > │ ........ │ 00:00:37 v #2795 > > │ ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #2796 > > │ ............................................................................ │ 00:00:37 v #2797 > > │ ........ │ 00:00:37 v #2798 > > │ ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ │ 00:00:37 v #2799 > > │ ............................................................................ │ 00:00:37 v #2800 > > │ ........ │ 00:00:37 v #2801 > > │ ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;............... │ 00:00:37 v #2802 > > │ ......;;;;;;;;;;;;;;\....................................................... │ 00:00:37 v #2803 > > │ ........ │ 00:00:37 v #2804 > > │ ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ │ 00:00:37 v #2805 > > │ .....>/;;;;;;;;;;;;;;;...................................................... │ 00:00:37 v #2806 > > │ ........ │ 00:00:37 v #2807 > > │ .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #2808 > > │ ....>///;/;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2809 > > │ ........ │ 00:00:37 v #2810 > > │ ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........ │ 00:00:37 v #2811 > > │ ...>//////;;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │ 00:00:37 v #2812 > > │ ........ │ 00:00:37 v #2813 > > │ ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...... │ 00:00:37 v #2814 > > │ ..>////////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.......................... │ 00:00:37 v #2815 > > │ ........ │ 00:00:37 v #2816 > > │ ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<...... │ 00:00:37 v #2817 > > │ .>///////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<......................... │ 00:00:37 v #2818 > > │ ........ │ 00:00:37 v #2819 > > │ ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........ │ 00:00:37 v #2820 > > │ ./////////////;<<<<<<<<<<<<<.........///////<<<<<<<......................... │ 00:00:37 v #2821 > > │ ........ │ 00:00:37 v #2822 > > │ ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.......... │ 00:00:37 v #2823 > > │ ./////////////<<<<<<<<<<<<............/////<<<<<<........................... │ 00:00:37 v #2824 > > │ ........ │ 00:00:37 v #2825 > > │ ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #2826 > > │ ...//////////<<<<<<<<<<<<..............///<<<<<<............................ │ 00:00:37 v #2827 > > │ ........ │ 00:00:37 v #2828 > > │ .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #2829 > > │ ....///////<<<<<<<<<<<<..................<.................................. │ 00:00:37 v #2830 > > │ ........ │ 00:00:37 v #2831 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #2832 > > │ .....//////<<<<<<<<<<<...................................................... │ 00:00:37 v #2833 > > │ ........ │ 00:00:37 v #2834 > > │ ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<................. │ 00:00:37 v #2835 > > │ .......//<<<<<<<<<<......................................................... │ 00:00:37 v #2836 > > │ ........ │ 00:00:37 v #2837 > > │ ....................////////////////<<<<<<<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #2838 > > │ ......../<<<................................................................ │ 00:00:37 v #2839 > > │ ........ │ 00:00:37 v #2840 > > │ .....................///////////////<<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2841 > > │ ............................................................................ │ 00:00:37 v #2842 > > │ ........ │ 00:00:37 v #2843 > > │ ....................../////////////<<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2844 > > │ ............................................................................ │ 00:00:37 v #2845 > > │ ........ │ 00:00:37 v #2846 > > │ .......................//////////<<<<<<<<<<<<<<<<<<<<....................... │ 00:00:37 v #2847 > > │ ............................................................................ │ 00:00:37 v #2848 > > │ ........ │ 00:00:37 v #2849 > > │ ........................////////<<<<<<<<<<<<<<<............................. │ 00:00:37 v #2850 > > │ ............................................................................ │ 00:00:37 v #2851 > > │ ........ │ 00:00:37 v #2852 > > │ ..........................////<<<<<<<<<<<<.................................. │ 00:00:37 v #2853 > > │ ............................................................................ │ 00:00:37 v #2854 > > │ ........ │ 00:00:37 v #2855 > > │ ..........................////<<<<<<<....................................... │ 00:00:37 v #2856 > > │ ............................................................................ │ 00:00:37 v #2857 > > │ ........ │ 00:00:37 v #2858 > > │ ............................<<<<............................................ │ 00:00:37 v #2859 > > │ ............................................................................ │ 00:00:37 v #2860 > > │ ........ │ 00:00:37 v #2861 > > │ ............................................................................ │ 00:00:37 v #2862 > > │ ............................................................................ │ 00:00:37 v #2863 > > │ ........ │ 00:00:37 v #2864 > > │ ............................................................................ │ 00:00:37 v #2865 > > │ ............................................................................ │ 00:00:37 v #2866 > > │ ........ │ 00:00:37 v #2867 > > │ ............................................................................ │ 00:00:37 v #2868 > > │ ............................................................................ │ 00:00:37 v #2869 > > │ ........ │ 00:00:37 v #2870 > > │ ............................................................................ │ 00:00:37 v #2871 > > │ ............................................................................ │ 00:00:37 v #2872 > > │ ........ │ 00:00:37 v #2873 > > │ ............................................................................ │ 00:00:37 v #2874 > > │ ............................................................................ │ 00:00:37 v #2875 > > │ ........ │ 00:00:37 v #2876 > > │ ............................................................................ │ 00:00:37 v #2877 > > │ ............................................................................ │ 00:00:37 v #2878 > > │ ........ │ 00:00:37 v #2879 > > │ ............................................................................ │ 00:00:37 v #2880 > > │ ............................................................................ │ 00:00:37 v #2881 > > │ ........ │ 00:00:37 v #2882 > > │ ............................................................................ │ 00:00:37 v #2883 > > │ ............................................................................ │ 00:00:37 v #2884 > > │ ........ │ 00:00:37 v #2885 > > │ │ 00:00:37 v #2886 > > │ ............................................................................ │ 00:00:37 v #2887 > > │ ............................................................................ │ 00:00:37 v #2888 > > │ ........ │ 00:00:37 v #2889 > > │ ............................................................................ │ 00:00:37 v #2890 > > │ ............................................................................ │ 00:00:37 v #2891 > > │ ........ │ 00:00:37 v #2892 > > │ ............................................................................ │ 00:00:37 v #2893 > > │ ............................................................................ │ 00:00:37 v #2894 > > │ ........ │ 00:00:37 v #2895 > > │ ............................................................................ │ 00:00:37 v #2896 > > │ ............................................................................ │ 00:00:37 v #2897 > > │ ........ │ 00:00:37 v #2898 > > │ ............................................................................ │ 00:00:37 v #2899 > > │ ............................................................................ │ 00:00:37 v #2900 > > │ ........ │ 00:00:37 v #2901 > > │ ............................................................................ │ 00:00:37 v #2902 > > │ ............................................................................ │ 00:00:37 v #2903 > > │ ........ │ 00:00:37 v #2904 > > │ ............................................................................ │ 00:00:37 v #2905 > > │ ............................................................................ │ 00:00:37 v #2906 > > │ ........ │ 00:00:37 v #2907 > > │ ............................................................................ │ 00:00:37 v #2908 > > │ ............................................................................ │ 00:00:37 v #2909 > > │ ........ │ 00:00:37 v #2910 > > │ ............................................................................ │ 00:00:37 v #2911 > > │ ............................................................................ │ 00:00:37 v #2912 > > │ ........ │ 00:00:37 v #2913 > > │ .......................;;................................................... │ 00:00:37 v #2914 > > │ ............................................................................ │ 00:00:37 v #2915 > > │ ........ │ 00:00:37 v #2916 > > │ ......................>;;;;;;;;;;;;;;;;;;;;................................. │ 00:00:37 v #2917 > > │ ............................................................................ │ 00:00:37 v #2918 > > │ ........ │ 00:00:37 v #2919 > > │ ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.......................... │ 00:00:37 v #2920 > > │ ............................................................................ │ 00:00:37 v #2921 > > │ ........ │ 00:00:37 v #2922 > > │ .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;........................ │ 00:00:37 v #2923 > > │ ............................................................................ │ 00:00:37 v #2924 > > │ ........ │ 00:00:37 v #2925 > > │ ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\..................... │ 00:00:37 v #2926 > > │ ............................................................................ │ 00:00:37 v #2927 > > │ ........ │ 00:00:37 v #2928 > > │ ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... │ 00:00:37 v #2929 > > │ ............................................................................ │ 00:00:37 v #2930 > > │ ........ │ 00:00:37 v #2931 > > │ ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #2932 > > │ ............................................................................ │ 00:00:37 v #2933 > > │ ........ │ 00:00:37 v #2934 > > │ ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. │ 00:00:37 v #2935 > > │ .....>/;;;;;;;;;;;;;........................................................ │ 00:00:37 v #2936 > > │ ........ │ 00:00:37 v #2937 > > │ ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #2938 > > │ ....>//;;;;;;;;;;;;;;;...................................................... │ 00:00:37 v #2939 > > │ ........ │ 00:00:37 v #2940 > > │ .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #2941 > > │ ....>////;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #2942 > > │ ........ │ 00:00:37 v #2943 > > │ .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....... │ 00:00:37 v #2944 > > │ ...>///////;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │ 00:00:37 v #2945 > > │ ........ │ 00:00:37 v #2946 > > │ ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<....... │ 00:00:37 v #2947 > > │ ..>/////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.......................... │ 00:00:37 v #2948 > > │ ........ │ 00:00:37 v #2949 > > │ ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<........ │ 00:00:37 v #2950 > > │ .>////////////;;;<<<<<<<<<<<.........>/////;;;<<<<<......................... │ 00:00:37 v #2951 > > │ ........ │ 00:00:37 v #2952 > > │ ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #2953 > > │ ////////////////<<<<<<<<<<<..........///////<<<<<<<......................... │ 00:00:37 v #2954 > > │ ........ │ 00:00:37 v #2955 > > │ ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #2956 > > │ .//////////////<<<<<<<<<<<............/////<<<<<<........................... │ 00:00:37 v #2957 > > │ ........ │ 00:00:37 v #2958 > > │ ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #2959 > > │ ..////////////<<<<<<<<<<<..............///<<<<<<............................ │ 00:00:37 v #2960 > > │ ........ │ 00:00:37 v #2961 > > │ ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #2962 > > │ ....////////<<<<<<<<<<<..................<.................................. │ 00:00:37 v #2963 > > │ ........ │ 00:00:37 v #2964 > > │ .................///////////////////////<<<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #2965 > > │ .....//////<<<<<<<<<<<...................................................... │ 00:00:37 v #2966 > > │ ........ │ 00:00:37 v #2967 > > │ ...................////////////////////<<<<<<<<<<<<<<<<<<<<................. │ 00:00:37 v #2968 > > │ .......///<<<<<<<<<<........................................................ │ 00:00:37 v #2969 > > │ ........ │ 00:00:37 v #2970 > > │ ....................//////////////////<<<<<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #2971 > > │ ......../<<<<............................................................... │ 00:00:37 v #2972 > > │ ........ │ 00:00:37 v #2973 > > │ .....................////////////////<<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #2974 > > │ ............................................................................ │ 00:00:37 v #2975 > > │ ........ │ 00:00:37 v #2976 > > │ ......................//////////////<<<<<<<<<<<<<<<<<<...................... │ 00:00:37 v #2977 > > │ ............................................................................ │ 00:00:37 v #2978 > > │ ........ │ 00:00:37 v #2979 > > │ ........................///////////<<<<<<<<<<<<<<<<<<....................... │ 00:00:37 v #2980 > > │ ............................................................................ │ 00:00:37 v #2981 > > │ ........ │ 00:00:37 v #2982 > > │ .........................////////<<<<<<<<<<<<<<<............................ │ 00:00:37 v #2983 > > │ ............................................................................ │ 00:00:37 v #2984 > > │ ........ │ 00:00:37 v #2985 > > │ ..........................//////<<<<<<<<<<<................................. │ 00:00:37 v #2986 > > │ ............................................................................ │ 00:00:37 v #2987 > > │ ........ │ 00:00:37 v #2988 > > │ ...........................////<<<<<<<<..................................... │ 00:00:37 v #2989 > > │ ............................................................................ │ 00:00:37 v #2990 > > │ ........ │ 00:00:37 v #2991 > > │ ............................//<<<<.......................................... │ 00:00:37 v #2992 > > │ ............................................................................ │ 00:00:37 v #2993 > > │ ........ │ 00:00:37 v #2994 > > │ ............................................................................ │ 00:00:37 v #2995 > > │ ............................................................................ │ 00:00:37 v #2996 > > │ ........ │ 00:00:37 v #2997 > > │ ............................................................................ │ 00:00:37 v #2998 > > │ ............................................................................ │ 00:00:37 v #2999 > > │ ........ │ 00:00:37 v #3000 > > │ ............................................................................ │ 00:00:37 v #3001 > > │ ............................................................................ │ 00:00:37 v #3002 > > │ ........ │ 00:00:37 v #3003 > > │ ............................................................................ │ 00:00:37 v #3004 > > │ ............................................................................ │ 00:00:37 v #3005 > > │ ........ │ 00:00:37 v #3006 > > │ ............................................................................ │ 00:00:37 v #3007 > > │ ............................................................................ │ 00:00:37 v #3008 > > │ ........ │ 00:00:37 v #3009 > > │ ............................................................................ │ 00:00:37 v #3010 > > │ ............................................................................ │ 00:00:37 v #3011 > > │ ........ │ 00:00:37 v #3012 > > │ ............................................................................ │ 00:00:37 v #3013 > > │ ............................................................................ │ 00:00:37 v #3014 > > │ ........ │ 00:00:37 v #3015 > > │ ............................................................................ │ 00:00:37 v #3016 > > │ ............................................................................ │ 00:00:37 v #3017 > > │ ........ │ 00:00:37 v #3018 > > │ │ 00:00:37 v #3019 > > │ ............................................................................ │ 00:00:37 v #3020 > > │ ............................................................................ │ 00:00:37 v #3021 > > │ ........ │ 00:00:37 v #3022 > > │ ............................................................................ │ 00:00:37 v #3023 > > │ ............................................................................ │ 00:00:37 v #3024 > > │ ........ │ 00:00:37 v #3025 > > │ ............................................................................ │ 00:00:37 v #3026 > > │ ............................................................................ │ 00:00:37 v #3027 > > │ ........ │ 00:00:37 v #3028 > > │ ............................................................................ │ 00:00:37 v #3029 > > │ ............................................................................ │ 00:00:37 v #3030 > > │ ........ │ 00:00:37 v #3031 > > │ ............................................................................ │ 00:00:37 v #3032 > > │ ............................................................................ │ 00:00:37 v #3033 > > │ ........ │ 00:00:37 v #3034 > > │ ............................................................................ │ 00:00:37 v #3035 > > │ ............................................................................ │ 00:00:37 v #3036 > > │ ........ │ 00:00:37 v #3037 > > │ ............................................................................ │ 00:00:37 v #3038 > > │ ............................................................................ │ 00:00:37 v #3039 > > │ ........ │ 00:00:37 v #3040 > > │ ............................................................................ │ 00:00:37 v #3041 > > │ ............................................................................ │ 00:00:37 v #3042 > > │ ........ │ 00:00:37 v #3043 > > │ ............................................................................ │ 00:00:37 v #3044 > > │ ............................................................................ │ 00:00:37 v #3045 > > │ ........ │ 00:00:37 v #3046 > > │ ............................................................................ │ 00:00:37 v #3047 > > │ ............................................................................ │ 00:00:37 v #3048 > > │ ........ │ 00:00:37 v #3049 > > │ ....................../;;;;;;;;;;;;;;;;..................................... │ 00:00:37 v #3050 > > │ ............................................................................ │ 00:00:37 v #3051 > > │ ........ │ 00:00:37 v #3052 > > │ .....................>///;;;;;;;;;;;;;;;;;;;;;;;............................ │ 00:00:37 v #3053 > > │ ............................................................................ │ 00:00:37 v #3054 > > │ ........ │ 00:00:37 v #3055 > > │ .....................//////;;;;;;;;;;;;;;;;;;;;;;;;......................... │ 00:00:37 v #3056 > > │ ............................................................................ │ 00:00:37 v #3057 > > │ ........ │ 00:00:37 v #3058 > > │ ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;....................... │ 00:00:37 v #3059 > > │ ............................................................................ │ 00:00:37 v #3060 > > │ ........ │ 00:00:37 v #3061 > > │ ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;.................... │ 00:00:37 v #3062 > > │ ............................................................................ │ 00:00:37 v #3063 > > │ ........ │ 00:00:37 v #3064 > > │ ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #3065 > > │ ............................................................................ │ 00:00:37 v #3066 > > │ ........ │ 00:00:37 v #3067 > > │ ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #3068 > > │ .....>;;;;;;;;;;;;;......................................................... │ 00:00:37 v #3069 > > │ ........ │ 00:00:37 v #3070 > > │ ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #3071 > > │ ....>//;/;;;;;;;;;;;;....................................................... │ 00:00:37 v #3072 > > │ ........ │ 00:00:37 v #3073 > > │ .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\........ │ 00:00:37 v #3074 > > │ ....//////;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #3075 > > │ ........ │ 00:00:37 v #3076 > > │ ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<....... │ 00:00:37 v #3077 > > │ ...>///////;;;;;;;;;;;;;;;.............>/;;;;;;;............................ │ 00:00:37 v #3078 > > │ ........ │ 00:00:37 v #3079 > > │ ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<........ │ 00:00:37 v #3080 > > │ ..>////////////;;;;;;;;;;;<<..........>//;;;;;;;;;.......................... │ 00:00:37 v #3081 > > │ ........ │ 00:00:37 v #3082 > > │ ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #3083 > > │ .>/////////////;<<<<<<<<<<<<.........>/////;;<<<<<<......................... │ 00:00:37 v #3084 > > │ ........ │ 00:00:37 v #3085 > > │ ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<........... │ 00:00:37 v #3086 > > │ .///////////////<<<<<<<<<<<..........///////<<<<<<.......................... │ 00:00:37 v #3087 > > │ ........ │ 00:00:37 v #3088 > > │ ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #3089 > > │ ///////////////<<<<<<<<<<<............/////<<<<<<........................... │ 00:00:37 v #3090 > > │ ........ │ 00:00:37 v #3091 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #3092 > > │ ..////////////<<<<<<<<<<<...............///<<<<<............................ │ 00:00:37 v #3093 > > │ ........ │ 00:00:37 v #3094 > > │ ...............///////////////////////////<<<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #3095 > > │ ..../////////<<<<<<<<<<................../.................................. │ 00:00:37 v #3096 > > │ ........ │ 00:00:37 v #3097 > > │ ................//////////////////////////<<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #3098 > > │ .....///////<<<<<<<<<<...................................................... │ 00:00:37 v #3099 > > │ ........ │ 00:00:37 v #3100 > > │ ..................//////////////////////<<<<<<<<<<<<<<<<<<<................. │ 00:00:37 v #3101 > > │ .......////<<<<<<<<<........................................................ │ 00:00:37 v #3102 > > │ ........ │ 00:00:37 v #3103 > > │ ....................///////////////////<<<<<<<<<<<<<<<<<<................... │ 00:00:37 v #3104 > > │ ........./<<<............................................................... │ 00:00:37 v #3105 > > │ ........ │ 00:00:37 v #3106 > > │ ...................../////////////////<<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #3107 > > │ ............................................................................ │ 00:00:37 v #3108 > > │ ........ │ 00:00:37 v #3109 > > │ ......................///////////////<<<<<<<<<<<<<<<<<<..................... │ 00:00:37 v #3110 > > │ ............................................................................ │ 00:00:37 v #3111 > > │ ........ │ 00:00:37 v #3112 > > │ ........................////////////<<<<<<<<<<<<<<<<<....................... │ 00:00:37 v #3113 > > │ ............................................................................ │ 00:00:37 v #3114 > > │ ........ │ 00:00:37 v #3115 > > │ .........................//////////<<<<<<<<<<<<<<........................... │ 00:00:37 v #3116 > > │ ............................................................................ │ 00:00:37 v #3117 > > │ ........ │ 00:00:37 v #3118 > > │ ...........................///////<<<<<<<<<<<............................... │ 00:00:37 v #3119 > > │ ............................................................................ │ 00:00:37 v #3120 > > │ ........ │ 00:00:37 v #3121 > > │ ............................/////<<<<<<<.................................... │ 00:00:37 v #3122 > > │ ............................................................................ │ 00:00:37 v #3123 > > │ ........ │ 00:00:37 v #3124 > > │ ..............................//<<<<........................................ │ 00:00:37 v #3125 > > │ ............................................................................ │ 00:00:37 v #3126 > > │ ........ │ 00:00:37 v #3127 > > │ ............................................................................ │ 00:00:37 v #3128 > > │ ............................................................................ │ 00:00:37 v #3129 > > │ ........ │ 00:00:37 v #3130 > > │ ............................................................................ │ 00:00:37 v #3131 > > │ ............................................................................ │ 00:00:37 v #3132 > > │ ........ │ 00:00:37 v #3133 > > │ ............................................................................ │ 00:00:37 v #3134 > > │ ............................................................................ │ 00:00:37 v #3135 > > │ ........ │ 00:00:37 v #3136 > > │ ............................................................................ │ 00:00:37 v #3137 > > │ ............................................................................ │ 00:00:37 v #3138 > > │ ........ │ 00:00:37 v #3139 > > │ ............................................................................ │ 00:00:37 v #3140 > > │ ............................................................................ │ 00:00:37 v #3141 > > │ ........ │ 00:00:37 v #3142 > > │ ............................................................................ │ 00:00:37 v #3143 > > │ ............................................................................ │ 00:00:37 v #3144 > > │ ........ │ 00:00:37 v #3145 > > │ ............................................................................ │ 00:00:37 v #3146 > > │ ............................................................................ │ 00:00:37 v #3147 > > │ ........ │ 00:00:37 v #3148 > > │ ............................................................................ │ 00:00:37 v #3149 > > │ ............................................................................ │ 00:00:37 v #3150 > > │ ........ │ 00:00:37 v #3151 > > │ │ 00:00:37 v #3152 > > │ ............................................................................ │ 00:00:37 v #3153 > > │ ............................................................................ │ 00:00:37 v #3154 > > │ ........ │ 00:00:37 v #3155 > > │ ............................................................................ │ 00:00:37 v #3156 > > │ ............................................................................ │ 00:00:37 v #3157 > > │ ........ │ 00:00:37 v #3158 > > │ ............................................................................ │ 00:00:37 v #3159 > > │ ............................................................................ │ 00:00:37 v #3160 > > │ ........ │ 00:00:37 v #3161 > > │ ............................................................................ │ 00:00:37 v #3162 > > │ ............................................................................ │ 00:00:37 v #3163 > > │ ........ │ 00:00:37 v #3164 > > │ ............................................................................ │ 00:00:37 v #3165 > > │ ............................................................................ │ 00:00:37 v #3166 > > │ ........ │ 00:00:37 v #3167 > > │ ............................................................................ │ 00:00:37 v #3168 > > │ ............................................................................ │ 00:00:37 v #3169 > > │ ........ │ 00:00:37 v #3170 > > │ ............................................................................ │ 00:00:37 v #3171 > > │ ............................................................................ │ 00:00:37 v #3172 > > │ ........ │ 00:00:37 v #3173 > > │ ............................................................................ │ 00:00:37 v #3174 > > │ ............................................................................ │ 00:00:37 v #3175 > > │ ........ │ 00:00:37 v #3176 > > │ ............................................................................ │ 00:00:37 v #3177 > > │ ............................................................................ │ 00:00:37 v #3178 > > │ ........ │ 00:00:37 v #3179 > > │ ............................................................................ │ 00:00:37 v #3180 > > │ ............................................................................ │ 00:00:37 v #3181 > > │ ........ │ 00:00:37 v #3182 > > │ .....................>;;;;;;;;;;;;.......................................... │ 00:00:37 v #3183 > > │ ............................................................................ │ 00:00:37 v #3184 > > │ ........ │ 00:00:37 v #3185 > > │ .....................///;;;;;;;;;;;;;;;;;;;;;;.............................. │ 00:00:37 v #3186 > > │ ............................................................................ │ 00:00:37 v #3187 > > │ ........ │ 00:00:37 v #3188 > > │ ....................>//////;;;;;;;;;;;;;;;;;;;;;;........................... │ 00:00:37 v #3189 > > │ ............................................................................ │ 00:00:37 v #3190 > > │ ........ │ 00:00:37 v #3191 > > │ ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\....................... │ 00:00:37 v #3192 > > │ ............................................................................ │ 00:00:37 v #3193 > > │ ........ │ 00:00:37 v #3194 > > │ ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\.................... │ 00:00:37 v #3195 > > │ ............................................................................ │ 00:00:37 v #3196 > > │ ........ │ 00:00:37 v #3197 > > │ ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #3198 > > │ ............................................................................ │ 00:00:37 v #3199 > > │ ........ │ 00:00:37 v #3200 > > │ ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.............. │ 00:00:37 v #3201 > > │ .....;;;;;;;;;;;;;.......................................................... │ 00:00:37 v #3202 > > │ ........ │ 00:00:37 v #3203 > > │ .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.......... │ 00:00:37 v #3204 > > │ ....>///;;;;;;;;;;;;;....................................................... │ 00:00:37 v #3205 > > │ ........ │ 00:00:37 v #3206 > > │ .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<........ │ 00:00:37 v #3207 > > │ ..../////;;;;;;;;;;;;;;;.................................................... │ 00:00:37 v #3208 > > │ ........ │ 00:00:37 v #3209 > > │ ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<........ │ 00:00:37 v #3210 > > │ ...>////////;/;;;;;;;;;;;;;............>/;;;;;;;............................ │ 00:00:37 v #3211 > > │ ........ │ 00:00:37 v #3212 > > │ ................////////////////////////////////<<<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #3213 > > │ ..>///////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.......................... │ 00:00:37 v #3214 > > │ ........ │ 00:00:37 v #3215 > > │ ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<.......... │ 00:00:37 v #3216 > > │ .>///////////////<<<<<<<<<<..........>///////<<<<<<......................... │ 00:00:37 v #3217 > > │ ........ │ 00:00:37 v #3218 > > │ ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............ │ 00:00:37 v #3219 > > │ .///////////////<<<<<<<<<<...........////////<<<<<.......................... │ 00:00:37 v #3220 > > │ ........ │ 00:00:37 v #3221 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<<<............. │ 00:00:37 v #3222 > > │ >//////////////<<<<<<<<<<............///////<<<<<........................... │ 00:00:37 v #3223 > > │ ........ │ 00:00:37 v #3224 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #3225 > > │ .//////////////<<<<<<<<<................///<<<<<............................ │ 00:00:37 v #3226 > > │ ........ │ 00:00:37 v #3227 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<<<............... │ 00:00:37 v #3228 > > │ ...///////////<<<<<<<<<.................../................................. │ 00:00:37 v #3229 > > │ ........ │ 00:00:37 v #3230 > > │ ...............////////////////////////////<<<<<<<<<<<<<<<<<................ │ 00:00:37 v #3231 > > │ ......///////<<<<<<<<<...................................................... │ 00:00:37 v #3232 > > │ ........ │ 00:00:37 v #3233 > > │ ................./////////////////////////<<<<<<<<<<<<<<<<.................. │ 00:00:37 v #3234 > > │ ........////<<<<<<<<........................................................ │ 00:00:37 v #3235 > > │ ........ │ 00:00:37 v #3236 > > │ ...................//////////////////////<<<<<<<<<<<<<<<<................... │ 00:00:37 v #3237 > > │ ........../<<<.............................................................. │ 00:00:37 v #3238 > > │ ........ │ 00:00:37 v #3239 > > │ .....................//////////////////<<<<<<<<<<<<<<<<<.................... │ 00:00:37 v #3240 > > │ ............................................................................ │ 00:00:37 v #3241 > > │ ........ │ 00:00:37 v #3242 > > │ ....................../////////////////<<<<<<<<<<<<<<<<..................... │ 00:00:37 v #3243 > > │ ............................................................................ │ 00:00:37 v #3244 > > │ ........ │ 00:00:37 v #3245 > > │ ........................//////////////<<<<<<<<<<<<<<<....................... │ 00:00:37 v #3246 > > │ ............................................................................ │ 00:00:37 v #3247 > > │ ........ │ 00:00:37 v #3248 > > │ ..........................///////////<<<<<<<<<<<<........................... │ 00:00:37 v #3249 > > │ ............................................................................ │ 00:00:37 v #3250 > > │ ........ │ 00:00:37 v #3251 > > │ ............................////////<<<<<<<<<<.............................. │ 00:00:37 v #3252 > > │ ............................................................................ │ 00:00:37 v #3253 > > │ ........ │ 00:00:37 v #3254 > > │ .............................//////<<<<<<<.................................. │ 00:00:37 v #3255 > > │ ............................................................................ │ 00:00:37 v #3256 > > │ ........ │ 00:00:37 v #3257 > > │ ...............................///<<<<...................................... │ 00:00:37 v #3258 > > │ ............................................................................ │ 00:00:37 v #3259 > > │ ........ │ 00:00:37 v #3260 > > │ .................................<.......................................... │ 00:00:37 v #3261 > > │ ............................................................................ │ 00:00:37 v #3262 > > │ ........ │ 00:00:37 v #3263 > > │ ............................................................................ │ 00:00:37 v #3264 > > │ ............................................................................ │ 00:00:37 v #3265 > > │ ........ │ 00:00:37 v #3266 > > │ ............................................................................ │ 00:00:37 v #3267 > > │ ............................................................................ │ 00:00:37 v #3268 > > │ ........ │ 00:00:37 v #3269 > > │ ............................................................................ │ 00:00:37 v #3270 > > │ ............................................................................ │ 00:00:37 v #3271 > > │ ........ │ 00:00:37 v #3272 > > │ ............................................................................ │ 00:00:37 v #3273 > > │ ............................................................................ │ 00:00:37 v #3274 > > │ ........ │ 00:00:37 v #3275 > > │ ............................................................................ │ 00:00:37 v #3276 > > │ ............................................................................ │ 00:00:37 v #3277 > > │ ........ │ 00:00:37 v #3278 > > │ ............................................................................ │ 00:00:37 v #3279 > > │ ............................................................................ │ 00:00:37 v #3280 > > │ ........ │ 00:00:37 v #3281 > > │ ............................................................................ │ 00:00:37 v #3282 > > │ ............................................................................ │ 00:00:37 v #3283 > > │ ........ │ 00:00:37 v #3284 > > │ │ 00:00:37 v #3285 > > │ ............................................................................ │ 00:00:37 v #3286 > > │ ............................................................................ │ 00:00:37 v #3287 > > │ ........ │ 00:00:37 v #3288 > > │ ............................................................................ │ 00:00:37 v #3289 > > │ ............................................................................ │ 00:00:37 v #3290 > > │ ........ │ 00:00:37 v #3291 > > │ ............................................................................ │ 00:00:37 v #3292 > > │ ............................................................................ │ 00:00:37 v #3293 > > │ ........ │ 00:00:37 v #3294 > > │ ............................................................................ │ 00:00:37 v #3295 > > │ ............................................................................ │ 00:00:37 v #3296 > > │ ........ │ 00:00:37 v #3297 > > │ ............................................................................ │ 00:00:37 v #3298 > > │ ............................................................................ │ 00:00:37 v #3299 > > │ ........ │ 00:00:37 v #3300 > > │ ............................................................................ │ 00:00:37 v #3301 > > │ ............................................................................ │ 00:00:37 v #3302 > > │ ........ │ 00:00:37 v #3303 > > │ ............................................................................ │ 00:00:37 v #3304 > > │ ............................................................................ │ 00:00:37 v #3305 > > │ ........ │ 00:00:37 v #3306 > > │ ............................................................................ │ 00:00:37 v #3307 > > │ ............................................................................ │ 00:00:37 v #3308 > > │ ........ │ 00:00:37 v #3309 > > │ ............................................................................ │ 00:00:37 v #3310 > > │ ............................................................................ │ 00:00:37 v #3311 > > │ ........ │ 00:00:37 v #3312 > > │ ............................................................................ │ 00:00:37 v #3313 > > │ ............................................................................ │ 00:00:37 v #3314 > > │ ........ │ 00:00:37 v #3315 > > │ ...................../;;;;;;;;.............................................. │ 00:00:37 v #3316 > > │ ............................................................................ │ 00:00:37 v #3317 > > │ ........ │ 00:00:37 v #3318 > > │ ....................>//;;;;;;;;;;;;;;;;;;;;;................................ │ 00:00:37 v #3319 > > │ ............................................................................ │ 00:00:37 v #3320 > > │ ........ │ 00:00:37 v #3321 > > │ ....................//////;;;;;;;;;;;;;;;;;;;;;............................. │ 00:00:37 v #3322 > > │ ............................................................................ │ 00:00:37 v #3323 > > │ ........ │ 00:00:37 v #3324 > > │ ...................>//////////;/;;;;;;;;;;;;;;;;;;;......................... │ 00:00:37 v #3325 > > │ ............................................................................ │ 00:00:37 v #3326 > > │ ........ │ 00:00:37 v #3327 > > │ ...................//////////////;/;;;;;;;;;;;;;;;;;;;;..................... │ 00:00:37 v #3328 > > │ ............................................................................ │ 00:00:37 v #3329 > > │ ........ │ 00:00:37 v #3330 > > │ ..................>////////////////////;;;;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #3331 > > │ ............................................................................ │ 00:00:37 v #3332 > > │ ........ │ 00:00:37 v #3333 > > │ ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;............. │ 00:00:37 v #3334 > > │ .....;;;;;;;;;;;;\.......................................................... │ 00:00:37 v #3335 > > │ ........ │ 00:00:37 v #3336 > > │ .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.......... │ 00:00:37 v #3337 > > │ ....>/;;/;;;;;;;;;;;;....................................................... │ 00:00:37 v #3338 > > │ ........ │ 00:00:37 v #3339 > > │ .................////////////////////////////////;;;<<<<<<<<<<<<<<<<........ │ 00:00:37 v #3340 > > │ ..../////;;/;;;;;;;;;;;;.................................................... │ 00:00:37 v #3341 > > │ ........ │ 00:00:37 v #3342 > > │ ................>/////////////////////////////////<<<<<<<<<<<<<<<<<......... │ 00:00:37 v #3343 > > │ ...>////////;;;;;;;;;;;;;;;............;;;;;;;;;............................ │ 00:00:37 v #3344 > > │ ........ │ 00:00:37 v #3345 > > │ ................/////////////////////////////////<<<<<<<<<<<<<<<<........... │ 00:00:37 v #3346 > > │ ..>/////////////;;<<<<<<<<<<..........>////;;;;;;;;......................... │ 00:00:37 v #3347 > > │ ........ │ 00:00:37 v #3348 > > │ ...............>////////////////////////////////<<<<<<<<<<<<<<<<............ │ 00:00:37 v #3349 > > │ ..////////////////<<<<<<<<<...........//////;<<<<<<......................... │ 00:00:37 v #3350 > > │ ........ │ 00:00:37 v #3351 > > │ ...............////////////////////////////////<<<<<<<<<<<<<<<<............. │ 00:00:37 v #3352 > > │ .>///////////////<<<<<<<<<...........>///////<<<<<.......................... │ 00:00:37 v #3353 > > │ ........ │ 00:00:37 v #3354 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<<.............. │ 00:00:37 v #3355 > > │ >///////////////<<<<<<<<<............///////<<<<<........................... │ 00:00:37 v #3356 > > │ ........ │ 00:00:37 v #3357 > > │ ..............///////////////////////////////<<<<<<<<<<<<<<<<............... │ 00:00:37 v #3358 > > │ .//////////////<<<<<<<<<................///<<<<<............................ │ 00:00:37 v #3359 > > │ ........ │ 00:00:37 v #3360 > > │ .............>///////////////////////////////<<<<<<<<<<<<<<<................ │ 00:00:37 v #3361 > > │ ...///////////<<<<<<<<<..................................................... │ 00:00:37 v #3362 > > │ ........ │ 00:00:37 v #3363 > > │ ..............//////////////////////////////<<<<<<<<<<<<<<<................. │ 00:00:37 v #3364 > > │ ......///////<<<<<<<<<...................................................... │ 00:00:37 v #3365 > > │ ........ │ 00:00:37 v #3366 > > │ ................///////////////////////////<<<<<<<<<<<<<<<.................. │ 00:00:37 v #3367 > > │ ......../////<<<<<<<........................................................ │ 00:00:37 v #3368 > > │ ........ │ 00:00:37 v #3369 > > │ ..................////////////////////////<<<<<<<<<<<<<<<................... │ 00:00:37 v #3370 > > │ .........../<<.............................................................. │ 00:00:37 v #3371 > > │ ........ │ 00:00:37 v #3372 > > │ ..................../////////////////////<<<<<<<<<<<<<<<.................... │ 00:00:37 v #3373 > > │ ............................................................................ │ 00:00:37 v #3374 > > │ ........ │ 00:00:37 v #3375 > > │ ......................//////////////////<<<<<<<<<<<<<<<..................... │ 00:00:37 v #3376 > > │ ............................................................................ │ 00:00:37 v #3377 > > │ ........ │ 00:00:37 v #3378 > > │ ........................///////////////<<<<<<<<<<<<<<....................... │ 00:00:37 v #3379 > > │ ............................................................................ │ 00:00:37 v #3380 > > │ ........ │ 00:00:37 v #3381 > > │ ...........................///////////<<<<<<<<<<<<.......................... │ 00:00:37 v #3382 > > │ ............................................................................ │ 00:00:37 v #3383 > > │ ........ │ 00:00:37 v #3384 > > │ ............................//////////<<<<<<<<<............................. │ 00:00:37 v #3385 > > │ ............................................................................ │ 00:00:37 v #3386 > > │ ........ │ 00:00:37 v #3387 > > │ ..............................///////<<<<<<................................. │ 00:00:37 v #3388 > > │ ............................................................................ │ 00:00:37 v #3389 > > │ ........ │ 00:00:37 v #3390 > > │ ................................////<<<<.................................... │ 00:00:37 v #3391 > > │ ............................................................................ │ 00:00:37 v #3392 > > │ ........ │ 00:00:37 v #3393 > > │ ...................................<........................................ │ 00:00:37 v #3394 > > │ ............................................................................ │ 00:00:37 v #3395 > > │ ........ │ 00:00:37 v #3396 > > │ ............................................................................ │ 00:00:37 v #3397 > > │ ............................................................................ │ 00:00:37 v #3398 > > │ ........ │ 00:00:37 v #3399 > > │ ............................................................................ │ 00:00:37 v #3400 > > │ ............................................................................ │ 00:00:37 v #3401 > > │ ........ │ 00:00:37 v #3402 > > │ ............................................................................ │ 00:00:37 v #3403 > > │ ............................................................................ │ 00:00:37 v #3404 > > │ ........ │ 00:00:37 v #3405 > > │ ............................................................................ │ 00:00:37 v #3406 > > │ ............................................................................ │ 00:00:37 v #3407 > > │ ........ │ 00:00:37 v #3408 > > │ ............................................................................ │ 00:00:37 v #3409 > > │ ............................................................................ │ 00:00:37 v #3410 > > │ ........ │ 00:00:37 v #3411 > > │ ............................................................................ │ 00:00:37 v #3412 > > │ ............................................................................ │ 00:00:37 v #3413 > > │ ........ │ 00:00:37 v #3414 > > │ ............................................................................ │ 00:00:37 v #3415 > > │ ............................................................................ │ 00:00:37 v #3416 > > │ ........ │ 00:00:37 v #3417 > > │ │ 00:00:37 v #3418 > > │ ............................................................................ │ 00:00:37 v #3419 > > │ ............................................................................ │ 00:00:37 v #3420 > > │ ........ │ 00:00:37 v #3421 > > │ ............................................................................ │ 00:00:37 v #3422 > > │ ............................................................................ │ 00:00:37 v #3423 > > │ ........ │ 00:00:37 v #3424 > > │ ............................................................................ │ 00:00:37 v #3425 > > │ ............................................................................ │ 00:00:37 v #3426 > > │ ........ │ 00:00:37 v #3427 > > │ ............................................................................ │ 00:00:37 v #3428 > > │ ............................................................................ │ 00:00:37 v #3429 > > │ ........ │ 00:00:37 v #3430 > > │ ............................................................................ │ 00:00:37 v #3431 > > │ ............................................................................ │ 00:00:37 v #3432 > > │ ........ │ 00:00:37 v #3433 > > │ ............................................................................ │ 00:00:37 v #3434 > > │ ............................................................................ │ 00:00:37 v #3435 > > │ ........ │ 00:00:37 v #3436 > > │ ............................................................................ │ 00:00:37 v #3437 > > │ ............................................................................ │ 00:00:37 v #3438 > > │ ........ │ 00:00:37 v #3439 > > │ ............................................................................ │ 00:00:37 v #3440 > > │ ............................................................................ │ 00:00:37 v #3441 > > │ ........ │ 00:00:37 v #3442 > > │ ............................................................................ │ 00:00:37 v #3443 > > │ ............................................................................ │ 00:00:37 v #3444 > > │ ........ │ 00:00:37 v #3445 > > │ ............................................................................ │ 00:00:37 v #3446 > > │ ............................................................................ │ 00:00:37 v #3447 > > │ ........ │ 00:00:37 v #3448 > > │ .....................;;;;;.................................................. │ 00:00:37 v #3449 > > │ ............................................................................ │ 00:00:37 v #3450 > > │ ........ │ 00:00:37 v #3451 > > │ ....................>/;/;;;;;;;;;;;;;;...................................... │ 00:00:37 v #3452 > > │ ............................................................................ │ 00:00:37 v #3453 > > │ ........ │ 00:00:37 v #3454 > > │ ....................//////;/;;;;;;;;;;;;;;;;;............................... │ 00:00:37 v #3455 > > │ ............................................................................ │ 00:00:37 v #3456 > > │ ........ │ 00:00:37 v #3457 > > │ ...................>//////////;;/;;;;;;;;;;;;;;;;;.......................... │ 00:00:37 v #3458 > > │ ............................................................................ │ 00:00:37 v #3459 > > │ ........ │ 00:00:37 v #3460 > > │ ...................////////////////;;;;;;;;;;;;;;;;;;;;..................... │ 00:00:37 v #3461 > > │ ............................................................................ │ 00:00:37 v #3462 > > │ ........ │ 00:00:37 v #3463 > > │ ..................>///////////////////////;;;;;;;;;;;;;;;;;................. │ 00:00:37 v #3464 > > │ ............................................................................ │ 00:00:37 v #3465 > > │ ........ │ 00:00:37 v #3466 > > │ ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;............ │ 00:00:37 v #3467 > > │ .....;;;;;;;;;;;............................................................ │ 00:00:37 v #3468 > > │ ........ │ 00:00:37 v #3469 > > │ .................>///////////////////////////////;;;;;<<<<<<<<<<<<<......... │ 00:00:37 v #3470 > > │ ....>//;/;;;;;;;;;;;........................................................ │ 00:00:37 v #3471 > > │ ........ │ 00:00:37 v #3472 > > │ .................//////////////////////////////////<<<<<<<<<<<<<<<.......... │ 00:00:37 v #3473 > > │ ...>//////;//;;;;;;;;;;;.................................................... │ 00:00:37 v #3474 > > │ ........ │ 00:00:37 v #3475 > > │ ................>/////////////////////////////////<<<<<<<<<<<<<<<........... │ 00:00:37 v #3476 > > │ ...>/////////;/;;;;;;;;;<<<<...........;;;;;;;;............................. │ 00:00:37 v #3477 > > │ ........ │ 00:00:37 v #3478 > > │ ................//////////////////////////////////<<<<<<<<<<<<<<............ │ 00:00:37 v #3479 > > │ ..>///////////////<<<<<<<<<...........>///;;;;;;;<<......................... │ 00:00:37 v #3480 > > │ ........ │ 00:00:37 v #3481 > > │ ...............>/////////////////////////////////<<<<<<<<<<<<<<<............ │ 00:00:37 v #3482 > > │ ..////////////////<<<<<<<<<...........///////;<<<<<......................... │ 00:00:37 v #3483 > > │ ........ │ 00:00:37 v #3484 > > │ .............../////////////////////////////////<<<<<<<<<<<<<<<............. │ 00:00:37 v #3485 > > │ .>///////////////<<<<<<<<<...........>///////<<<<<.......................... │ 00:00:37 v #3486 > > │ ........ │ 00:00:37 v #3487 > > │ ..............>////////////////////////////////<<<<<<<<<<<<<<<.............. │ 00:00:37 v #3488 > > │ >///////////////<<<<<<<<<............///////<<<<<........................... │ 00:00:37 v #3489 > > │ ........ │ 00:00:37 v #3490 > > │ ..............>///////////////////////////////<<<<<<<<<<<<<<<............... │ 00:00:37 v #3491 > > │ ////////////////<<<<<<<<................////<<<<<........................... │ 00:00:37 v #3492 > > │ ........ │ 00:00:37 v #3493 > > │ ..............////////////////////////////////<<<<<<<<<<<<<<................ │ 00:00:37 v #3494 > > │ ...////////////<<<<<<<<..................................................... │ 00:00:37 v #3495 > > │ ........ │ 00:00:37 v #3496 > > │ .............>///////////////////////////////<<<<<<<<<<<<<<................. │ 00:00:37 v #3497 > > │ ......////////<<<<<<<<...................................................... │ 00:00:37 v #3498 > > │ ........ │ 00:00:37 v #3499 > > │ .............../////////////////////////////<<<<<<<<<<<<<<.................. │ 00:00:37 v #3500 > > │ .........////<<<<<<<........................................................ │ 00:00:37 v #3501 > > │ ........ │ 00:00:37 v #3502 > > │ .................//////////////////////////<<<<<<<<<<<<<<................... │ 00:00:37 v #3503 > > │ ...........//<<............................................................. │ 00:00:37 v #3504 > > │ ........ │ 00:00:37 v #3505 > > │ ....................///////////////////////<<<<<<<<<<<<<.................... │ 00:00:37 v #3506 > > │ ............................................................................ │ 00:00:37 v #3507 > > │ ........ │ 00:00:37 v #3508 > > │ ......................////////////////////<<<<<<<<<<<<<..................... │ 00:00:37 v #3509 > > │ ............................................................................ │ 00:00:37 v #3510 > > │ ........ │ 00:00:37 v #3511 > > │ ......................../////////////////<<<<<<<<<<<<....................... │ 00:00:37 v #3512 > > │ ............................................................................ │ 00:00:37 v #3513 > > │ ........ │ 00:00:37 v #3514 > > │ .........................../////////////<<<<<<<<<<.......................... │ 00:00:37 v #3515 > > │ ............................................................................ │ 00:00:37 v #3516 > > │ ........ │ 00:00:37 v #3517 > > │ .............................//////////<<<<<<<<............................. │ 00:00:37 v #3518 > > │ ............................................................................ │ 00:00:37 v #3519 > > │ ........ │ 00:00:37 v #3520 > > │ ................................///////<<<<<................................ │ 00:00:37 v #3521 > > │ ............................................................................ │ 00:00:37 v #3522 > > │ ........ │ 00:00:37 v #3523 > > │ ..................................////<<<................................... │ 00:00:37 v #3524 > > │ ............................................................................ │ 00:00:37 v #3525 > > │ ........ │ 00:00:37 v #3526 > > │ .....................................<...................................... │ 00:00:37 v #3527 > > │ ............................................................................ │ 00:00:37 v #3528 > > │ ........ │ 00:00:37 v #3529 > > │ ............................................................................ │ 00:00:37 v #3530 > > │ ............................................................................ │ 00:00:37 v #3531 > > │ ........ │ 00:00:37 v #3532 > > │ ............................................................................ │ 00:00:37 v #3533 > > │ ............................................................................ │ 00:00:37 v #3534 > > │ ........ │ 00:00:37 v #3535 > > │ ............................................................................ │ 00:00:37 v #3536 > > │ ............................................................................ │ 00:00:37 v #3537 > > │ ........ │ 00:00:37 v #3538 > > │ ............................................................................ │ 00:00:37 v #3539 > > │ ............................................................................ │ 00:00:37 v #3540 > > │ ........ │ 00:00:37 v #3541 > > │ ............................................................................ │ 00:00:37 v #3542 > > │ ............................................................................ │ 00:00:37 v #3543 > > │ ........ │ 00:00:37 v #3544 > > │ ............................................................................ │ 00:00:37 v #3545 > > │ ............................................................................ │ 00:00:37 v #3546 > > │ ........ │ 00:00:37 v #3547 > > │ ............................................................................ │ 00:00:37 v #3548 > > │ ............................................................................ │ 00:00:37 v #3549 > > │ ........ │ 00:00:37 v #3550 > > │ │ 00:00:37 v #3551 > > │ ............................................................................ │ 00:00:37 v #3552 > > │ ............................................................................ │ 00:00:37 v #3553 > > │ ........ │ 00:00:37 v #3554 > > │ ............................................................................ │ 00:00:37 v #3555 > > │ ............................................................................ │ 00:00:37 v #3556 > > │ ........ │ 00:00:37 v #3557 > > │ ............................................................................ │ 00:00:37 v #3558 > > │ ............................................................................ │ 00:00:37 v #3559 > > │ ........ │ 00:00:37 v #3560 > > │ ............................................................................ │ 00:00:37 v #3561 > > │ ............................................................................ │ 00:00:37 v #3562 > > │ ........ │ 00:00:37 v #3563 > > │ ............................................................................ │ 00:00:37 v #3564 > > │ ............................................................................ │ 00:00:37 v #3565 > > │ ........ │ 00:00:37 v #3566 > > │ ............................................................................ │ 00:00:37 v #3567 > > │ ............................................................................ │ 00:00:37 v #3568 > > │ ........ │ 00:00:37 v #3569 > > │ ............................................................................ │ 00:00:37 v #3570 > > │ ............................................................................ │ 00:00:37 v #3571 > > │ ........ │ 00:00:37 v #3572 > > │ ............................................................................ │ 00:00:37 v #3573 > > │ ............................................................................ │ 00:00:37 v #3574 > > │ ........ │ 00:00:37 v #3575 > > │ ............................................................................ │ 00:00:37 v #3576 > > │ ............................................................................ │ 00:00:37 v #3577 > > │ ........ │ 00:00:37 v #3578 > > │ ............................................................................ │ 00:00:37 v #3579 > > │ ............................................................................ │ 00:00:37 v #3580 > > │ ........ │ 00:00:37 v #3581 > > │ ....................;;...................................................... │ 00:00:37 v #3582 > > │ ............................................................................ │ 00:00:37 v #3583 > > │ ........ │ 00:00:37 v #3584 > > │ ....................//;/;;;;;;;;;........................................... │ 00:00:37 v #3585 > > │ ............................................................................ │ 00:00:37 v #3586 > > │ ........ │ 00:00:37 v #3587 > > │ ...................>//////;;;/;;;;;;;;;;;;;................................. │ 00:00:37 v #3588 > > │ ............................................................................ │ 00:00:37 v #3589 > > │ ........ │ 00:00:37 v #3590 > > │ ...................////////////;;;;;;;;;;;;;;;;;............................ │ 00:00:37 v #3591 > > │ ............................................................................ │ 00:00:37 v #3592 > > │ ........ │ 00:00:37 v #3593 > > │ ..................>/////////////////////;;;;;;;;;;;;;;...................... │ 00:00:37 v #3594 > > │ ............................................................................ │ 00:00:37 v #3595 > > │ ........ │ 00:00:37 v #3596 > > │ ..................>///////////////////////;;;/;;;;;;;;;;;;;;................ │ 00:00:37 v #3597 > > │ ............................................................................ │ 00:00:37 v #3598 > > │ ........ │ 00:00:37 v #3599 > > │ ................../////////////////////////////;;/;;;;;;;;;;;;;;;........... │ 00:00:37 v #3600 > > │ ....;;;;;;;;;;;............................................................. │ 00:00:37 v #3601 > > │ ........ │ 00:00:37 v #3602 > > │ .................>//////////////////////////////////<<<<<<<<<<<<<<.......... │ 00:00:37 v #3603 > > │ ....>/;/;;;;;;;;;;;;........................................................ │ 00:00:37 v #3604 > > │ ........ │ 00:00:37 v #3605 > > │ .................//////////////////////////////////<<<<<<<<<<<<<<........... │ 00:00:37 v #3606 > > │ ...>///////;;/;;;;;;;;;;;................................................... │ 00:00:37 v #3607 > > │ ........ │ 00:00:37 v #3608 > > │ ................>//////////////////////////////////<<<<<<<<<<<<<............ │ 00:00:37 v #3609 > > │ ...>//////////;;/;;;<<<<<<<............/;;;;;;;\............................ │ 00:00:37 v #3610 > > │ ........ │ 00:00:37 v #3611 > > │ ................//////////////////////////////////<<<<<<<<<<<<<............. │ 00:00:37 v #3612 > > │ ..>////////////////<<<<<<<<...........>//;;/;;;;<<<......................... │ 00:00:37 v #3613 > > │ ........ │ 00:00:37 v #3614 > > │ ...............>//////////////////////////////////<<<<<<<<<<<<.............. │ 00:00:37 v #3615 > > │ ..////////////////<<<<<<<<............>///////<<<<.......................... │ 00:00:37 v #3616 > > │ ........ │ 00:00:37 v #3617 > > │ ...............>/////////////////////////////////<<<<<<<<<<<<<.............. │ 00:00:37 v #3618 > > │ .>///////////////<<<<<<<<............>///////<<<<<.......................... │ 00:00:37 v #3619 > > │ ........ │ 00:00:37 v #3620 > > │ .............../////////////////////////////////<<<<<<<<<<<<<............... │ 00:00:37 v #3621 > > │ .>///////////////<<<<<<<<............////////<<<<........................... │ 00:00:37 v #3622 > > │ ........ │ 00:00:37 v #3623 > > │ ..............>////////////////////////////////<<<<<<<<<<<<<................ │ 00:00:37 v #3624 > > │ .///////////////<<<<<<<<................////<<<<<........................... │ 00:00:37 v #3625 > > │ ........ │ 00:00:37 v #3626 > > │ ............../////////////////////////////////<<<<<<<<<<<<................. │ 00:00:37 v #3627 > > │ ../////////////<<<<<<<<..................................................... │ 00:00:37 v #3628 > > │ ........ │ 00:00:37 v #3629 > > │ .............>////////////////////////////////<<<<<<<<<<<<<................. │ 00:00:37 v #3630 > > │ ....../////////<<<<<<<<..................................................... │ 00:00:37 v #3631 > > │ ........ │ 00:00:37 v #3632 > > │ .............////////////////////////////////<<<<<<<<<<<<<.................. │ 00:00:37 v #3633 > > │ ........./////<<<<<<........................................................ │ 00:00:37 v #3634 > > │ ........ │ 00:00:37 v #3635 > > │ ................/////////////////////////////<<<<<<<<<<<<................... │ 00:00:37 v #3636 > > │ ............./<............................................................. │ 00:00:37 v #3637 > > │ ........ │ 00:00:37 v #3638 > > │ .................../////////////////////////<<<<<<<<<<<<.................... │ 00:00:37 v #3639 > > │ ............................................................................ │ 00:00:37 v #3640 > > │ ........ │ 00:00:37 v #3641 > > │ ....................../////////////////////<<<<<<<<<<<<..................... │ 00:00:37 v #3642 > > │ ............................................................................ │ 00:00:37 v #3643 > > │ ........ │ 00:00:37 v #3644 > > │ ........................///////////////////<<<<<<<<<<....................... │ 00:00:37 v #3645 > > │ ............................................................................ │ 00:00:37 v #3646 > > │ ........ │ 00:00:37 v #3647 > > │ ............................//////////////<<<<<<<<<......................... │ 00:00:37 v #3648 > > │ ............................................................................ │ 00:00:37 v #3649 > > │ ........ │ 00:00:37 v #3650 > > │ ...............................//////////<<<<<<<............................ │ 00:00:37 v #3651 > > │ ............................................................................ │ 00:00:37 v #3652 > > │ ........ │ 00:00:37 v #3653 > > │ ..................................///////<<<<<.............................. │ 00:00:37 v #3654 > > │ ............................................................................ │ 00:00:37 v #3655 > > │ ........ │ 00:00:37 v #3656 > > │ ....................................////<<<................................. │ 00:00:37 v #3657 > > │ ............................................................................ │ 00:00:37 v #3658 > > │ ........ │ 00:00:37 v #3659 > > │ ......................................./.................................... │ 00:00:37 v #3660 > > │ ............................................................................ │ 00:00:37 v #3661 > > │ ........ │ 00:00:37 v #3662 > > │ ............................................................................ │ 00:00:37 v #3663 > > │ ............................................................................ │ 00:00:37 v #3664 > > │ ........ │ 00:00:37 v #3665 > > │ ............................................................................ │ 00:00:37 v #3666 > > │ ............................................................................ │ 00:00:37 v #3667 > > │ ........ │ 00:00:37 v #3668 > > │ ............................................................................ │ 00:00:37 v #3669 > > │ ............................................................................ │ 00:00:37 v #3670 > > │ ........ │ 00:00:37 v #3671 > > │ ............................................................................ │ 00:00:37 v #3672 > > │ ............................................................................ │ 00:00:37 v #3673 > > │ ........ │ 00:00:37 v #3674 > > │ ............................................................................ │ 00:00:37 v #3675 > > │ ............................................................................ │ 00:00:37 v #3676 > > │ ........ │ 00:00:37 v #3677 > > │ ............................................................................ │ 00:00:37 v #3678 > > │ ............................................................................ │ 00:00:37 v #3679 > > │ ........ │ 00:00:37 v #3680 > > │ ............................................................................ │ 00:00:37 v #3681 > > │ ............................................................................ │ 00:00:37 v #3682 > > │ ........ │ 00:00:37 v #3683 > > │ │ 00:00:37 v #3684 > > │ ............................................................................ │ 00:00:37 v #3685 > > │ ............................................................................ │ 00:00:37 v #3686 > > │ ........ │ 00:00:37 v #3687 > > │ ............................................................................ │ 00:00:37 v #3688 > > │ ............................................................................ │ 00:00:37 v #3689 > > │ ........ │ 00:00:37 v #3690 > > │ ............................................................................ │ 00:00:37 v #3691 > > │ ............................................................................ │ 00:00:37 v #3692 > > │ ........ │ 00:00:37 v #3693 > > │ ............................................................................ │ 00:00:37 v #3694 > > │ ............................................................................ │ 00:00:37 v #3695 > > │ ........ │ 00:00:37 v #3696 > > │ ............................................................................ │ 00:00:37 v #3697 > > │ ............................................................................ │ 00:00:37 v #3698 > > │ ........ │ 00:00:37 v #3699 > > │ ............................................................................ │ 00:00:37 v #3700 > > │ ............................................................................ │ 00:00:37 v #3701 > > │ ........ │ 00:00:37 v #3702 > > │ ............................................................................ │ 00:00:37 v #3703 > > │ ............................................................................ │ 00:00:37 v #3704 > > │ ........ │ 00:00:37 v #3705 > > │ ............................................................................ │ 00:00:37 v #3706 > > │ ............................................................................ │ 00:00:37 v #3707 > > │ ........ │ 00:00:37 v #3708 > > │ ............................................................................ │ 00:00:37 v #3709 > > │ ............................................................................ │ 00:00:37 v #3710 > > │ ........ │ 00:00:37 v #3711 > > │ ............................................................................ │ 00:00:37 v #3712 > > │ ............................................................................ │ 00:00:37 v #3713 > > │ ........ │ 00:00:37 v #3714 > > │ ............................................................................ │ 00:00:37 v #3715 > > │ ............................................................................ │ 00:00:37 v #3716 > > │ ........ │ 00:00:37 v #3717 > > │ ...................;/;;;;;;;;............................................... │ 00:00:37 v #3718 > > │ ............................................................................ │ 00:00:37 v #3719 > > │ ........ │ 00:00:37 v #3720 > > │ ...................//////;///;;;;;;;;;;..................................... │ 00:00:37 v #3721 > > │ ............................................................................ │ 00:00:37 v #3722 > > │ ........ │ 00:00:37 v #3723 > > │ ..................>/////////////;;;;;;;;;;;;;;;............................. │ 00:00:37 v #3724 > > │ ............................................................................ │ 00:00:37 v #3725 > > │ ........ │ 00:00:37 v #3726 > > │ ..................>////////////////////;//;;;;;;;;;;;;...................... │ 00:00:37 v #3727 > > │ ............................................................................ │ 00:00:37 v #3728 > > │ ........ │ 00:00:37 v #3729 > > │ ................../////////////////////////////;/;;;;;;;;;;;;............... │ 00:00:37 v #3730 > > │ ............................................................................ │ 00:00:37 v #3731 > > │ ........ │ 00:00:37 v #3732 > > │ .................>///////////////////////////////////<<<<<<<<<<<<........... │ 00:00:37 v #3733 > > │ ............................................................................ │ 00:00:37 v #3734 > > │ ........ │ 00:00:37 v #3735 > > │ .................>//////////////////////////////////<<<<<<<<<<<<............ │ 00:00:37 v #3736 > > │ ..../;;/;;;;;;;;;;;......................................................... │ 00:00:37 v #3737 > > │ ........ │ 00:00:37 v #3738 > > │ .................///////////////////////////////////<<<<<<<<<<<<............ │ 00:00:37 v #3739 > > │ ...>///////;;;;;;;;;;;;;;................................................... │ 00:00:37 v #3740 > > │ ........ │ 00:00:37 v #3741 > > │ ................>//////////////////////////////////<<<<<<<<<<<<............. │ 00:00:37 v #3742 > > │ ...>/////////////;;<<<<<<<<............;;;;;;;;............................. │ 00:00:37 v #3743 > > │ ........ │ 00:00:37 v #3744 > > │ ................>//////////////////////////////////<<<<<<<<<<<.............. │ 00:00:37 v #3745 > > │ ..>////////////////<<<<<<<............>//;;/;;<<<<<......................... │ 00:00:37 v #3746 > > │ ........ │ 00:00:37 v #3747 > > │ ................//////////////////////////////////<<<<<<<<<<<<.............. │ 00:00:37 v #3748 > > │ ..>////////////////<<<<<<<............>///////<<<<.......................... │ 00:00:37 v #3749 > > │ ........ │ 00:00:37 v #3750 > > │ ...............>//////////////////////////////////<<<<<<<<<<<............... │ 00:00:37 v #3751 > > │ ..////////////////<<<<<<<............>///////<<<<<.......................... │ 00:00:37 v #3752 > > │ ........ │ 00:00:37 v #3753 > > │ ...............//////////////////////////////////<<<<<<<<<<<................ │ 00:00:37 v #3754 > > │ .>///////////////<<<<<<<.............>///////<<<<........................... │ 00:00:37 v #3755 > > │ ........ │ 00:00:37 v #3756 > > │ ...............//////////////////////////////////<<<<<<<<<<<................ │ 00:00:37 v #3757 > > │ .////////////////<<<<<<<................////<<<<<........................... │ 00:00:37 v #3758 > > │ ........ │ 00:00:37 v #3759 > > │ ..............>/////////////////////////////////<<<<<<<<<<<................. │ 00:00:37 v #3760 > > │ .///////////////<<<<<<<..................................................... │ 00:00:37 v #3761 > > │ ........ │ 00:00:37 v #3762 > > │ ............../////////////////////////////////<<<<<<<<<<<.................. │ 00:00:37 v #3763 > > │ ......//////////<<<<<<<..................................................... │ 00:00:37 v #3764 > > │ ........ │ 00:00:37 v #3765 > > │ .............//////////////////////////////////<<<<<<<<<<<.................. │ 00:00:37 v #3766 > > │ ........../////<<<<<........................................................ │ 00:00:37 v #3767 > > │ ........ │ 00:00:37 v #3768 > > │ ..............////////////////////////////////<<<<<<<<<<<................... │ 00:00:37 v #3769 > > │ ............../<............................................................ │ 00:00:37 v #3770 > > │ ........ │ 00:00:37 v #3771 > > │ ................./////////////////////////////<<<<<<<<<<.................... │ 00:00:37 v #3772 > > │ ............................................................................ │ 00:00:37 v #3773 > > │ ........ │ 00:00:37 v #3774 > > │ .....................////////////////////////<<<<<<<<<<<.................... │ 00:00:37 v #3775 > > │ ............................................................................ │ 00:00:37 v #3776 > > │ ........ │ 00:00:37 v #3777 > > │ ........................////////////////////<<<<<<<<<<...................... │ 00:00:37 v #3778 > > │ ............................................................................ │ 00:00:37 v #3779 > > │ ........ │ 00:00:37 v #3780 > > │ ............................////////////////<<<<<<<......................... │ 00:00:37 v #3781 > > │ ............................................................................ │ 00:00:37 v #3782 > > │ ........ │ 00:00:37 v #3783 > > │ ................................///////////<<<<<<........................... │ 00:00:37 v #3784 > > │ ............................................................................ │ 00:00:37 v #3785 > > │ ........ │ 00:00:37 v #3786 > > │ ...................................////////<<<<............................. │ 00:00:37 v #3787 > > │ ............................................................................ │ 00:00:37 v #3788 > > │ ........ │ 00:00:37 v #3789 > > │ .......................................///<<................................ │ 00:00:37 v #3790 > > │ ............................................................................ │ 00:00:37 v #3791 > > │ ........ │ 00:00:37 v #3792 > > │ ............................................................................ │ 00:00:37 v #3793 > > │ ............................................................................ │ 00:00:37 v #3794 > > │ ........ │ 00:00:37 v #3795 > > │ ............................................................................ │ 00:00:37 v #3796 > > │ ............................................................................ │ 00:00:37 v #3797 > > │ ........ │ 00:00:37 v #3798 > > │ ............................................................................ │ 00:00:37 v #3799 > > │ ............................................................................ │ 00:00:37 v #3800 > > │ ........ │ 00:00:37 v #3801 > > │ ............................................................................ │ 00:00:37 v #3802 > > │ ............................................................................ │ 00:00:37 v #3803 > > │ ........ │ 00:00:37 v #3804 > > │ ............................................................................ │ 00:00:37 v #3805 > > │ ............................................................................ │ 00:00:37 v #3806 > > │ ........ │ 00:00:37 v #3807 > > │ ............................................................................ │ 00:00:37 v #3808 > > │ ............................................................................ │ 00:00:37 v #3809 > > │ ........ │ 00:00:37 v #3810 > > │ ............................................................................ │ 00:00:37 v #3811 > > │ ............................................................................ │ 00:00:37 v #3812 > > │ ........ │ 00:00:37 v #3813 > > │ ............................................................................ │ 00:00:37 v #3814 > > │ ............................................................................ │ 00:00:37 v #3815 > > │ ........ │ 00:00:37 v #3816 > > │ │ 00:00:37 v #3817 > > │ ............................................................................ │ 00:00:37 v #3818 > > │ ............................................................................ │ 00:00:37 v #3819 > > │ ........ │ 00:00:37 v #3820 > > │ ............................................................................ │ 00:00:37 v #3821 > > │ ............................................................................ │ 00:00:37 v #3822 > > │ ........ │ 00:00:37 v #3823 > > │ ............................................................................ │ 00:00:37 v #3824 > > │ ............................................................................ │ 00:00:37 v #3825 > > │ ........ │ 00:00:37 v #3826 > > │ ............................................................................ │ 00:00:37 v #3827 > > │ ............................................................................ │ 00:00:37 v #3828 > > │ ........ │ 00:00:37 v #3829 > > │ ............................................................................ │ 00:00:37 v #3830 > > │ ............................................................................ │ 00:00:37 v #3831 > > │ ........ │ 00:00:37 v #3832 > > │ ............................................................................ │ 00:00:37 v #3833 > > │ ............................................................................ │ 00:00:37 v #3834 > > │ ........ │ 00:00:37 v #3835 > > │ ............................................................................ │ 00:00:37 v #3836 > > │ ............................................................................ │ 00:00:37 v #3837 > > │ ........ │ 00:00:37 v #3838 > > │ ............................................................................ │ 00:00:37 v #3839 > > │ ............................................................................ │ 00:00:37 v #3840 > > │ ........ │ 00:00:37 v #3841 > > │ ............................................................................ │ 00:00:37 v #3842 > > │ ............................................................................ │ 00:00:37 v #3843 > > │ ........ │ 00:00:37 v #3844 > > │ ............................................................................ │ 00:00:37 v #3845 > > │ ............................................................................ │ 00:00:37 v #3846 > > │ ........ │ 00:00:37 v #3847 > > │ ............................................................................ │ 00:00:37 v #3848 > > │ ............................................................................ │ 00:00:37 v #3849 > > │ ........ │ 00:00:37 v #3850 > > │ ...................;;;;;.................................................... │ 00:00:37 v #3851 > > │ ............................................................................ │ 00:00:37 v #3852 > > │ ........ │ 00:00:37 v #3853 > > │ ..................>//////;;;;;;;;;;......................................... │ 00:00:37 v #3854 > > │ ............................................................................ │ 00:00:37 v #3855 > > │ ........ │ 00:00:37 v #3856 > > │ ..................>//////////////;;;;/;;;;;;................................ │ 00:00:37 v #3857 > > │ ............................................................................ │ 00:00:37 v #3858 > > │ ........ │ 00:00:37 v #3859 > > │ ..................//////////////////////////;;;;;;;;;;...................... │ 00:00:37 v #3860 > > │ ............................................................................ │ 00:00:37 v #3861 > > │ ........ │ 00:00:37 v #3862 > > │ ..................//////////////////////////////////;/<<<<<<<<<............. │ 00:00:37 v #3863 > > │ ............................................................................ │ 00:00:37 v #3864 > > │ ........ │ 00:00:37 v #3865 > > │ .................>///////////////////////////////////<<<<<<<<<<............. │ 00:00:37 v #3866 > > │ ............................................................................ │ 00:00:37 v #3867 > > │ ........ │ 00:00:37 v #3868 > > │ .................////////////////////////////////////<<<<<<<<<<............. │ 00:00:37 v #3869 > > │ ....;/;;;;;;;;;;;;;......................................................... │ 00:00:37 v #3870 > > │ ........ │ 00:00:37 v #3871 > > │ .................///////////////////////////////////<<<<<<<<<<.............. │ 00:00:37 v #3872 > > │ ...>///////;;;;;;;;;;;;;;<.................................................. │ 00:00:37 v #3873 > > │ ........ │ 00:00:37 v #3874 > > │ ................>///////////////////////////////////<<<<<<<<<<.............. │ 00:00:37 v #3875 > > │ ...///////////////;<<<<<<<.............;;;;;;;;............................. │ 00:00:37 v #3876 > > │ ........ │ 00:00:37 v #3877 > > │ ................>///////////////////////////////////<<<<<<<<<............... │ 00:00:37 v #3878 > > │ ...////////////////<<<<<<<............>//;;//;<<<<.......................... │ 00:00:37 v #3879 > > │ ........ │ 00:00:37 v #3880 > > │ ................///////////////////////////////////<<<<<<<<<<............... │ 00:00:37 v #3881 > > │ ..>////////////////<<<<<<.............>///////<<<<.......................... │ 00:00:37 v #3882 > > │ ........ │ 00:00:37 v #3883 > > │ ...............>//////////////////////////////////<<<<<<<<<<................ │ 00:00:37 v #3884 > > │ ..////////////////<<<<<<<.............////////<<<<.......................... │ 00:00:37 v #3885 > > │ ........ │ 00:00:37 v #3886 > > │ ...............>//////////////////////////////////<<<<<<<<<<................ │ 00:00:37 v #3887 > > │ ../////////////////<<<<<.............>///////<<<<........................... │ 00:00:37 v #3888 > > │ ........ │ 00:00:37 v #3889 > > │ ...............///////////////////////////////////<<<<<<<<<................. │ 00:00:37 v #3890 > > │ .>///////////////<<<<<<<................/////<<<<........................... │ 00:00:37 v #3891 > > │ ........ │ 00:00:37 v #3892 > > │ ...............//////////////////////////////////<<<<<<<<<<................. │ 00:00:37 v #3893 > > │ .////////////////<<<<<<..................................................... │ 00:00:37 v #3894 > > │ ........ │ 00:00:37 v #3895 > > │ ..............>//////////////////////////////////<<<<<<<<<.................. │ 00:00:37 v #3896 > > │ .....///////////<<<<<<<..................................................... │ 00:00:37 v #3897 > > │ ........ │ 00:00:37 v #3898 > > │ ..............>/////////////////////////////////<<<<<<<<<<.................. │ 00:00:37 v #3899 > > │ .........../////<<<<........................................................ │ 00:00:37 v #3900 > > │ ........ │ 00:00:37 v #3901 > > │ ..............//////////////////////////////////<<<<<<<<<................... │ 00:00:37 v #3902 > > │ ............................................................................ │ 00:00:37 v #3903 > > │ ........ │ 00:00:37 v #3904 > > │ ...............////////////////////////////////<<<<<<<<<<................... │ 00:00:37 v #3905 > > │ ............................................................................ │ 00:00:37 v #3906 > > │ ........ │ 00:00:37 v #3907 > > │ ....................///////////////////////////<<<<<<<<<.................... │ 00:00:37 v #3908 > > │ ............................................................................ │ 00:00:37 v #3909 > > │ ........ │ 00:00:37 v #3910 > > │ ........................//////////////////////<<<<<<<<...................... │ 00:00:37 v #3911 > > │ ............................................................................ │ 00:00:37 v #3912 > > │ ........ │ 00:00:37 v #3913 > > │ ............................./////////////////<<<<<<........................ │ 00:00:37 v #3914 > > │ ............................................................................ │ 00:00:37 v #3915 > > │ ........ │ 00:00:37 v #3916 > > │ .................................////////////<<<<<.......................... │ 00:00:37 v #3917 > > │ ............................................................................ │ 00:00:37 v #3918 > > │ ........ │ 00:00:37 v #3919 > > │ ......................................///////<<<............................ │ 00:00:37 v #3920 > > │ ............................................................................ │ 00:00:37 v #3921 > > │ ........ │ 00:00:37 v #3922 > > │ ..........................................//<<.............................. │ 00:00:37 v #3923 > > │ ............................................................................ │ 00:00:37 v #3924 > > │ ........ │ 00:00:37 v #3925 > > │ ............................................................................ │ 00:00:37 v #3926 > > │ ............................................................................ │ 00:00:37 v #3927 > > │ ........ │ 00:00:37 v #3928 > > │ ............................................................................ │ 00:00:37 v #3929 > > │ ............................................................................ │ 00:00:37 v #3930 > > │ ........ │ 00:00:37 v #3931 > > │ ............................................................................ │ 00:00:37 v #3932 > > │ ............................................................................ │ 00:00:37 v #3933 > > │ ........ │ 00:00:37 v #3934 > > │ ............................................................................ │ 00:00:37 v #3935 > > │ ............................................................................ │ 00:00:37 v #3936 > > │ ........ │ 00:00:37 v #3937 > > │ ............................................................................ │ 00:00:37 v #3938 > > │ ............................................................................ │ 00:00:37 v #3939 > > │ ........ │ 00:00:37 v #3940 > > │ ............................................................................ │ 00:00:37 v #3941 > > │ ............................................................................ │ 00:00:37 v #3942 > > │ ........ │ 00:00:37 v #3943 > > │ ............................................................................ │ 00:00:37 v #3944 > > │ ............................................................................ │ 00:00:37 v #3945 > > │ ........ │ 00:00:37 v #3946 > > │ ............................................................................ │ 00:00:37 v #3947 > > │ ............................................................................ │ 00:00:37 v #3948 > > │ ........ │ 00:00:37 v #3949 > > │ │ 00:00:37 v #3950 > > │ ............................................................................ │ 00:00:37 v #3951 > > │ ............................................................................ │ 00:00:37 v #3952 > > │ ........ │ 00:00:37 v #3953 > > │ ............................................................................ │ 00:00:37 v #3954 > > │ ............................................................................ │ 00:00:37 v #3955 > > │ ........ │ 00:00:37 v #3956 > > │ ............................................................................ │ 00:00:37 v #3957 > > │ ............................................................................ │ 00:00:37 v #3958 > > │ ........ │ 00:00:37 v #3959 > > │ ............................................................................ │ 00:00:37 v #3960 > > │ ............................................................................ │ 00:00:37 v #3961 > > │ ........ │ 00:00:37 v #3962 > > │ ............................................................................ │ 00:00:37 v #3963 > > │ ............................................................................ │ 00:00:37 v #3964 > > │ ........ │ 00:00:37 v #3965 > > │ ............................................................................ │ 00:00:37 v #3966 > > │ ............................................................................ │ 00:00:37 v #3967 > > │ ........ │ 00:00:37 v #3968 > > │ ............................................................................ │ 00:00:37 v #3969 > > │ ............................................................................ │ 00:00:37 v #3970 > > │ ........ │ 00:00:37 v #3971 > > │ ............................................................................ │ 00:00:37 v #3972 > > │ ............................................................................ │ 00:00:37 v #3973 > > │ ........ │ 00:00:37 v #3974 > > │ ............................................................................ │ 00:00:37 v #3975 > > │ ............................................................................ │ 00:00:37 v #3976 > > │ ........ │ 00:00:37 v #3977 > > │ ............................................................................ │ 00:00:37 v #3978 > > │ ............................................................................ │ 00:00:37 v #3979 > > │ ........ │ 00:00:37 v #3980 > > │ ............................................................................ │ 00:00:37 v #3981 > > │ ............................................................................ │ 00:00:37 v #3982 > > │ ........ │ 00:00:37 v #3983 > > │ ..................;;;....................................................... │ 00:00:37 v #3984 > > │ ............................................................................ │ 00:00:37 v #3985 > > │ ........ │ 00:00:37 v #3986 > > │ ..................//;;;;;;/;;;;;;;;......................................... │ 00:00:37 v #3987 > > │ ............................................................................ │ 00:00:37 v #3988 > > │ ........ │ 00:00:37 v #3989 > > │ ..................////////////////;;//;;;;;;;;;;;........................... │ 00:00:37 v #3990 > > │ ............................................................................ │ 00:00:37 v #3991 > > │ ........ │ 00:00:37 v #3992 > > │ .................>///////////////////////////////;;;/;<<<<<................. │ 00:00:37 v #3993 > > │ ............................................................................ │ 00:00:37 v #3994 > > │ ........ │ 00:00:37 v #3995 > > │ .................>////////////////////////////////////<<<<<<<<.............. │ 00:00:37 v #3996 > > │ ............................................................................ │ 00:00:37 v #3997 > > │ ........ │ 00:00:37 v #3998 > > │ ................./////////////////////////////////////<<<<<<<<.............. │ 00:00:37 v #3999 > > │ ............................................................................ │ 00:00:37 v #4000 > > │ ........ │ 00:00:37 v #4001 > > │ .................////////////////////////////////////<<<<<<<<<.............. │ 00:00:37 v #4002 > > │ ...>/;;;;;;;;;;;;;.......................................................... │ 00:00:37 v #4003 > > │ ........ │ 00:00:37 v #4004 > > │ .................////////////////////////////////////<<<<<<<<............... │ 00:00:37 v #4005 > > │ ...>///////;;;;;;;;/<<<<<<.................................................. │ 00:00:37 v #4006 > > │ ........ │ 00:00:37 v #4007 > > │ ................>///////////////////////////////////<<<<<<<<<............... │ 00:00:37 v #4008 > > │ .../////////////////<<<<<<.............;;;;;;;;............................. │ 00:00:37 v #4009 > > │ ........ │ 00:00:37 v #4010 > > │ ................>///////////////////////////////////<<<<<<<<................ │ 00:00:37 v #4011 > > │ ...////////////////<<<<<<.............>//;;;//<<<<.......................... │ 00:00:37 v #4012 > > │ ........ │ 00:00:37 v #4013 > > │ ................////////////////////////////////////<<<<<<<<................ │ 00:00:37 v #4014 > > │ ..>////////////////<<<<<<.............>///////<<<<.......................... │ 00:00:37 v #4015 > > │ ........ │ 00:00:37 v #4016 > > │ ................///////////////////////////////////<<<<<<<<<................ │ 00:00:37 v #4017 > > │ ..>///////////////<<<<<<..............////////<<<........................... │ 00:00:37 v #4018 > > │ ........ │ 00:00:37 v #4019 > > │ ................///////////////////////////////////<<<<<<<<................. │ 00:00:37 v #4020 > > │ ..////////////////<<<<<<..............///////<<<<........................... │ 00:00:37 v #4021 > > │ ........ │ 00:00:37 v #4022 > > │ ...............>///////////////////////////////////<<<<<<<<................. │ 00:00:37 v #4023 > > │ ..////////////////<<<<<<................/////<<<<........................... │ 00:00:37 v #4024 > > │ ........ │ 00:00:37 v #4025 > > │ ...............>//////////////////////////////////<<<<<<<<.................. │ 00:00:37 v #4026 > > │ .>///////////////<<<<<<..................................................... │ 00:00:37 v #4027 > > │ ........ │ 00:00:37 v #4028 > > │ ...............///////////////////////////////////<<<<<<<<.................. │ 00:00:37 v #4029 > > │ .....////////////<<<<<<..................................................... │ 00:00:37 v #4030 > > │ ........ │ 00:00:37 v #4031 > > │ ...............///////////////////////////////////<<<<<<<<.................. │ 00:00:37 v #4032 > > │ ............/////<<<........................................................ │ 00:00:37 v #4033 > > │ ........ │ 00:00:37 v #4034 > > │ ..............>//////////////////////////////////<<<<<<<<................... │ 00:00:37 v #4035 > > │ ............................................................................ │ 00:00:37 v #4036 > > │ ........ │ 00:00:37 v #4037 > > │ ..............>//////////////////////////////////<<<<<<<<................... │ 00:00:37 v #4038 > > │ ............................................................................ │ 00:00:37 v #4039 > > │ ........ │ 00:00:37 v #4040 > > │ ..................//////////////////////////////<<<<<<<<.................... │ 00:00:37 v #4041 > > │ ............................................................................ │ 00:00:37 v #4042 > > │ ........ │ 00:00:37 v #4043 > > │ ......................./////////////////////////<<<<<<...................... │ 00:00:37 v #4044 > > │ ............................................................................ │ 00:00:37 v #4045 > > │ ........ │ 00:00:37 v #4046 > > │ .............................///////////////////<<<<........................ │ 00:00:37 v #4047 > > │ ............................................................................ │ 00:00:37 v #4048 > > │ ........ │ 00:00:37 v #4049 > > │ ...................................////////////<<<<......................... │ 00:00:37 v #4050 > > │ ............................................................................ │ 00:00:37 v #4051 > > │ ........ │ 00:00:37 v #4052 > > │ .........................................//////<<........................... │ 00:00:37 v #4053 > > │ ............................................................................ │ 00:00:37 v #4054 > > │ ........ │ 00:00:37 v #4055 > > │ ............................................../............................. │ 00:00:37 v #4056 > > │ ............................................................................ │ 00:00:37 v #4057 > > │ ........ │ 00:00:37 v #4058 > > │ ............................................................................ │ 00:00:37 v #4059 > > │ ............................................................................ │ 00:00:37 v #4060 > > │ ........ │ 00:00:37 v #4061 > > │ ............................................................................ │ 00:00:37 v #4062 > > │ ............................................................................ │ 00:00:37 v #4063 > > │ ........ │ 00:00:37 v #4064 > > │ ............................................................................ │ 00:00:37 v #4065 > > │ ............................................................................ │ 00:00:37 v #4066 > > │ ........ │ 00:00:37 v #4067 > > │ ............................................................................ │ 00:00:37 v #4068 > > │ ............................................................................ │ 00:00:37 v #4069 > > │ ........ │ 00:00:37 v #4070 > > │ ............................................................................ │ 00:00:37 v #4071 > > │ ............................................................................ │ 00:00:37 v #4072 > > │ ........ │ 00:00:37 v #4073 > > │ ............................................................................ │ 00:00:37 v #4074 > > │ ............................................................................ │ 00:00:37 v #4075 > > │ ........ │ 00:00:37 v #4076 > > │ ............................................................................ │ 00:00:37 v #4077 > > │ ............................................................................ │ 00:00:37 v #4078 > > │ ........ │ 00:00:37 v #4079 > > │ ............................................................................ │ 00:00:37 v #4080 > > │ ............................................................................ │ 00:00:37 v #4081 > > │ ........ │ 00:00:37 v #4082 > > │ │ 00:00:37 v #4083 > > │ ............................................................................ │ 00:00:37 v #4084 > > │ ............................................................................ │ 00:00:37 v #4085 > > │ ........ │ 00:00:37 v #4086 > > │ ............................................................................ │ 00:00:37 v #4087 > > │ ............................................................................ │ 00:00:37 v #4088 > > │ ........ │ 00:00:37 v #4089 > > │ ............................................................................ │ 00:00:37 v #4090 > > │ ............................................................................ │ 00:00:37 v #4091 > > │ ........ │ 00:00:37 v #4092 > > │ ............................................................................ │ 00:00:37 v #4093 > > │ ............................................................................ │ 00:00:37 v #4094 > > │ ........ │ 00:00:37 v #4095 > > │ ............................................................................ │ 00:00:37 v #4096 > > │ ............................................................................ │ 00:00:37 v #4097 > > │ ........ │ 00:00:37 v #4098 > > │ ............................................................................ │ 00:00:37 v #4099 > > │ ............................................................................ │ 00:00:37 v #4100 > > │ ........ │ 00:00:37 v #4101 > > │ ............................................................................ │ 00:00:37 v #4102 > > │ ............................................................................ │ 00:00:37 v #4103 > > │ ........ │ 00:00:37 v #4104 > > │ ............................................................................ │ 00:00:37 v #4105 > > │ ............................................................................ │ 00:00:37 v #4106 > > │ ........ │ 00:00:37 v #4107 > > │ ............................................................................ │ 00:00:37 v #4108 > > │ ............................................................................ │ 00:00:37 v #4109 > > │ ........ │ 00:00:37 v #4110 > > │ ............................................................................ │ 00:00:37 v #4111 > > │ ............................................................................ │ 00:00:37 v #4112 > > │ ........ │ 00:00:37 v #4113 > > │ ............................................................................ │ 00:00:37 v #4114 > > │ ............................................................................ │ 00:00:37 v #4115 > > │ ........ │ 00:00:37 v #4116 > > │ ............................................................................ │ 00:00:37 v #4117 > > │ ............................................................................ │ 00:00:37 v #4118 > > │ ........ │ 00:00:37 v #4119 > > │ .................>;;;;;;;;;;;;/;;;;;;;;..................................... │ 00:00:37 v #4120 > > │ ............................................................................ │ 00:00:37 v #4121 > > │ ........ │ 00:00:37 v #4122 > > │ .................>////////////////////;;/;;/;;/;;;;;;;;<<................... │ 00:00:37 v #4123 > > │ ............................................................................ │ 00:00:37 v #4124 > > │ ........ │ 00:00:37 v #4125 > > │ .................>////////////////////////////////////<<<<<<................ │ 00:00:37 v #4126 > > │ ............................................................................ │ 00:00:37 v #4127 > > │ ........ │ 00:00:37 v #4128 > > │ ................./////////////////////////////////////<<<<<<<............... │ 00:00:37 v #4129 > > │ ............................................................................ │ 00:00:37 v #4130 > > │ ........ │ 00:00:37 v #4131 > > │ ................./////////////////////////////////////<<<<<<<............... │ 00:00:37 v #4132 > > │ ............................................................................ │ 00:00:37 v #4133 > > │ ........ │ 00:00:37 v #4134 > > │ ................./////////////////////////////////////<<<<<<................ │ 00:00:37 v #4135 > > │ ...;;;;;;/;;;;;;;........................................................... │ 00:00:37 v #4136 > > │ ........ │ 00:00:37 v #4137 > > │ .................////////////////////////////////////<<<<<<<................ │ 00:00:37 v #4138 > > │ ...>////////;;;///;;<<<<<................................................... │ 00:00:37 v #4139 > > │ ........ │ 00:00:37 v #4140 > > │ ................>////////////////////////////////////<<<<<<<................ │ 00:00:37 v #4141 > > │ .../////////////////<<<<<..............;;;;;;;;............................. │ 00:00:37 v #4142 > > │ ........ │ 00:00:37 v #4143 > > │ ................>////////////////////////////////////<<<<<<................. │ 00:00:37 v #4144 > > │ ...////////////////<<<<<<.............>//;;;;;<<<<.......................... │ 00:00:37 v #4145 > > │ ........ │ 00:00:37 v #4146 > > │ ................>////////////////////////////////////<<<<<<................. │ 00:00:37 v #4147 > > │ ...////////////////<<<<<..............>///////<<<<.......................... │ 00:00:37 v #4148 > > │ ........ │ 00:00:37 v #4149 > > │ ................>///////////////////////////////////<<<<<<<................. │ 00:00:37 v #4150 > > │ ..>////////////////<<<<<..............>///////<<<........................... │ 00:00:37 v #4151 > > │ ........ │ 00:00:37 v #4152 > > │ ................////////////////////////////////////<<<<<<<................. │ 00:00:37 v #4153 > > │ ..>////////////////<<<<<..............////////<<<........................... │ 00:00:37 v #4154 > > │ ........ │ 00:00:37 v #4155 > > │ ................////////////////////////////////////<<<<<<.................. │ 00:00:37 v #4156 > > │ ..>////////////////<<<<<...............///////<<=........................... │ 00:00:37 v #4157 > > │ ........ │ 00:00:37 v #4158 > > │ ................////////////////////////////////////<<<<<<.................. │ 00:00:37 v #4159 > > │ ..////////////////<<<<<..................................................... │ 00:00:37 v #4160 > > │ ........ │ 00:00:37 v #4161 > > │ ...............>///////////////////////////////////<<<<<<<.................. │ 00:00:37 v #4162 > > │ ...///////////////<<<<<..................................................... │ 00:00:37 v #4163 > > │ ........ │ 00:00:37 v #4164 > > │ ...............>///////////////////////////////////<<<<<<................... │ 00:00:37 v #4165 > > │ ............./////<<........................................................ │ 00:00:37 v #4166 > > │ ........ │ 00:00:37 v #4167 > > │ ...............>///////////////////////////////////<<<<<<................... │ 00:00:37 v #4168 > > │ ............................................................................ │ 00:00:37 v #4169 > > │ ........ │ 00:00:37 v #4170 > > │ ...............>///////////////////////////////////<<<<<<................... │ 00:00:37 v #4171 > > │ ............................................................................ │ 00:00:37 v #4172 > > │ ........ │ 00:00:37 v #4173 > > │ ...............///////////////////////////////////<<<<<<.................... │ 00:00:37 v #4174 > > │ ............................................................................ │ 00:00:37 v #4175 > > │ ........ │ 00:00:37 v #4176 > > │ ......................////////////////////////////<<<<<..................... │ 00:00:37 v #4177 > > │ ............................................................................ │ 00:00:37 v #4178 > > │ ........ │ 00:00:37 v #4179 > > │ ..............................////////////////////<<<....................... │ 00:00:37 v #4180 > > │ ............................................................................ │ 00:00:37 v #4181 > > │ ........ │ 00:00:37 v #4182 > > │ ...................................../////////////<<........................ │ 00:00:37 v #4183 > > │ ............................................................................ │ 00:00:37 v #4184 > > │ ........ │ 00:00:37 v #4185 > > │ .............................................////<<......................... │ 00:00:37 v #4186 > > │ ............................................................................ │ 00:00:37 v #4187 > > │ ........ │ 00:00:37 v #4188 > > │ ............................................................................ │ 00:00:37 v #4189 > > │ ............................................................................ │ 00:00:37 v #4190 > > │ ........ │ 00:00:37 v #4191 > > │ ............................................................................ │ 00:00:37 v #4192 > > │ ............................................................................ │ 00:00:37 v #4193 > > │ ........ │ 00:00:37 v #4194 > > │ ............................................................................ │ 00:00:37 v #4195 > > │ ............................................................................ │ 00:00:37 v #4196 > > │ ........ │ 00:00:37 v #4197 > > │ ............................................................................ │ 00:00:37 v #4198 > > │ ............................................................................ │ 00:00:37 v #4199 > > │ ........ │ 00:00:37 v #4200 > > │ ............................................................................ │ 00:00:37 v #4201 > > │ ............................................................................ │ 00:00:37 v #4202 > > │ ........ │ 00:00:37 v #4203 > > │ ............................................................................ │ 00:00:37 v #4204 > > │ ............................................................................ │ 00:00:37 v #4205 > > │ ........ │ 00:00:37 v #4206 > > │ ............................................................................ │ 00:00:37 v #4207 > > │ ............................................................................ │ 00:00:37 v #4208 > > │ ........ │ 00:00:37 v #4209 > > │ ............................................................................ │ 00:00:37 v #4210 > > │ ............................................................................ │ 00:00:37 v #4211 > > │ ........ │ 00:00:37 v #4212 > > │ ............................................................................ │ 00:00:37 v #4213 > > │ ............................................................................ │ 00:00:37 v #4214 > > │ ........ │ 00:00:37 v #4215 > > │ │ 00:00:37 v #4216 > > │ ............................................................................ │ 00:00:37 v #4217 > > │ ............................................................................ │ 00:00:37 v #4218 > > │ ........ │ 00:00:37 v #4219 > > │ ............................................................................ │ 00:00:37 v #4220 > > │ ............................................................................ │ 00:00:37 v #4221 > > │ ........ │ 00:00:37 v #4222 > > │ ............................................................................ │ 00:00:37 v #4223 > > │ ............................................................................ │ 00:00:37 v #4224 > > │ ........ │ 00:00:37 v #4225 > > │ ............................................................................ │ 00:00:37 v #4226 > > │ ............................................................................ │ 00:00:37 v #4227 > > │ ........ │ 00:00:37 v #4228 > > │ ............................................................................ │ 00:00:37 v #4229 > > │ ............................................................................ │ 00:00:37 v #4230 > > │ ........ │ 00:00:37 v #4231 > > │ ............................................................................ │ 00:00:37 v #4232 > > │ ............................................................................ │ 00:00:37 v #4233 > > │ ........ │ 00:00:37 v #4234 > > │ ............................................................................ │ 00:00:37 v #4235 > > │ ............................................................................ │ 00:00:37 v #4236 > > │ ........ │ 00:00:37 v #4237 > > │ ............................................................................ │ 00:00:37 v #4238 > > │ ............................................................................ │ 00:00:37 v #4239 > > │ ........ │ 00:00:37 v #4240 > > │ ............................................................................ │ 00:00:37 v #4241 > > │ ............................................................................ │ 00:00:37 v #4242 > > │ ........ │ 00:00:37 v #4243 > > │ ............................................................................ │ 00:00:37 v #4244 > > │ ............................................................................ │ 00:00:37 v #4245 > > │ ........ │ 00:00:37 v #4246 > > │ ............................................................................ │ 00:00:37 v #4247 > > │ ............................................................................ │ 00:00:37 v #4248 > > │ ........ │ 00:00:37 v #4249 > > │ ............................................................................ │ 00:00:37 v #4250 > > │ ............................................................................ │ 00:00:37 v #4251 > > │ ........ │ 00:00:37 v #4252 > > │ .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<.................... │ 00:00:37 v #4253 > > │ ............................................................................ │ 00:00:37 v #4254 > > │ ........ │ 00:00:37 v #4255 > > │ .................//////////////////////////////////////<<<.................. │ 00:00:37 v #4256 > > │ ............................................................................ │ 00:00:37 v #4257 > > │ ........ │ 00:00:37 v #4258 > > │ .................//////////////////////////////////////<<<<................. │ 00:00:37 v #4259 > > │ ............................................................................ │ 00:00:37 v #4260 > > │ ........ │ 00:00:37 v #4261 > > │ ................./////////////////////////////////////<<<<<................. │ 00:00:37 v #4262 > > │ ............................................................................ │ 00:00:37 v #4263 > > │ ........ │ 00:00:37 v #4264 > > │ ................./////////////////////////////////////<<<<<................. │ 00:00:37 v #4265 > > │ ............................................................................ │ 00:00:37 v #4266 > > │ ........ │ 00:00:37 v #4267 > > │ ................./////////////////////////////////////<<<<<................. │ 00:00:37 v #4268 > > │ ...;;/;;;;;;;;;;............................................................ │ 00:00:37 v #4269 > > │ ........ │ 00:00:37 v #4270 > > │ ................./////////////////////////////////////<<<<<................. │ 00:00:37 v #4271 > > │ .../////////////;;;;<<<<.................................................... │ 00:00:37 v #4272 > > │ ........ │ 00:00:37 v #4273 > > │ ................./////////////////////////////////////<<<<<................. │ 00:00:37 v #4274 > > │ .../////////////////<<<<...............;;;;;;;;............................. │ 00:00:37 v #4275 > > │ ........ │ 00:00:37 v #4276 > > │ ................>/////////////////////////////////////<<<<<................. │ 00:00:37 v #4277 > > │ .../////////////////<<<<..............>//;;;;;<<<<.......................... │ 00:00:37 v #4278 > > │ ........ │ 00:00:37 v #4279 > > │ ................>/////////////////////////////////////<<<<.................. │ 00:00:37 v #4280 > > │ .../////////////////<<<<..............>///////<<<........................... │ 00:00:37 v #4281 > > │ ........ │ 00:00:37 v #4282 > > │ ................>////////////////////////////////////<<<<<.................. │ 00:00:37 v #4283 > > │ ...////////////////<<<<<..............>///////<<<........................... │ 00:00:37 v #4284 > > │ ........ │ 00:00:37 v #4285 > > │ ................>////////////////////////////////////<<<<<.................. │ 00:00:37 v #4286 > > │ ...////////////////<<<<<..............>///////<<<........................... │ 00:00:37 v #4287 > > │ ........ │ 00:00:37 v #4288 > > │ ................>////////////////////////////////////<<<<<.................. │ 00:00:37 v #4289 > > │ ...////////////////<<<<<..............////////<<............................ │ 00:00:37 v #4290 > > │ ........ │ 00:00:37 v #4291 > > │ ................>////////////////////////////////////<<<<<.................. │ 00:00:37 v #4292 > > │ ..>////////////////<<<<..................................................... │ 00:00:37 v #4293 > > │ ........ │ 00:00:37 v #4294 > > │ ................>////////////////////////////////////<<<<<.................. │ 00:00:37 v #4295 > > │ ../////////////////<<<<..................................................... │ 00:00:37 v #4296 > > │ ........ │ 00:00:37 v #4297 > > │ ................>////////////////////////////////////<<<<................... │ 00:00:37 v #4298 > > │ ................///<........................................................ │ 00:00:37 v #4299 > > │ ........ │ 00:00:37 v #4300 > > │ ................>////////////////////////////////////<<<<................... │ 00:00:37 v #4301 > > │ ............................................................................ │ 00:00:37 v #4302 > > │ ........ │ 00:00:37 v #4303 > > │ ................////////////////////////////////////<<<<<................... │ 00:00:37 v #4304 > > │ ............................................................................ │ 00:00:37 v #4305 > > │ ........ │ 00:00:37 v #4306 > > │ ................////////////////////////////////////<<<<.................... │ 00:00:37 v #4307 > > │ ............................................................................ │ 00:00:37 v #4308 > > │ ........ │ 00:00:37 v #4309 > > │ .................///////////////////////////////////<<<..................... │ 00:00:37 v #4310 > > │ ............................................................................ │ 00:00:37 v #4311 > > │ ........ │ 00:00:37 v #4312 > > │ .............................///////////////////////<<...................... │ 00:00:37 v #4313 > > │ ............................................................................ │ 00:00:37 v #4314 > > │ ........ │ 00:00:37 v #4315 > > │ .........................................///////////<....................... │ 00:00:37 v #4316 > > │ ............................................................................ │ 00:00:37 v #4317 > > │ ........ │ 00:00:37 v #4318 > > │ ............................................................................ │ 00:00:37 v #4319 > > │ ............................................................................ │ 00:00:37 v #4320 > > │ ........ │ 00:00:37 v #4321 > > │ ............................................................................ │ 00:00:37 v #4322 > > │ ............................................................................ │ 00:00:37 v #4323 > > │ ........ │ 00:00:37 v #4324 > > │ ............................................................................ │ 00:00:37 v #4325 > > │ ............................................................................ │ 00:00:37 v #4326 > > │ ........ │ 00:00:37 v #4327 > > │ ............................................................................ │ 00:00:37 v #4328 > > │ ............................................................................ │ 00:00:37 v #4329 > > │ ........ │ 00:00:37 v #4330 > > │ ............................................................................ │ 00:00:37 v #4331 > > │ ............................................................................ │ 00:00:37 v #4332 > > │ ........ │ 00:00:37 v #4333 > > │ ............................................................................ │ 00:00:37 v #4334 > > │ ............................................................................ │ 00:00:37 v #4335 > > │ ........ │ 00:00:37 v #4336 > > │ ............................................................................ │ 00:00:37 v #4337 > > │ ............................................................................ │ 00:00:37 v #4338 > > │ ........ │ 00:00:37 v #4339 > > │ ............................................................................ │ 00:00:37 v #4340 > > │ ............................................................................ │ 00:00:37 v #4341 > > │ ........ │ 00:00:37 v #4342 > > │ ............................................................................ │ 00:00:37 v #4343 > > │ ............................................................................ │ 00:00:37 v #4344 > > │ ........ │ 00:00:37 v #4345 > > │ ............................................................................ │ 00:00:37 v #4346 > > │ ............................................................................ │ 00:00:37 v #4347 > > │ ........ │ 00:00:37 v #4348 > > │ │ 00:00:37 v #4349 > > │ ............................................................................ │ 00:00:37 v #4350 > > │ ............................................................................ │ 00:00:37 v #4351 > > │ ........ │ 00:00:37 v #4352 > > │ ............................................................................ │ 00:00:37 v #4353 > > │ ............................................................................ │ 00:00:37 v #4354 > > │ ........ │ 00:00:37 v #4355 > > │ ............................................................................ │ 00:00:37 v #4356 > > │ ............................................................................ │ 00:00:37 v #4357 > > │ ........ │ 00:00:37 v #4358 > > │ ............................................................................ │ 00:00:37 v #4359 > > │ ............................................................................ │ 00:00:37 v #4360 > > │ ........ │ 00:00:37 v #4361 > > │ ............................................................................ │ 00:00:37 v #4362 > > │ ............................................................................ │ 00:00:37 v #4363 > > │ ........ │ 00:00:37 v #4364 > > │ ............................................................................ │ 00:00:37 v #4365 > > │ ............................................................................ │ 00:00:37 v #4366 > > │ ........ │ 00:00:37 v #4367 > > │ ............................................................................ │ 00:00:37 v #4368 > > │ ............................................................................ │ 00:00:37 v #4369 > > │ ........ │ 00:00:37 v #4370 > > │ ............................................................................ │ 00:00:37 v #4371 > > │ ............................................................................ │ 00:00:37 v #4372 > > │ ........ │ 00:00:37 v #4373 > > │ ............................................................................ │ 00:00:37 v #4374 > > │ ............................................................................ │ 00:00:37 v #4375 > > │ ........ │ 00:00:37 v #4376 > > │ ............................................................................ │ 00:00:37 v #4377 > > │ ............................................................................ │ 00:00:37 v #4378 > > │ ........ │ 00:00:37 v #4379 > > │ ............................................................................ │ 00:00:37 v #4380 > > │ ............................................................................ │ 00:00:37 v #4381 > > │ ........ │ 00:00:37 v #4382 > > │ ............................................................................ │ 00:00:37 v #4383 > > │ ............................................................................ │ 00:00:37 v #4384 > > │ ........ │ 00:00:37 v #4385 > > │ .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<.................... │ 00:00:37 v #4386 > > │ ............................................................................ │ 00:00:37 v #4387 > > │ ........ │ 00:00:37 v #4388 > > │ ................;//////////////////////////////////////<<................... │ 00:00:37 v #4389 > > │ ............................................................................ │ 00:00:37 v #4390 > > │ ........ │ 00:00:37 v #4391 > > │ ................>//////////////////////////////////////<<<.................. │ 00:00:37 v #4392 > > │ ............................................................................ │ 00:00:37 v #4393 > > │ ........ │ 00:00:37 v #4394 > > │ ................>//////////////////////////////////////<<<.................. │ 00:00:37 v #4395 > > │ ............................................................................ │ 00:00:37 v #4396 > > │ ........ │ 00:00:37 v #4397 > > │ ................>//////////////////////////////////////<<<.................. │ 00:00:37 v #4398 > > │ ............................................................................ │ 00:00:37 v #4399 > > │ ........ │ 00:00:37 v #4400 > > │ ................>//////////////////////////////////////<<<.................. │ 00:00:37 v #4401 > > │ ...;;;;;;;;;;;;;;;;;<<<..................................................... │ 00:00:37 v #4402 > > │ ........ │ 00:00:37 v #4403 > > │ .................//////////////////////////////////////<<<.................. │ 00:00:37 v #4404 > > │ .../////////////////<<<<.................................................... │ 00:00:37 v #4405 > > │ ........ │ 00:00:37 v #4406 > > │ .................//////////////////////////////////////<<<.................. │ 00:00:37 v #4407 > > │ .../////////////////<<<<...............;;;;;;;;;<........................... │ 00:00:37 v #4408 > > │ ........ │ 00:00:37 v #4409 > > │ .................//////////////////////////////////////<<<.................. │ 00:00:37 v #4410 > > │ .../////////////////<<<<..............;;;;;;;;;<<........................... │ 00:00:37 v #4411 > > │ ........ │ 00:00:37 v #4412 > > │ .................//////////////////////////////////////<<<.................. │ 00:00:37 v #4413 > > │ .../////////////////<<<<..............>////////<<........................... │ 00:00:37 v #4414 > > │ ........ │ 00:00:37 v #4415 > > │ ................./////////////////////////////////////<<<<.................. │ 00:00:37 v #4416 > > │ .../////////////////<<<<..............>////////<<........................... │ 00:00:37 v #4417 > > │ ........ │ 00:00:37 v #4418 > > │ ................./////////////////////////////////////<<<<.................. │ 00:00:37 v #4419 > > │ .../////////////////<<<<..............>////////<<........................... │ 00:00:37 v #4420 > > │ ........ │ 00:00:37 v #4421 > > │ ................./////////////////////////////////////<<<<.................. │ 00:00:37 v #4422 > > │ .../////////////////<<<<..............////////<<............................ │ 00:00:37 v #4423 > > │ ........ │ 00:00:37 v #4424 > > │ ................./////////////////////////////////////<<<<.................. │ 00:00:37 v #4425 > > │ .../////////////////<<<<.................................................... │ 00:00:37 v #4426 > > │ ........ │ 00:00:37 v #4427 > > │ ................./////////////////////////////////////<<<<.................. │ 00:00:37 v #4428 > > │ ...>////////////////<<...................................................... │ 00:00:37 v #4429 > > │ ........ │ 00:00:37 v #4430 > > │ ................./////////////////////////////////////<<<................... │ 00:00:37 v #4431 > > │ ............................................................................ │ 00:00:37 v #4432 > > │ ........ │ 00:00:37 v #4433 > > │ ................./////////////////////////////////////<<<................... │ 00:00:37 v #4434 > > │ ............................................................................ │ 00:00:37 v #4435 > > │ ........ │ 00:00:37 v #4436 > > │ ................./////////////////////////////////////<<<................... │ 00:00:37 v #4437 > > │ ............................................................................ │ 00:00:37 v #4438 > > │ ........ │ 00:00:37 v #4439 > > │ ................./////////////////////////////////////<<<................... │ 00:00:37 v #4440 > > │ ............................................................................ │ 00:00:37 v #4441 > > │ ........ │ 00:00:37 v #4442 > > │ .................>////////////////////////////////////<<.................... │ 00:00:37 v #4443 > > │ ............................................................................ │ 00:00:37 v #4444 > > │ ........ │ 00:00:37 v #4445 > > │ ..........................////////////////////////////<<.................... │ 00:00:37 v #4446 > > │ ............................................................................ │ 00:00:37 v #4447 > > │ ........ │ 00:00:37 v #4448 > > │ ................................................//////<..................... │ 00:00:37 v #4449 > > │ ............................................................................ │ 00:00:37 v #4450 > > │ ........ │ 00:00:37 v #4451 > > │ ............................................................................ │ 00:00:37 v #4452 > > │ ............................................................................ │ 00:00:37 v #4453 > > │ ........ │ 00:00:37 v #4454 > > │ ............................................................................ │ 00:00:37 v #4455 > > │ ............................................................................ │ 00:00:37 v #4456 > > │ ........ │ 00:00:37 v #4457 > > │ ............................................................................ │ 00:00:37 v #4458 > > │ ............................................................................ │ 00:00:37 v #4459 > > │ ........ │ 00:00:37 v #4460 > > │ ............................................................................ │ 00:00:37 v #4461 > > │ ............................................................................ │ 00:00:37 v #4462 > > │ ........ │ 00:00:37 v #4463 > > │ ............................................................................ │ 00:00:37 v #4464 > > │ ............................................................................ │ 00:00:37 v #4465 > > │ ........ │ 00:00:37 v #4466 > > │ ............................................................................ │ 00:00:37 v #4467 > > │ ............................................................................ │ 00:00:37 v #4468 > > │ ........ │ 00:00:37 v #4469 > > │ ............................................................................ │ 00:00:37 v #4470 > > │ ............................................................................ │ 00:00:37 v #4471 > > │ ........ │ 00:00:37 v #4472 > > │ ............................................................................ │ 00:00:37 v #4473 > > │ ............................................................................ │ 00:00:37 v #4474 > > │ ........ │ 00:00:37 v #4475 > > │ ............................................................................ │ 00:00:37 v #4476 > > │ ............................................................................ │ 00:00:37 v #4477 > > │ ........ │ 00:00:37 v #4478 > > │ ............................................................................ │ 00:00:37 v #4479 > > │ ............................................................................ │ 00:00:37 v #4480 > > │ ........ │ 00:00:37 v #4481 > > │ │ 00:00:37 v #4482 > > │ ............................................................................ │ 00:00:37 v #4483 > > │ ............................................................................ │ 00:00:37 v #4484 > > │ ........ │ 00:00:37 v #4485 > > │ ............................................................................ │ 00:00:37 v #4486 > > │ ............................................................................ │ 00:00:37 v #4487 > > │ ........ │ 00:00:37 v #4488 > > │ ............................................................................ │ 00:00:37 v #4489 > > │ ............................................................................ │ 00:00:37 v #4490 > > │ ........ │ 00:00:37 v #4491 > > │ ............................................................................ │ 00:00:37 v #4492 > > │ ............................................................................ │ 00:00:37 v #4493 > > │ ........ │ 00:00:37 v #4494 > > │ ............................................................................ │ 00:00:37 v #4495 > > │ ............................................................................ │ 00:00:37 v #4496 > > │ ........ │ 00:00:37 v #4497 > > │ ............................................................................ │ 00:00:37 v #4498 > > │ ............................................................................ │ 00:00:37 v #4499 > > │ ........ │ 00:00:37 v #4500 > > │ ............................................................................ │ 00:00:37 v #4501 > > │ ............................................................................ │ 00:00:37 v #4502 > > │ ........ │ 00:00:37 v #4503 > > │ ............................................................................ │ 00:00:37 v #4504 > > │ ............................................................................ │ 00:00:37 v #4505 > > │ ........ │ 00:00:37 v #4506 > > │ ............................................................................ │ 00:00:37 v #4507 > > │ ............................................................................ │ 00:00:37 v #4508 > > │ ........ │ 00:00:37 v #4509 > > │ ............................................................................ │ 00:00:37 v #4510 > > │ ............................................................................ │ 00:00:37 v #4511 > > │ ........ │ 00:00:37 v #4512 > > │ ............................................................................ │ 00:00:37 v #4513 > > │ ............................................................................ │ 00:00:37 v #4514 > > │ ........ │ 00:00:37 v #4515 > > │ ..............................................;;;;;;;;;<.................... │ 00:00:37 v #4516 > > │ ............................................................................ │ 00:00:37 v #4517 > > │ ........ │ 00:00:37 v #4518 > > │ .........................;;;;;;;;;;;;;;;;;;;;;/////////<.................... │ 00:00:37 v #4519 > > │ ............................................................................ │ 00:00:37 v #4520 > > │ ........ │ 00:00:37 v #4521 > > │ ................;;;;;;;;;//////////////////////////////<.................... │ 00:00:37 v #4522 > > │ ............................................................................ │ 00:00:37 v #4523 > > │ ........ │ 00:00:37 v #4524 > > │ ................///////////////////////////////////////<.................... │ 00:00:37 v #4525 > > │ ............................................................................ │ 00:00:37 v #4526 > > │ ........ │ 00:00:37 v #4527 > > │ ................>//////////////////////////////////////<<................... │ 00:00:37 v #4528 > > │ ............................................................................ │ 00:00:37 v #4529 > > │ ........ │ 00:00:37 v #4530 > > │ ................>//////////////////////////////////////<<................... │ 00:00:37 v #4531 > > │ ............................................................................ │ 00:00:37 v #4532 > > │ ........ │ 00:00:37 v #4533 > > │ ................>//////////////////////////////////////<<................... │ 00:00:37 v #4534 > > │ ......;;;;;;;;;;;;;;<<<..................................................... │ 00:00:37 v #4535 > > │ ........ │ 00:00:37 v #4536 > > │ ................>//////////////////////////////////////<<................... │ 00:00:37 v #4537 > > │ ...;;;//////////////<<<..................................................... │ 00:00:37 v #4538 > > │ ........ │ 00:00:37 v #4539 > > │ .................//////////////////////////////////////<<................... │ 00:00:37 v #4540 > > │ .../////////////////<<<....................;;;;<<........................... │ 00:00:37 v #4541 > > │ ........ │ 00:00:37 v #4542 > > │ .................//////////////////////////////////////<<................... │ 00:00:37 v #4543 > > │ .../////////////////<<<...............;;;;;////<<........................... │ 00:00:37 v #4544 > > │ ........ │ 00:00:37 v #4545 > > │ .................//////////////////////////////////////<<................... │ 00:00:37 v #4546 > > │ ...>////////////////<<<...............>////////<<........................... │ 00:00:37 v #4547 > > │ ........ │ 00:00:37 v #4548 > > │ .................>//////////////////////////////////////<................... │ 00:00:37 v #4549 > > │ ...>////////////////<<<................////////<<........................... │ 00:00:37 v #4550 > > │ ........ │ 00:00:37 v #4551 > > │ .................>//////////////////////////////////////<................... │ 00:00:37 v #4552 > > │ ...>/////////////////<<<...............////////<<........................... │ 00:00:37 v #4553 > > │ ........ │ 00:00:37 v #4554 > > │ .................>//////////////////////////////////////<................... │ 00:00:37 v #4555 > > │ ...>/////////////////<<<.............../////////............................ │ 00:00:37 v #4556 > > │ ........ │ 00:00:37 v #4557 > > │ .................>//////////////////////////////////////<................... │ 00:00:37 v #4558 > > │ ..../////////////////<<<.................................................... │ 00:00:37 v #4559 > > │ ........ │ 00:00:37 v #4560 > > │ ..................//////////////////////////////////////<................... │ 00:00:37 v #4561 > > │ ..../////////////////<<..................................................... │ 00:00:37 v #4562 > > │ ........ │ 00:00:37 v #4563 > > │ ..................//////////////////////////////////////<<.................. │ 00:00:37 v #4564 > > │ ............................................................................ │ 00:00:37 v #4565 > > │ ........ │ 00:00:37 v #4566 > > │ ..................//////////////////////////////////////<<.................. │ 00:00:37 v #4567 > > │ ............................................................................ │ 00:00:37 v #4568 > > │ ........ │ 00:00:37 v #4569 > > │ ..................//////////////////////////////////////<<.................. │ 00:00:37 v #4570 > > │ ............................................................................ │ 00:00:37 v #4571 > > │ ........ │ 00:00:37 v #4572 > > │ ..................>/////////////////////////////////////<<.................. │ 00:00:37 v #4573 > > │ ............................................................................ │ 00:00:37 v #4574 > > │ ........ │ 00:00:37 v #4575 > > │ ..................>/////////////////////////////////////<................... │ 00:00:37 v #4576 > > │ ............................................................................ │ 00:00:37 v #4577 > > │ ........ │ 00:00:37 v #4578 > > │ ..................//////////////////////////////////////<................... │ 00:00:37 v #4579 > > │ ............................................................................ │ 00:00:37 v #4580 > > │ ........ │ 00:00:37 v #4581 > > │ ............................................................................ │ 00:00:37 v #4582 > > │ ............................................................................ │ 00:00:37 v #4583 > > │ ........ │ 00:00:37 v #4584 > > │ ............................................................................ │ 00:00:37 v #4585 > > │ ............................................................................ │ 00:00:37 v #4586 > > │ ........ │ 00:00:37 v #4587 > > │ ............................................................................ │ 00:00:37 v #4588 > > │ ............................................................................ │ 00:00:37 v #4589 > > │ ........ │ 00:00:37 v #4590 > > │ ............................................................................ │ 00:00:37 v #4591 > > │ ............................................................................ │ 00:00:37 v #4592 > > │ ........ │ 00:00:37 v #4593 > > │ ............................................................................ │ 00:00:37 v #4594 > > │ ............................................................................ │ 00:00:37 v #4595 > > │ ........ │ 00:00:37 v #4596 > > │ ............................................................................ │ 00:00:37 v #4597 > > │ ............................................................................ │ 00:00:37 v #4598 > > │ ........ │ 00:00:37 v #4599 > > │ ............................................................................ │ 00:00:37 v #4600 > > │ ............................................................................ │ 00:00:37 v #4601 > > │ ........ │ 00:00:37 v #4602 > > │ ............................................................................ │ 00:00:37 v #4603 > > │ ............................................................................ │ 00:00:37 v #4604 > > │ ........ │ 00:00:37 v #4605 > > │ ............................................................................ │ 00:00:37 v #4606 > > │ ............................................................................ │ 00:00:37 v #4607 > > │ ........ │ 00:00:37 v #4608 > > │ ............................................................................ │ 00:00:37 v #4609 > > │ ............................................................................ │ 00:00:37 v #4610 > > │ ........ │ 00:00:37 v #4611 > > │ ............................................................................ │ 00:00:37 v #4612 > > │ ............................................................................ │ 00:00:37 v #4613 > > │ ........ │ 00:00:37 v #4614 > > │ │ 00:00:37 v #4615 > > │ ............................................................................ │ 00:00:37 v #4616 > > │ ............................................................................ │ 00:00:37 v #4617 > > │ ........ │ 00:00:37 v #4618 > > │ ............................................................................ │ 00:00:37 v #4619 > > │ ............................................................................ │ 00:00:37 v #4620 > > │ ........ │ 00:00:37 v #4621 > > │ ............................................................................ │ 00:00:37 v #4622 > > │ ............................................................................ │ 00:00:37 v #4623 > > │ ........ │ 00:00:37 v #4624 > > │ ............................................................................ │ 00:00:37 v #4625 > > │ ............................................................................ │ 00:00:37 v #4626 > > │ ........ │ 00:00:37 v #4627 > > │ ............................................................................ │ 00:00:37 v #4628 > > │ ............................................................................ │ 00:00:37 v #4629 > > │ ........ │ 00:00:37 v #4630 > > │ ............................................................................ │ 00:00:37 v #4631 > > │ ............................................................................ │ 00:00:37 v #4632 > > │ ........ │ 00:00:37 v #4633 > > │ ............................................................................ │ 00:00:37 v #4634 > > │ ............................................................................ │ 00:00:37 v #4635 > > │ ........ │ 00:00:37 v #4636 > > │ ............................................................................ │ 00:00:37 v #4637 > > │ ............................................................................ │ 00:00:37 v #4638 > > │ ........ │ 00:00:37 v #4639 > > │ ............................................................................ │ 00:00:37 v #4640 > > │ ............................................................................ │ 00:00:37 v #4641 > > │ ........ │ 00:00:37 v #4642 > > │ ............................................................................ │ 00:00:37 v #4643 > > │ ............................................................................ │ 00:00:37 v #4644 > > │ ........ │ 00:00:37 v #4645 > > │ ......................................................<..................... │ 00:00:37 v #4646 > > │ ............................................................................ │ 00:00:37 v #4647 > > │ ........ │ 00:00:37 v #4648 > > │ .........................................;;;;;;;;;;;;;<..................... │ 00:00:37 v #4649 > > │ ............................................................................ │ 00:00:37 v #4650 > > │ ........ │ 00:00:37 v #4651 > > │ ...........................;;;;;;;;;;;;;;//////////////<.................... │ 00:00:37 v #4652 > > │ ............................................................................ │ 00:00:37 v #4653 > > │ ........ │ 00:00:37 v #4654 > > │ ...............;;;;;;;;;;;;;///////////////////////////<.................... │ 00:00:37 v #4655 > > │ ............................................................................ │ 00:00:37 v #4656 > > │ ........ │ 00:00:37 v #4657 > > │ ...............>///////////////////////////////////////<.................... │ 00:00:37 v #4658 > > │ ............................................................................ │ 00:00:37 v #4659 > > │ ........ │ 00:00:37 v #4660 > > │ ................///////////////////////////////////////<.................... │ 00:00:37 v #4661 > > │ ............................................................................ │ 00:00:37 v #4662 > > │ ........ │ 00:00:37 v #4663 > > │ ................///////////////////////////////////////<<................... │ 00:00:37 v #4664 > > │ ............................................................................ │ 00:00:37 v #4665 > > │ ........ │ 00:00:37 v #4666 > > │ ................>///////////////////////////////////////<................... │ 00:00:37 v #4667 > > │ ........;;;;;;;;;;;;<<...................................................... │ 00:00:37 v #4668 > > │ ........ │ 00:00:37 v #4669 > > │ ................>///////////////////////////////////////<................... │ 00:00:37 v #4670 > > │ ...;;;;;////////////<<...................................................... │ 00:00:37 v #4671 > > │ ........ │ 00:00:37 v #4672 > > │ .................///////////////////////////////////////<................... │ 00:00:37 v #4673 > > │ .../////////////////<<<....................;;;<<............................ │ 00:00:37 v #4674 > > │ ........ │ 00:00:37 v #4675 > > │ .................///////////////////////////////////////<................... │ 00:00:37 v #4676 > > │ ...//////////////////<<...............;;;;;////<<........................... │ 00:00:37 v #4677 > > │ ........ │ 00:00:37 v #4678 > > │ .................>//////////////////////////////////////<<.................. │ 00:00:37 v #4679 > > │ ...>/////////////////<<...............>////////<<........................... │ 00:00:37 v #4680 > > │ ........ │ 00:00:37 v #4681 > > │ .................>///////////////////////////////////////<.................. │ 00:00:37 v #4682 > > │ ...>/////////////////<<................////////<<........................... │ 00:00:37 v #4683 > > │ ........ │ 00:00:37 v #4684 > > │ ..................///////////////////////////////////////<.................. │ 00:00:37 v #4685 > > │ ..../////////////////<<................////////<<........................... │ 00:00:37 v #4686 > > │ ........ │ 00:00:37 v #4687 > > │ ..................///////////////////////////////////////<.................. │ 00:00:37 v #4688 > > │ ..../////////////////<<<...............>////////............................ │ 00:00:37 v #4689 > > │ ........ │ 00:00:37 v #4690 > > │ ..................>//////////////////////////////////////<.................. │ 00:00:37 v #4691 > > │ ....>/////////////////<<.................................................... │ 00:00:37 v #4692 > > │ ........ │ 00:00:37 v #4693 > > │ ..................>///////////////////////////////////////<................. │ 00:00:37 v #4694 > > │ ....>/////////////////<..................................................... │ 00:00:37 v #4695 > > │ ........ │ 00:00:37 v #4696 > > │ ...................///////////////////////////////////////<................. │ 00:00:37 v #4697 > > │ ............................................................................ │ 00:00:37 v #4698 > > │ ........ │ 00:00:37 v #4699 > > │ ...................///////////////////////////////////////<................. │ 00:00:37 v #4700 > > │ ............................................................................ │ 00:00:37 v #4701 > > │ ........ │ 00:00:37 v #4702 > > │ ...................>//////////////////////////////////////<................. │ 00:00:37 v #4703 > > │ ............................................................................ │ 00:00:37 v #4704 > > │ ........ │ 00:00:37 v #4705 > > │ ...................>//////////////////////////////////////<................. │ 00:00:37 v #4706 > > │ ............................................................................ │ 00:00:37 v #4707 > > │ ........ │ 00:00:37 v #4708 > > │ ...................>///////////////////////////////////////<................ │ 00:00:37 v #4709 > > │ ............................................................................ │ 00:00:37 v #4710 > > │ ........ │ 00:00:37 v #4711 > > │ ....................////////////////////////////............................ │ 00:00:37 v #4712 > > │ ............................................................................ │ 00:00:37 v #4713 > > │ ........ │ 00:00:37 v #4714 > > │ ............................................................................ │ 00:00:37 v #4715 > > │ ............................................................................ │ 00:00:37 v #4716 > > │ ........ │ 00:00:37 v #4717 > > │ ............................................................................ │ 00:00:37 v #4718 > > │ ............................................................................ │ 00:00:37 v #4719 > > │ ........ │ 00:00:37 v #4720 > > │ ............................................................................ │ 00:00:37 v #4721 > > │ ............................................................................ │ 00:00:37 v #4722 > > │ ........ │ 00:00:37 v #4723 > > │ ............................................................................ │ 00:00:37 v #4724 > > │ ............................................................................ │ 00:00:37 v #4725 > > │ ........ │ 00:00:37 v #4726 > > │ ............................................................................ │ 00:00:37 v #4727 > > │ ............................................................................ │ 00:00:37 v #4728 > > │ ........ │ 00:00:37 v #4729 > > │ ............................................................................ │ 00:00:37 v #4730 > > │ ............................................................................ │ 00:00:37 v #4731 > > │ ........ │ 00:00:37 v #4732 > > │ ............................................................................ │ 00:00:37 v #4733 > > │ ............................................................................ │ 00:00:37 v #4734 > > │ ........ │ 00:00:37 v #4735 > > │ ............................................................................ │ 00:00:37 v #4736 > > │ ............................................................................ │ 00:00:37 v #4737 > > │ ........ │ 00:00:37 v #4738 > > │ ............................................................................ │ 00:00:37 v #4739 > > │ ............................................................................ │ 00:00:37 v #4740 > > │ ........ │ 00:00:37 v #4741 > > │ ............................................................................ │ 00:00:37 v #4742 > > │ ............................................................................ │ 00:00:37 v #4743 > > │ ........ │ 00:00:37 v #4744 > > │ ............................................................................ │ 00:00:37 v #4745 > > │ ............................................................................ │ 00:00:37 v #4746 > > │ ........ │ 00:00:37 v #4747 > > │ │ 00:00:37 v #4748 > > │ ............................................................................ │ 00:00:37 v #4749 > > │ ............................................................................ │ 00:00:37 v #4750 > > │ ........ │ 00:00:37 v #4751 > > │ ............................................................................ │ 00:00:37 v #4752 > > │ ............................................................................ │ 00:00:37 v #4753 > > │ ........ │ 00:00:37 v #4754 > > │ ............................................................................ │ 00:00:37 v #4755 > > │ ............................................................................ │ 00:00:37 v #4756 > > │ ........ │ 00:00:37 v #4757 > > │ ............................................................................ │ 00:00:37 v #4758 > > │ ............................................................................ │ 00:00:37 v #4759 > > │ ........ │ 00:00:37 v #4760 > > │ ............................................................................ │ 00:00:37 v #4761 > > │ ............................................................................ │ 00:00:37 v #4762 > > │ ........ │ 00:00:37 v #4763 > > │ ............................................................................ │ 00:00:37 v #4764 > > │ ............................................................................ │ 00:00:37 v #4765 > > │ ........ │ 00:00:37 v #4766 > > │ ............................................................................ │ 00:00:37 v #4767 > > │ ............................................................................ │ 00:00:37 v #4768 > > │ ........ │ 00:00:37 v #4769 > > │ ............................................................................ │ 00:00:37 v #4770 > > │ ............................................................................ │ 00:00:37 v #4771 > > │ ........ │ 00:00:37 v #4772 > > │ ............................................................................ │ 00:00:37 v #4773 > > │ ............................................................................ │ 00:00:37 v #4774 > > │ ........ │ 00:00:37 v #4775 > > │ ............................................................................ │ 00:00:37 v #4776 > > │ ............................................................................ │ 00:00:37 v #4777 > > │ ........ │ 00:00:37 v #4778 > > │ .................................................;;;;;<..................... │ 00:00:37 v #4779 > > │ ............................................................................ │ 00:00:37 v #4780 > > │ ........ │ 00:00:37 v #4781 > > │ .......................................;;;;;;;;;;/////<..................... │ 00:00:37 v #4782 > > │ ............................................................................ │ 00:00:37 v #4783 > > │ ........ │ 00:00:37 v #4784 > > │ .............................;;;;;;;;;;///////////////<<.................... │ 00:00:37 v #4785 > > │ ............................................................................ │ 00:00:37 v #4786 > > │ ........ │ 00:00:37 v #4787 > > │ ...................;;;;;;;;;;//////////////////////////<.................... │ 00:00:37 v #4788 > > │ ............................................................................ │ 00:00:37 v #4789 > > │ ........ │ 00:00:37 v #4790 > > │ ...............;;;;////////////////////////////////////<.................... │ 00:00:37 v #4791 > > │ ............................................................................ │ 00:00:37 v #4792 > > │ ........ │ 00:00:37 v #4793 > > │ ...............>///////////////////////////////////////<<................... │ 00:00:37 v #4794 > > │ ............................................................................ │ 00:00:37 v #4795 > > │ ........ │ 00:00:37 v #4796 > > │ ...............>////////////////////////////////////////<................... │ 00:00:37 v #4797 > > │ ....................<....................................................... │ 00:00:37 v #4798 > > │ ........ │ 00:00:37 v #4799 > > │ ................////////////////////////////////////////<................... │ 00:00:37 v #4800 > > │ .........;;;;;;;;;;;<....................................................... │ 00:00:37 v #4801 > > │ ........ │ 00:00:37 v #4802 > > │ ................>///////////////////////////////////////<<.................. │ 00:00:37 v #4803 > > │ ..;;;;;;;///////////<<...................................................... │ 00:00:37 v #4804 > > │ ........ │ 00:00:37 v #4805 > > │ .................////////////////////////////////////////<.................. │ 00:00:37 v #4806 > > │ .../////////////////<<.....................;;;<<............................ │ 00:00:37 v #4807 > > │ ........ │ 00:00:37 v #4808 > > │ .................>///////////////////////////////////////<.................. │ 00:00:37 v #4809 > > │ ...//////////////////<................;;;;;////<............................ │ 00:00:37 v #4810 > > │ ........ │ 00:00:37 v #4811 > > │ .................>///////////////////////////////////////<<................. │ 00:00:37 v #4812 > > │ ...>/////////////////<<...............>////////<<........................... │ 00:00:37 v #4813 > > │ ........ │ 00:00:37 v #4814 > > │ ..................////////////////////////////////////////<................. │ 00:00:37 v #4815 > > │ ..../////////////////<<................////////<<........................... │ 00:00:37 v #4816 > > │ ........ │ 00:00:37 v #4817 > > │ ..................>///////////////////////////////////////<................. │ 00:00:37 v #4818 > > │ ....//////////////////<................>////////<........................... │ 00:00:37 v #4819 > > │ ........ │ 00:00:37 v #4820 > > │ ..................>///////////////////////////////////////<<................ │ 00:00:37 v #4821 > > │ ....>/////////////////<<................//////.............................. │ 00:00:37 v #4822 > > │ ........ │ 00:00:37 v #4823 > > │ ...................////////////////////////////////////////<................ │ 00:00:37 v #4824 > > │ .....//////////////////<.................................................... │ 00:00:37 v #4825 > > │ ........ │ 00:00:37 v #4826 > > │ ...................>///////////////////////////////////////<................ │ 00:00:37 v #4827 > > │ .....>///////////////....................................................... │ 00:00:37 v #4828 > > │ ........ │ 00:00:37 v #4829 > > │ ...................>///////////////////////////////////////<<............... │ 00:00:37 v #4830 > > │ .....///.................................................................... │ 00:00:37 v #4831 > > │ ........ │ 00:00:37 v #4832 > > │ ....................////////////////////////////////////////<............... │ 00:00:37 v #4833 > > │ ............................................................................ │ 00:00:37 v #4834 > > │ ........ │ 00:00:37 v #4835 > > │ ....................>///////////////////////////////////////<............... │ 00:00:37 v #4836 > > │ ............................................................................ │ 00:00:37 v #4837 > > │ ........ │ 00:00:37 v #4838 > > │ ....................>///////////////////////////////////////<<.............. │ 00:00:37 v #4839 > > │ ............................................................................ │ 00:00:37 v #4840 > > │ ........ │ 00:00:37 v #4841 > > │ ...................../////////////////////////////////////.................. │ 00:00:37 v #4842 > > │ ............................................................................ │ 00:00:37 v #4843 > > │ ........ │ 00:00:37 v #4844 > > │ .....................>/////////////////////................................. │ 00:00:37 v #4845 > > │ ............................................................................ │ 00:00:37 v #4846 > > │ ........ │ 00:00:37 v #4847 > > │ ......................///////............................................... │ 00:00:37 v #4848 > > │ ............................................................................ │ 00:00:37 v #4849 > > │ ........ │ 00:00:37 v #4850 > > │ ............................................................................ │ 00:00:37 v #4851 > > │ ............................................................................ │ 00:00:37 v #4852 > > │ ........ │ 00:00:37 v #4853 > > │ ............................................................................ │ 00:00:37 v #4854 > > │ ............................................................................ │ 00:00:37 v #4855 > > │ ........ │ 00:00:37 v #4856 > > │ ............................................................................ │ 00:00:37 v #4857 > > │ ............................................................................ │ 00:00:37 v #4858 > > │ ........ │ 00:00:37 v #4859 > > │ ............................................................................ │ 00:00:37 v #4860 > > │ ............................................................................ │ 00:00:37 v #4861 > > │ ........ │ 00:00:37 v #4862 > > │ ............................................................................ │ 00:00:37 v #4863 > > │ ............................................................................ │ 00:00:37 v #4864 > > │ ........ │ 00:00:37 v #4865 > > │ ............................................................................ │ 00:00:37 v #4866 > > │ ............................................................................ │ 00:00:37 v #4867 > > │ ........ │ 00:00:37 v #4868 > > │ ............................................................................ │ 00:00:37 v #4869 > > │ ............................................................................ │ 00:00:37 v #4870 > > │ ........ │ 00:00:37 v #4871 > > │ ............................................................................ │ 00:00:37 v #4872 > > │ ............................................................................ │ 00:00:37 v #4873 > > │ ........ │ 00:00:37 v #4874 > > │ ............................................................................ │ 00:00:37 v #4875 > > │ ............................................................................ │ 00:00:37 v #4876 > > │ ........ │ 00:00:37 v #4877 > > │ ............................................................................ │ 00:00:37 v #4878 > > │ ............................................................................ │ 00:00:37 v #4879 > > │ ........ │ 00:00:37 v #4880 > > │ │ 00:00:37 v #4881 > > │ ............................................................................ │ 00:00:37 v #4882 > > │ ............................................................................ │ 00:00:37 v #4883 > > │ ........ │ 00:00:37 v #4884 > > │ ............................................................................ │ 00:00:37 v #4885 > > │ ............................................................................ │ 00:00:37 v #4886 > > │ ........ │ 00:00:37 v #4887 > > │ ............................................................................ │ 00:00:37 v #4888 > > │ ............................................................................ │ 00:00:37 v #4889 > > │ ........ │ 00:00:37 v #4890 > > │ ............................................................................ │ 00:00:37 v #4891 > > │ ............................................................................ │ 00:00:37 v #4892 > > │ ........ │ 00:00:37 v #4893 > > │ ............................................................................ │ 00:00:37 v #4894 > > │ ............................................................................ │ 00:00:37 v #4895 > > │ ........ │ 00:00:37 v #4896 > > │ ............................................................................ │ 00:00:37 v #4897 > > │ ............................................................................ │ 00:00:37 v #4898 > > │ ........ │ 00:00:37 v #4899 > > │ ............................................................................ │ 00:00:37 v #4900 > > │ ............................................................................ │ 00:00:37 v #4901 > > │ ........ │ 00:00:37 v #4902 > > │ ............................................................................ │ 00:00:37 v #4903 > > │ ............................................................................ │ 00:00:37 v #4904 > > │ ........ │ 00:00:37 v #4905 > > │ ............................................................................ │ 00:00:37 v #4906 > > │ ............................................................................ │ 00:00:37 v #4907 > > │ ........ │ 00:00:37 v #4908 > > │ .....................................................<...................... │ 00:00:37 v #4909 > > │ ............................................................................ │ 00:00:37 v #4910 > > │ ........ │ 00:00:37 v #4911 > > │ ..............................................;;;;;;;<<..................... │ 00:00:37 v #4912 > > │ ............................................................................ │ 00:00:37 v #4913 > > │ ........ │ 00:00:37 v #4914 > > │ .....................................;;;;;;;;;////////<..................... │ 00:00:37 v #4915 > > │ ............................................................................ │ 00:00:37 v #4916 > > │ ........ │ 00:00:37 v #4917 > > │ .............................;;;;;;;;;////////////////<<.................... │ 00:00:37 v #4918 > > │ ............................................................................ │ 00:00:37 v #4919 > > │ ........ │ 00:00:37 v #4920 > > │ ......................;;;;;;;//////////////////////////<.................... │ 00:00:37 v #4921 > > │ ............................................................................ │ 00:00:37 v #4922 > > │ ........ │ 00:00:37 v #4923 > > │ ...............;;;;;;;/////////////////////////////////<.................... │ 00:00:37 v #4924 > > │ ............................................................................ │ 00:00:37 v #4925 > > │ ........ │ 00:00:37 v #4926 > > │ .............../////////////////////////////////////////<................... │ 00:00:37 v #4927 > > │ ............................................................................ │ 00:00:37 v #4928 > > │ ........ │ 00:00:37 v #4929 > > │ ...............>////////////////////////////////////////<................... │ 00:00:37 v #4930 > > │ .................;;;<....................................................... │ 00:00:37 v #4931 > > │ ........ │ 00:00:37 v #4932 > > │ ................/////////////////////////////////////////<.................. │ 00:00:37 v #4933 > > │ .........;;;;;;;;///<....................................................... │ 00:00:37 v #4934 > > │ ........ │ 00:00:37 v #4935 > > │ ................>////////////////////////////////////////<.................. │ 00:00:37 v #4936 > > │ ..;;;;;;;///////////<<...................................................... │ 00:00:37 v #4937 > > │ ........ │ 00:00:37 v #4938 > > │ ................./////////////////////////////////////////<................. │ 00:00:37 v #4939 > > │ ..>//////////////////<.....................;;;<<............................ │ 00:00:37 v #4940 > > │ ........ │ 00:00:37 v #4941 > > │ .................>////////////////////////////////////////<................. │ 00:00:37 v #4942 > > │ ...//////////////////<<...............;;;;;////<............................ │ 00:00:37 v #4943 > > │ ........ │ 00:00:37 v #4944 > > │ ................../////////////////////////////////////////<................ │ 00:00:37 v #4945 > > │ ...>//////////////////<...............>////////<<........................... │ 00:00:37 v #4946 > > │ ........ │ 00:00:37 v #4947 > > │ ..................>////////////////////////////////////////<................ │ 00:00:37 v #4948 > > │ ....//////////////////<................/////////<........................... │ 00:00:37 v #4949 > > │ ........ │ 00:00:37 v #4950 > > │ ..................>////////////////////////////////////////<<............... │ 00:00:37 v #4951 > > │ ....>//////////////////<...............>////////<........................... │ 00:00:37 v #4952 > > │ ........ │ 00:00:37 v #4953 > > │ ...................>////////////////////////////////////////<............... │ 00:00:37 v #4954 > > │ .....//////////////////<................/////=.............................. │ 00:00:37 v #4955 > > │ ........ │ 00:00:37 v #4956 > > │ ...................>////////////////////////////////////////<<.............. │ 00:00:37 v #4957 > > │ .....>/////////////////<<................................................... │ 00:00:37 v #4958 > > │ ........ │ 00:00:37 v #4959 > > │ ....................>////////////////////////////////////////<.............. │ 00:00:37 v #4960 > > │ ....../////////////......................................................... │ 00:00:37 v #4961 > > │ ........ │ 00:00:37 v #4962 > > │ ....................>////////////////////////////////////////<<............. │ 00:00:37 v #4963 > > │ ......>///.................................................................. │ 00:00:37 v #4964 > > │ ........ │ 00:00:37 v #4965 > > │ ...................../////////////////////////////////////////<............. │ 00:00:37 v #4966 > > │ ............................................................................ │ 00:00:37 v #4967 > > │ ........ │ 00:00:37 v #4968 > > │ .....................>////////////////////////////////////////<............. │ 00:00:37 v #4969 > > │ ............................................................................ │ 00:00:37 v #4970 > > │ ........ │ 00:00:37 v #4971 > > │ ......................///////////////////////////////////////............... │ 00:00:37 v #4972 > > │ ............................................................................ │ 00:00:37 v #4973 > > │ ........ │ 00:00:37 v #4974 > > │ ......................>/////////////////////////////........................ │ 00:00:37 v #4975 > > │ ............................................................................ │ 00:00:37 v #4976 > > │ ........ │ 00:00:37 v #4977 > > │ .......................////////////////////................................. │ 00:00:37 v #4978 > > │ ............................................................................ │ 00:00:37 v #4979 > > │ ........ │ 00:00:37 v #4980 > > │ .......................>//////////.......................................... │ 00:00:37 v #4981 > > │ ............................................................................ │ 00:00:37 v #4982 > > │ ........ │ 00:00:37 v #4983 > > │ ............................................................................ │ 00:00:37 v #4984 > > │ ............................................................................ │ 00:00:37 v #4985 > > │ ........ │ 00:00:37 v #4986 > > │ ............................................................................ │ 00:00:37 v #4987 > > │ ............................................................................ │ 00:00:37 v #4988 > > │ ........ │ 00:00:37 v #4989 > > │ ............................................................................ │ 00:00:37 v #4990 > > │ ............................................................................ │ 00:00:37 v #4991 > > │ ........ │ 00:00:37 v #4992 > > │ ............................................................................ │ 00:00:37 v #4993 > > │ ............................................................................ │ 00:00:37 v #4994 > > │ ........ │ 00:00:37 v #4995 > > │ ............................................................................ │ 00:00:37 v #4996 > > │ ............................................................................ │ 00:00:37 v #4997 > > │ ........ │ 00:00:37 v #4998 > > │ ............................................................................ │ 00:00:37 v #4999 > > │ ............................................................................ │ 00:00:37 v #5000 > > │ ........ │ 00:00:37 v #5001 > > │ ............................................................................ │ 00:00:37 v #5002 > > │ ............................................................................ │ 00:00:37 v #5003 > > │ ........ │ 00:00:37 v #5004 > > │ ............................................................................ │ 00:00:37 v #5005 > > │ ............................................................................ │ 00:00:37 v #5006 > > │ ........ │ 00:00:37 v #5007 > > │ ............................................................................ │ 00:00:37 v #5008 > > │ ............................................................................ │ 00:00:37 v #5009 > > │ ........ │ 00:00:37 v #5010 > > │ ............................................................................ │ 00:00:37 v #5011 > > │ ............................................................................ │ 00:00:37 v #5012 > > │ ........ │ 00:00:37 v #5013 > > │ │ 00:00:37 v #5014 > > │ ............................................................................ │ 00:00:37 v #5015 > > │ ............................................................................ │ 00:00:37 v #5016 > > │ ........ │ 00:00:37 v #5017 > > │ ............................................................................ │ 00:00:37 v #5018 > > │ ............................................................................ │ 00:00:37 v #5019 > > │ ........ │ 00:00:37 v #5020 > > │ ............................................................................ │ 00:00:37 v #5021 > > │ ............................................................................ │ 00:00:37 v #5022 > > │ ........ │ 00:00:37 v #5023 > > │ ............................................................................ │ 00:00:37 v #5024 > > │ ............................................................................ │ 00:00:37 v #5025 > > │ ........ │ 00:00:37 v #5026 > > │ ............................................................................ │ 00:00:37 v #5027 > > │ ............................................................................ │ 00:00:37 v #5028 > > │ ........ │ 00:00:37 v #5029 > > │ ............................................................................ │ 00:00:37 v #5030 > > │ ............................................................................ │ 00:00:37 v #5031 > > │ ........ │ 00:00:37 v #5032 > > │ ............................................................................ │ 00:00:37 v #5033 > > │ ............................................................................ │ 00:00:37 v #5034 > > │ ........ │ 00:00:37 v #5035 > > │ ............................................................................ │ 00:00:37 v #5036 > > │ ............................................................................ │ 00:00:37 v #5037 > > │ ........ │ 00:00:37 v #5038 > > │ ............................................................................ │ 00:00:37 v #5039 > > │ ............................................................................ │ 00:00:37 v #5040 > > │ ........ │ 00:00:37 v #5041 > > │ ..................................................;;;<...................... │ 00:00:37 v #5042 > > │ ............................................................................ │ 00:00:37 v #5043 > > │ ........ │ 00:00:37 v #5044 > > │ ............................................;;;;;;///<...................... │ 00:00:37 v #5045 > > │ ............................................................................ │ 00:00:37 v #5046 > > │ ........ │ 00:00:37 v #5047 > > │ .....................................;;;;;;;/////////<<..................... │ 00:00:37 v #5048 > > │ ............................................................................ │ 00:00:37 v #5049 > > │ ........ │ 00:00:37 v #5050 > > │ ..............................;;;;;;;/////////////////<<.................... │ 00:00:37 v #5051 > > │ ............................................................................ │ 00:00:37 v #5052 > > │ ........ │ 00:00:37 v #5053 > > │ .......................;;;;;;;/////////////////////////<.................... │ 00:00:37 v #5054 > > │ ............................................................................ │ 00:00:37 v #5055 > > │ ........ │ 00:00:37 v #5056 > > │ .................;;;;;;;///////////////////////////////<<................... │ 00:00:37 v #5057 > > │ ............................................................................ │ 00:00:37 v #5058 > > │ ........ │ 00:00:37 v #5059 > > │ ..............;;;///////////////////////////////////////<................... │ 00:00:37 v #5060 > > │ ............................................................................ │ 00:00:37 v #5061 > > │ ........ │ 00:00:37 v #5062 > > │ ...............//////////////////////////////////////////<.................. │ 00:00:37 v #5063 > > │ ................;;;<........................................................ │ 00:00:37 v #5064 > > │ ........ │ 00:00:37 v #5065 > > │ ...............>/////////////////////////////////////////<<................. │ 00:00:37 v #5066 > > │ .........;;;;;;;////<....................................................... │ 00:00:37 v #5067 > > │ ........ │ 00:00:37 v #5068 > > │ ................>/////////////////////////////////////////<................. │ 00:00:37 v #5069 > > │ ...;;;;;;///////////<<...................................................... │ 00:00:37 v #5070 > > │ ........ │ 00:00:37 v #5071 > > │ ................./////////////////////////////////////////<<................ │ 00:00:37 v #5072 > > │ ..;//////////////////<.....................;;;<<............................ │ 00:00:37 v #5073 > > │ ........ │ 00:00:37 v #5074 > > │ .................>/////////////////////////////////////////<................ │ 00:00:37 v #5075 > > │ ...//////////////////<<...............;;;;;////<............................ │ 00:00:37 v #5076 > > │ ........ │ 00:00:37 v #5077 > > │ ..................//////////////////////////////////////////<............... │ 00:00:37 v #5078 > > │ ....//////////////////<<..............>////////<<........................... │ 00:00:37 v #5079 > > │ ........ │ 00:00:37 v #5080 > > │ ..................>/////////////////////////////////////////<<.............. │ 00:00:37 v #5081 > > │ ....>//////////////////<...............>////////<........................... │ 00:00:37 v #5082 > > │ ........ │ 00:00:37 v #5083 > > │ ...................>/////////////////////////////////////////<.............. │ 00:00:37 v #5084 > > │ .....//////////////////<<...............////////<<.......................... │ 00:00:37 v #5085 > > │ ........ │ 00:00:37 v #5086 > > │ ..................../////////////////////////////////////////<<............. │ 00:00:37 v #5087 > > │ .....>//////////////////<...............>////............................... │ 00:00:37 v #5088 > > │ ........ │ 00:00:37 v #5089 > > │ ....................>/////////////////////////////////////////<............. │ 00:00:37 v #5090 > > │ ......///////////////////................................................... │ 00:00:37 v #5091 > > │ ........ │ 00:00:37 v #5092 > > │ ...................../////////////////////////////////////////<<............ │ 00:00:37 v #5093 > > │ ......>////////////......................................................... │ 00:00:37 v #5094 > > │ ........ │ 00:00:37 v #5095 > > │ .....................>/////////////////////////////////////////<............ │ 00:00:37 v #5096 > > │ .......>////................................................................ │ 00:00:37 v #5097 > > │ ........ │ 00:00:37 v #5098 > > │ ......................>/////////////////////////////////////////<........... │ 00:00:37 v #5099 > > │ ............................................................................ │ 00:00:37 v #5100 > > │ ........ │ 00:00:37 v #5101 > > │ ......................./////////////////////////////////////////............ │ 00:00:37 v #5102 > > │ ............................................................................ │ 00:00:37 v #5103 > > │ ........ │ 00:00:37 v #5104 > > │ .......................>/////////////////////////////////................... │ 00:00:37 v #5105 > > │ ............................................................................ │ 00:00:37 v #5106 > > │ ........ │ 00:00:37 v #5107 > > │ ........................//////////////////////////.......................... │ 00:00:37 v #5108 > > │ ............................................................................ │ 00:00:37 v #5109 > > │ ........ │ 00:00:37 v #5110 > > │ ........................>//////////////////................................. │ 00:00:37 v #5111 > > │ ............................................................................ │ 00:00:37 v #5112 > > │ ........ │ 00:00:37 v #5113 > > │ .........................>//////////........................................ │ 00:00:37 v #5114 > > │ ............................................................................ │ 00:00:37 v #5115 > > │ ........ │ 00:00:37 v #5116 > > │ ..........................////.............................................. │ 00:00:37 v #5117 > > │ ............................................................................ │ 00:00:37 v #5118 > > │ ........ │ 00:00:37 v #5119 > > │ ............................................................................ │ 00:00:37 v #5120 > > │ ............................................................................ │ 00:00:37 v #5121 > > │ ........ │ 00:00:37 v #5122 > > │ ............................................................................ │ 00:00:37 v #5123 > > │ ............................................................................ │ 00:00:37 v #5124 > > │ ........ │ 00:00:37 v #5125 > > │ ............................................................................ │ 00:00:37 v #5126 > > │ ............................................................................ │ 00:00:37 v #5127 > > │ ........ │ 00:00:37 v #5128 > > │ ............................................................................ │ 00:00:37 v #5129 > > │ ............................................................................ │ 00:00:37 v #5130 > > │ ........ │ 00:00:37 v #5131 > > │ ............................................................................ │ 00:00:37 v #5132 > > │ ............................................................................ │ 00:00:37 v #5133 > > │ ........ │ 00:00:37 v #5134 > > │ ............................................................................ │ 00:00:37 v #5135 > > │ ............................................................................ │ 00:00:37 v #5136 > > │ ........ │ 00:00:37 v #5137 > > │ ............................................................................ │ 00:00:37 v #5138 > > │ ............................................................................ │ 00:00:37 v #5139 > > │ ........ │ 00:00:37 v #5140 > > │ ............................................................................ │ 00:00:37 v #5141 > > │ ............................................................................ │ 00:00:37 v #5142 > > │ ........ │ 00:00:37 v #5143 > > │ ............................................................................ │ 00:00:37 v #5144 > > │ ............................................................................ │ 00:00:37 v #5145 > > │ ........ │ 00:00:37 v #5146 > > │ │ 00:00:37 v #5147 > > │ ............................................................................ │ 00:00:37 v #5148 > > │ ............................................................................ │ 00:00:37 v #5149 > > │ ........ │ 00:00:37 v #5150 > > │ ............................................................................ │ 00:00:37 v #5151 > > │ ............................................................................ │ 00:00:37 v #5152 > > │ ........ │ 00:00:37 v #5153 > > │ ............................................................................ │ 00:00:37 v #5154 > > │ ............................................................................ │ 00:00:37 v #5155 > > │ ........ │ 00:00:37 v #5156 > > │ ............................................................................ │ 00:00:37 v #5157 > > │ ............................................................................ │ 00:00:37 v #5158 > > │ ........ │ 00:00:37 v #5159 > > │ ............................................................................ │ 00:00:37 v #5160 > > │ ............................................................................ │ 00:00:37 v #5161 > > │ ........ │ 00:00:37 v #5162 > > │ ............................................................................ │ 00:00:37 v #5163 > > │ ............................................................................ │ 00:00:37 v #5164 > > │ ........ │ 00:00:37 v #5165 > > │ ............................................................................ │ 00:00:37 v #5166 > > │ ............................................................................ │ 00:00:37 v #5167 > > │ ........ │ 00:00:37 v #5168 > > │ ............................................................................ │ 00:00:37 v #5169 > > │ ............................................................................ │ 00:00:37 v #5170 > > │ ........ │ 00:00:37 v #5171 > > │ ............................................................................ │ 00:00:37 v #5172 > > │ ............................................................................ │ 00:00:37 v #5173 > > │ ........ │ 00:00:37 v #5174 > > │ ................................................;;;/;....................... │ 00:00:37 v #5175 > > │ ............................................................................ │ 00:00:37 v #5176 > > │ ........ │ 00:00:37 v #5177 > > │ ..........................................;;;;/;//////...................... │ 00:00:37 v #5178 > > │ ............................................................................ │ 00:00:37 v #5179 > > │ ........ │ 00:00:37 v #5180 > > │ ....................................;;;;///////////////..................... │ 00:00:37 v #5181 > > │ ............................................................................ │ 00:00:37 v #5182 > > │ ........ │ 00:00:37 v #5183 > > │ ...............................;;/;;///////////////////<.................... │ 00:00:37 v #5184 > > │ ............................................................................ │ 00:00:37 v #5185 > > │ ........ │ 00:00:37 v #5186 > > │ .........................;;;;/;/////////////////////////.................... │ 00:00:37 v #5187 > > │ ............................................................................ │ 00:00:37 v #5188 > > │ ........ │ 00:00:37 v #5189 > > │ ...................;;;;//;///////////////////////////////................... │ 00:00:37 v #5190 > > │ ............................................................................ │ 00:00:37 v #5191 > > │ ........ │ 00:00:37 v #5192 > > │ ..............;;/;;//////////////////////////////////////<.................. │ 00:00:37 v #5193 > > │ ............................................................................ │ 00:00:37 v #5194 > > │ ........ │ 00:00:37 v #5195 > > │ ..............>>//////////////////////////////////////////.................. │ 00:00:37 v #5196 > > │ ...............;;;//........................................................ │ 00:00:37 v #5197 > > │ ........ │ 00:00:37 v #5198 > > │ ...............>>//////////////////////////////////////////................. │ 00:00:37 v #5199 > > │ ..........;;/////////....................................................... │ 00:00:37 v #5200 > > │ ........ │ 00:00:37 v #5201 > > │ ................>///////////////////////////////////////////................ │ 00:00:37 v #5202 > > │ ....;;;///////////////...................................................... │ 00:00:37 v #5203 > > │ ........ │ 00:00:37 v #5204 > > │ .................>//////////////////////////////////////////<............... │ 00:00:37 v #5205 > > │ ..;>//////////////////<...................;;///<............................ │ 00:00:37 v #5206 > > │ ........ │ 00:00:37 v #5207 > > │ .................>>//////////////////////////////////////////............... │ 00:00:37 v #5208 > > │ ...>///////////////////...............;;;;//////............................ │ 00:00:37 v #5209 > > │ ........ │ 00:00:37 v #5210 > > │ ..................>>//////////////////////////////////////////.............. │ 00:00:37 v #5211 > > │ ....>///////////////////...............>/////////........................... │ 00:00:37 v #5212 > > │ ........ │ 00:00:37 v #5213 > > │ ...................>//////////////////////////////////////////<............. │ 00:00:37 v #5214 > > │ ....>>///////////////////..............>>////////<.......................... │ 00:00:37 v #5215 > > │ ........ │ 00:00:37 v #5216 > > │ ....................>//////////////////////////////////////////............. │ 00:00:37 v #5217 > > │ .....>>//////////////////...............>>////////.......................... │ 00:00:37 v #5218 > > │ ........ │ 00:00:37 v #5219 > > │ ....................>>//////////////////////////////////////////............ │ 00:00:37 v #5220 > > │ ......>///////////////////...............>///............................... │ 00:00:37 v #5221 > > │ ........ │ 00:00:37 v #5222 > > │ .....................>///////////////////////////////////////////........... │ 00:00:37 v #5223 > > │ .......>////////////////.................................................... │ 00:00:37 v #5224 > > │ ........ │ 00:00:37 v #5225 > > │ ......................>//////////////////////////////////////////<.......... │ 00:00:37 v #5226 > > │ .......>>/////////.......................................................... │ 00:00:37 v #5227 > > │ ........ │ 00:00:37 v #5228 > > │ ......................>>//////////////////////////////////////////.......... │ 00:00:37 v #5229 > > │ ........>////............................................................... │ 00:00:37 v #5230 > > │ ........ │ 00:00:37 v #5231 > > │ .......................>>/////////////////////////////////////////.......... │ 00:00:37 v #5232 > > │ ............................................................................ │ 00:00:37 v #5233 > > │ ........ │ 00:00:37 v #5234 > > │ ........................>>//////////////////////////////////................ │ 00:00:37 v #5235 > > │ ............................................................................ │ 00:00:37 v #5236 > > │ ........ │ 00:00:37 v #5237 > > │ .........................>////////////////////////////...................... │ 00:00:37 v #5238 > > │ ............................................................................ │ 00:00:37 v #5239 > > │ ........ │ 00:00:37 v #5240 > > │ .........................>>//////////////////////........................... │ 00:00:37 v #5241 > > │ ............................................................................ │ 00:00:37 v #5242 > > │ ........ │ 00:00:37 v #5243 > > │ ..........................>>////////////////................................ │ 00:00:37 v #5244 > > │ ............................................................................ │ 00:00:37 v #5245 > > │ ........ │ 00:00:37 v #5246 > > │ ...........................>///////////..................................... │ 00:00:37 v #5247 > > │ ............................................................................ │ 00:00:37 v #5248 > > │ ........ │ 00:00:37 v #5249 > > │ ............................>////........................................... │ 00:00:37 v #5250 > > │ ............................................................................ │ 00:00:37 v #5251 > > │ ........ │ 00:00:37 v #5252 > > │ ............................................................................ │ 00:00:37 v #5253 > > │ ............................................................................ │ 00:00:37 v #5254 > > │ ........ │ 00:00:37 v #5255 > > │ ............................................................................ │ 00:00:37 v #5256 > > │ ............................................................................ │ 00:00:37 v #5257 > > │ ........ │ 00:00:37 v #5258 > > │ ............................................................................ │ 00:00:37 v #5259 > > │ ............................................................................ │ 00:00:37 v #5260 > > │ ........ │ 00:00:37 v #5261 > > │ ............................................................................ │ 00:00:37 v #5262 > > │ ............................................................................ │ 00:00:37 v #5263 > > │ ........ │ 00:00:37 v #5264 > > │ ............................................................................ │ 00:00:37 v #5265 > > │ ............................................................................ │ 00:00:37 v #5266 > > │ ........ │ 00:00:37 v #5267 > > │ ............................................................................ │ 00:00:37 v #5268 > > │ ............................................................................ │ 00:00:37 v #5269 > > │ ........ │ 00:00:37 v #5270 > > │ ............................................................................ │ 00:00:37 v #5271 > > │ ............................................................................ │ 00:00:37 v #5272 > > │ ........ │ 00:00:37 v #5273 > > │ ............................................................................ │ 00:00:37 v #5274 > > │ ............................................................................ │ 00:00:37 v #5275 > > │ ........ │ 00:00:37 v #5276 > > │ ............................................................................ │ 00:00:37 v #5277 > > │ ............................................................................ │ 00:00:37 v #5278 > > │ ........ │ 00:00:37 v #5279 > > │ │ 00:00:37 v #5280 > > │ ............................................................................ │ 00:00:37 v #5281 > > │ ............................................................................ │ 00:00:37 v #5282 > > │ ........ │ 00:00:37 v #5283 > > │ ............................................................................ │ 00:00:37 v #5284 > > │ ............................................................................ │ 00:00:37 v #5285 > > │ ........ │ 00:00:37 v #5286 > > │ ............................................................................ │ 00:00:37 v #5287 > > │ ............................................................................ │ 00:00:37 v #5288 > > │ ........ │ 00:00:37 v #5289 > > │ ............................................................................ │ 00:00:37 v #5290 > > │ ............................................................................ │ 00:00:37 v #5291 > > │ ........ │ 00:00:37 v #5292 > > │ ............................................................................ │ 00:00:37 v #5293 > > │ ............................................................................ │ 00:00:37 v #5294 > > │ ........ │ 00:00:37 v #5295 > > │ ............................................................................ │ 00:00:37 v #5296 > > │ ............................................................................ │ 00:00:37 v #5297 > > │ ........ │ 00:00:37 v #5298 > > │ ............................................................................ │ 00:00:37 v #5299 > > │ ............................................................................ │ 00:00:37 v #5300 > > │ ........ │ 00:00:37 v #5301 > > │ ............................................................................ │ 00:00:37 v #5302 > > │ ............................................................................ │ 00:00:37 v #5303 > > │ ........ │ 00:00:37 v #5304 > > │ ...................................................;........................ │ 00:00:37 v #5305 > > │ ............................................................................ │ 00:00:37 v #5306 > > │ ........ │ 00:00:37 v #5307 > > │ ..............................................;/;;///....................... │ 00:00:37 v #5308 > > │ ............................................................................ │ 00:00:37 v #5309 > > │ ........ │ 00:00:37 v #5310 > > │ .........................................;;;//////////...................... │ 00:00:37 v #5311 > > │ ............................................................................ │ 00:00:37 v #5312 > > │ ........ │ 00:00:37 v #5313 > > │ ....................................;;;///////////////<..................... │ 00:00:37 v #5314 > > │ ............................................................................ │ 00:00:37 v #5315 > > │ ........ │ 00:00:37 v #5316 > > │ ...............................;;;/;///////////////////<.................... │ 00:00:37 v #5317 > > │ ............................................................................ │ 00:00:37 v #5318 > > │ ........ │ 00:00:37 v #5319 > > │ ..........................;;;/;/////////////////////////<................... │ 00:00:37 v #5320 > > │ ............................................................................ │ 00:00:37 v #5321 > > │ ........ │ 00:00:37 v #5322 > > │ ......................;;/////////////////////////////////................... │ 00:00:37 v #5323 > > │ ............................................................................ │ 00:00:37 v #5324 > > │ ........ │ 00:00:37 v #5325 > > │ .................;;;//////////////////////////////////////.................. │ 00:00:37 v #5326 > > │ ............................................................................ │ 00:00:37 v #5327 > > │ ........ │ 00:00:37 v #5328 > > │ ..............;>///////////////////////////////////////////................. │ 00:00:37 v #5329 > > │ ...............;;;;/........................................................ │ 00:00:37 v #5330 > > │ ........ │ 00:00:37 v #5331 > > │ ...............>///////////////////////////////////////////<................ │ 00:00:37 v #5332 > > │ ..........;;/////////....................................................... │ 00:00:37 v #5333 > > │ ........ │ 00:00:37 v #5334 > > │ ................>///////////////////////////////////////////<............... │ 00:00:37 v #5335 > > │ .....;;;//////////////...................................................... │ 00:00:37 v #5336 > > │ ........ │ 00:00:37 v #5337 > > │ .................>///////////////////////////////////////////<.............. │ 00:00:37 v #5338 > > │ ..;>///////////////////...................;;///<............................ │ 00:00:37 v #5339 > > │ ........ │ 00:00:37 v #5340 > > │ .................>>///////////////////////////////////////////.............. │ 00:00:37 v #5341 > > │ ...>>///////////////////..............;;;;//////............................ │ 00:00:37 v #5342 > > │ ........ │ 00:00:37 v #5343 > > │ ..................>>///////////////////////////////////////////............. │ 00:00:37 v #5344 > > │ ....>///////////////////<.............>>/////////........................... │ 00:00:37 v #5345 > > │ ........ │ 00:00:37 v #5346 > > │ ...................>>///////////////////////////////////////////............ │ 00:00:37 v #5347 > > │ .....>///////////////////<.............>>/////////.......................... │ 00:00:37 v #5348 > > │ ........ │ 00:00:37 v #5349 > > │ ....................>>///////////////////////////////////////////........... │ 00:00:37 v #5350 > > │ .....>>///////////////////..............>>////////.......................... │ 00:00:37 v #5351 > > │ ........ │ 00:00:37 v #5352 > > │ .....................>///////////////////////////////////////////<.......... │ 00:00:37 v #5353 > > │ ......>>///////////////////..............>////.............................. │ 00:00:37 v #5354 > > │ ........ │ 00:00:37 v #5355 > > │ ......................>///////////////////////////////////////////<......... │ 00:00:37 v #5356 > > │ .......>>//////////////..................................................... │ 00:00:37 v #5357 > > │ ........ │ 00:00:37 v #5358 > > │ .......................>///////////////////////////////////////////......... │ 00:00:37 v #5359 > > │ ........>>////////.......................................................... │ 00:00:37 v #5360 > > │ ........ │ 00:00:37 v #5361 > > │ ........................>//////////////////////////////////////////......... │ 00:00:37 v #5362 > > │ .........>////.............................................................. │ 00:00:37 v #5363 > > │ ........ │ 00:00:37 v #5364 > > │ ........................>>/////////////////////////////////////............. │ 00:00:37 v #5365 > > │ ............................................................................ │ 00:00:37 v #5366 > > │ ........ │ 00:00:37 v #5367 > > │ .........................>>///////////////////////////////.................. │ 00:00:37 v #5368 > > │ ............................................................................ │ 00:00:37 v #5369 > > │ ........ │ 00:00:37 v #5370 > > │ ..........................>>//////////////////////////...................... │ 00:00:37 v #5371 > > │ ............................................................................ │ 00:00:37 v #5372 > > │ ........ │ 00:00:37 v #5373 > > │ ...........................>>////////////////////........................... │ 00:00:37 v #5374 > > │ ............................................................................ │ 00:00:37 v #5375 > > │ ........ │ 00:00:37 v #5376 > > │ ............................>>///////////////............................... │ 00:00:37 v #5377 > > │ ............................................................................ │ 00:00:37 v #5378 > > │ ........ │ 00:00:37 v #5379 > > │ .............................>>/////////.................................... │ 00:00:37 v #5380 > > │ ............................................................................ │ 00:00:37 v #5381 > > │ ........ │ 00:00:37 v #5382 > > │ ..............................>/////........................................ │ 00:00:37 v #5383 > > │ ............................................................................ │ 00:00:37 v #5384 > > │ ........ │ 00:00:37 v #5385 > > │ .............................../............................................ │ 00:00:37 v #5386 > > │ ............................................................................ │ 00:00:37 v #5387 > > │ ........ │ 00:00:37 v #5388 > > │ ............................................................................ │ 00:00:37 v #5389 > > │ ............................................................................ │ 00:00:37 v #5390 > > │ ........ │ 00:00:37 v #5391 > > │ ............................................................................ │ 00:00:37 v #5392 > > │ ............................................................................ │ 00:00:37 v #5393 > > │ ........ │ 00:00:37 v #5394 > > │ ............................................................................ │ 00:00:37 v #5395 > > │ ............................................................................ │ 00:00:37 v #5396 > > │ ........ │ 00:00:37 v #5397 > > │ ............................................................................ │ 00:00:37 v #5398 > > │ ............................................................................ │ 00:00:37 v #5399 > > │ ........ │ 00:00:37 v #5400 > > │ ............................................................................ │ 00:00:37 v #5401 > > │ ............................................................................ │ 00:00:37 v #5402 > > │ ........ │ 00:00:37 v #5403 > > │ ............................................................................ │ 00:00:37 v #5404 > > │ ............................................................................ │ 00:00:37 v #5405 > > │ ........ │ 00:00:37 v #5406 > > │ ............................................................................ │ 00:00:37 v #5407 > > │ ............................................................................ │ 00:00:37 v #5408 > > │ ........ │ 00:00:37 v #5409 > > │ ............................................................................ │ 00:00:37 v #5410 > > │ ............................................................................ │ 00:00:37 v #5411 > > │ ........ │ 00:00:37 v #5412 > > │ │ 00:00:37 v #5413 > > │ ............................................................................ │ 00:00:37 v #5414 > > │ ............................................................................ │ 00:00:37 v #5415 > > │ ........ │ 00:00:37 v #5416 > > │ ............................................................................ │ 00:00:37 v #5417 > > │ ............................................................................ │ 00:00:37 v #5418 > > │ ........ │ 00:00:37 v #5419 > > │ ............................................................................ │ 00:00:37 v #5420 > > │ ............................................................................ │ 00:00:37 v #5421 > > │ ........ │ 00:00:37 v #5422 > > │ ............................................................................ │ 00:00:37 v #5423 > > │ ............................................................................ │ 00:00:37 v #5424 > > │ ........ │ 00:00:37 v #5425 > > │ ............................................................................ │ 00:00:37 v #5426 > > │ ............................................................................ │ 00:00:37 v #5427 > > │ ........ │ 00:00:37 v #5428 > > │ ............................................................................ │ 00:00:37 v #5429 > > │ ............................................................................ │ 00:00:37 v #5430 > > │ ........ │ 00:00:37 v #5431 > > │ ............................................................................ │ 00:00:37 v #5432 > > │ ............................................................................ │ 00:00:37 v #5433 > > │ ........ │ 00:00:37 v #5434 > > │ ............................................................................ │ 00:00:37 v #5435 > > │ ............................................................................ │ 00:00:37 v #5436 > > │ ........ │ 00:00:37 v #5437 > > │ ................................................;;/<........................ │ 00:00:37 v #5438 > > │ ............................................................................ │ 00:00:37 v #5439 > > │ ........ │ 00:00:37 v #5440 > > │ ............................................;;//////<....................... │ 00:00:37 v #5441 > > │ ............................................................................ │ 00:00:37 v #5442 > > │ ........ │ 00:00:37 v #5443 > > │ ........................................;;;//////////<...................... │ 00:00:37 v #5444 > > │ ............................................................................ │ 00:00:37 v #5445 > > │ ........ │ 00:00:37 v #5446 > > │ ....................................;/;;//////////////<..................... │ 00:00:37 v #5447 > > │ ............................................................................ │ 00:00:37 v #5448 > > │ ........ │ 00:00:37 v #5449 > > │ ................................;;/////////////////////<.................... │ 00:00:37 v #5450 > > │ ............................................................................ │ 00:00:37 v #5451 > > │ ........ │ 00:00:37 v #5452 > > │ ...........................;;//;////////////////////////.................... │ 00:00:37 v #5453 > > │ ............................................................................ │ 00:00:37 v #5454 > > │ ........ │ 00:00:37 v #5455 > > │ .......................;;;///////////////////////////////<.................. │ 00:00:37 v #5456 > > │ ............................................................................ │ 00:00:37 v #5457 > > │ ........ │ 00:00:37 v #5458 > > │ ...................;/;////////////////////////////////////<................. │ 00:00:37 v #5459 > > │ ..................;......................................................... │ 00:00:37 v #5460 > > │ ........ │ 00:00:37 v #5461 > > │ ..............;;;;/////////////////////////////////////////<................ │ 00:00:37 v #5462 > > │ ..............;/////........................................................ │ 00:00:37 v #5463 > > │ ........ │ 00:00:37 v #5464 > > │ ..............;>////////////////////////////////////////////<............... │ 00:00:37 v #5465 > > │ ..........;;;;///////....................................................... │ 00:00:37 v #5466 > > │ ........ │ 00:00:37 v #5467 > > │ ................>////////////////////////////////////////////<.............. │ 00:00:37 v #5468 > > │ ......;///////////////...................................................... │ 00:00:37 v #5469 > > │ ........ │ 00:00:37 v #5470 > > │ .................>////////////////////////////////////////////.............. │ 00:00:37 v #5471 > > │ ...;;//////////////////...................;;;//<............................ │ 00:00:37 v #5472 > > │ ........ │ 00:00:37 v #5473 > > │ ..................>////////////////////////////////////////////............. │ 00:00:37 v #5474 > > │ ...>>///////////////////..............;;;///////<........................... │ 00:00:37 v #5475 > > │ ........ │ 00:00:37 v #5476 > > │ ...................>////////////////////////////////////////////<........... │ 00:00:37 v #5477 > > │ ...>>>///////////////////.............>>/////////<.......................... │ 00:00:37 v #5478 > > │ ........ │ 00:00:37 v #5479 > > │ ....................>////////////////////////////////////////////<.......... │ 00:00:37 v #5480 > > │ ....>>>///////////////////.............>>/////////.......................... │ 00:00:37 v #5481 > > │ ........ │ 00:00:37 v #5482 > > │ .....................>////////////////////////////////////////////<......... │ 00:00:37 v #5483 > > │ .....>>>///////////////////.............>>////////.......................... │ 00:00:37 v #5484 > > │ ........ │ 00:00:37 v #5485 > > │ ......................>////////////////////////////////////////////<........ │ 00:00:37 v #5486 > > │ ......>>>/////////////////...............>>///.............................. │ 00:00:37 v #5487 > > │ ........ │ 00:00:37 v #5488 > > │ .......................>////////////////////////////////////////////........ │ 00:00:37 v #5489 > > │ .......>>>////////////...................................................... │ 00:00:37 v #5490 > > │ ........ │ 00:00:37 v #5491 > > │ ........................>///////////////////////////////////////////........ │ 00:00:37 v #5492 > > │ ........>>>///////.......................................................... │ 00:00:37 v #5493 > > │ ........ │ 00:00:37 v #5494 > > │ .........................>>/////////////////////////////////////............ │ 00:00:37 v #5495 > > │ .........>>////............................................................. │ 00:00:37 v #5496 > > │ ........ │ 00:00:37 v #5497 > > │ ..........................>/////////////////////////////////................ │ 00:00:37 v #5498 > > │ ............................................................................ │ 00:00:37 v #5499 > > │ ........ │ 00:00:37 v #5500 > > │ ...........................>>////////////////////////////................... │ 00:00:37 v #5501 > > │ ............................................................................ │ 00:00:37 v #5502 > > │ ........ │ 00:00:37 v #5503 > > │ ............................>>///////////////////////....................... │ 00:00:37 v #5504 > > │ ............................................................................ │ 00:00:37 v #5505 > > │ ........ │ 00:00:37 v #5506 > > │ .............................>////////////////////.......................... │ 00:00:37 v #5507 > > │ ............................................................................ │ 00:00:37 v #5508 > > │ ........ │ 00:00:37 v #5509 > > │ ..............................>>//////////////.............................. │ 00:00:37 v #5510 > > │ ............................................................................ │ 00:00:37 v #5511 > > │ ........ │ 00:00:37 v #5512 > > │ ...............................>>/////////.................................. │ 00:00:37 v #5513 > > │ ............................................................................ │ 00:00:37 v #5514 > > │ ........ │ 00:00:37 v #5515 > > │ ................................>>////...................................... │ 00:00:37 v #5516 > > │ ............................................................................ │ 00:00:37 v #5517 > > │ ........ │ 00:00:37 v #5518 > > │ .................................>/......................................... │ 00:00:37 v #5519 > > │ ............................................................................ │ 00:00:37 v #5520 > > │ ........ │ 00:00:37 v #5521 > > │ ............................................................................ │ 00:00:37 v #5522 > > │ ............................................................................ │ 00:00:37 v #5523 > > │ ........ │ 00:00:37 v #5524 > > │ ............................................................................ │ 00:00:37 v #5525 > > │ ............................................................................ │ 00:00:37 v #5526 > > │ ........ │ 00:00:37 v #5527 > > │ ............................................................................ │ 00:00:37 v #5528 > > │ ............................................................................ │ 00:00:37 v #5529 > > │ ........ │ 00:00:37 v #5530 > > │ ............................................................................ │ 00:00:37 v #5531 > > │ ............................................................................ │ 00:00:37 v #5532 > > │ ........ │ 00:00:37 v #5533 > > │ ............................................................................ │ 00:00:37 v #5534 > > │ ............................................................................ │ 00:00:37 v #5535 > > │ ........ │ 00:00:37 v #5536 > > │ ............................................................................ │ 00:00:37 v #5537 > > │ ............................................................................ │ 00:00:37 v #5538 > > │ ........ │ 00:00:37 v #5539 > > │ ............................................................................ │ 00:00:37 v #5540 > > │ ............................................................................ │ 00:00:37 v #5541 > > │ ........ │ 00:00:37 v #5542 > > │ ............................................................................ │ 00:00:37 v #5543 > > │ ............................................................................ │ 00:00:37 v #5544 > > │ ........ │ 00:00:37 v #5545 > > │ │ 00:00:37 v #5546 > > │ ............................................................................ │ 00:00:37 v #5547 > > │ ............................................................................ │ 00:00:37 v #5548 > > │ ........ │ 00:00:37 v #5549 > > │ ............................................................................ │ 00:00:37 v #5550 > > │ ............................................................................ │ 00:00:37 v #5551 > > │ ........ │ 00:00:37 v #5552 > > │ ............................................................................ │ 00:00:37 v #5553 > > │ ............................................................................ │ 00:00:37 v #5554 > > │ ........ │ 00:00:37 v #5555 > > │ ............................................................................ │ 00:00:37 v #5556 > > │ ............................................................................ │ 00:00:37 v #5557 > > │ ........ │ 00:00:37 v #5558 > > │ ............................................................................ │ 00:00:37 v #5559 > > │ ............................................................................ │ 00:00:37 v #5560 > > │ ........ │ 00:00:37 v #5561 > > │ ............................................................................ │ 00:00:37 v #5562 > > │ ............................................................................ │ 00:00:37 v #5563 > > │ ........ │ 00:00:37 v #5564 > > │ ............................................................................ │ 00:00:37 v #5565 > > │ ............................................................................ │ 00:00:37 v #5566 > > │ ........ │ 00:00:37 v #5567 > > │ ............................................................................ │ 00:00:37 v #5568 > > │ ............................................................................ │ 00:00:37 v #5569 > > │ ........ │ 00:00:37 v #5570 > > │ ...............................................;;;/......................... │ 00:00:37 v #5571 > > │ ............................................................................ │ 00:00:37 v #5572 > > │ ........ │ 00:00:37 v #5573 > > │ ...........................................;;;//////........................ │ 00:00:37 v #5574 > > │ ............................................................................ │ 00:00:37 v #5575 > > │ ........ │ 00:00:37 v #5576 > > │ .......................................;;;///////////....................... │ 00:00:37 v #5577 > > │ ............................................................................ │ 00:00:37 v #5578 > > │ ........ │ 00:00:37 v #5579 > > │ ....................................;;////////////////...................... │ 00:00:37 v #5580 > > │ ............................................................................ │ 00:00:37 v #5581 > > │ ........ │ 00:00:37 v #5582 > > │ ................................;;;////////////////////<.................... │ 00:00:37 v #5583 > > │ ............................................................................ │ 00:00:37 v #5584 > > │ ........ │ 00:00:37 v #5585 > > │ ............................;;/;////////////////////////<................... │ 00:00:37 v #5586 > > │ ............................................................................ │ 00:00:37 v #5587 > > │ ........ │ 00:00:37 v #5588 > > │ .........................;;//////////////////////////////<.................. │ 00:00:37 v #5589 > > │ ............................................................................ │ 00:00:37 v #5590 > > │ ........ │ 00:00:37 v #5591 > > │ .....................;/////////////////////////////////////................. │ 00:00:37 v #5592 > > │ .................;;......................................................... │ 00:00:37 v #5593 > > │ ........ │ 00:00:37 v #5594 > > │ .................;/;////////////////////////////////////////................ │ 00:00:37 v #5595 > > │ ..............;;////........................................................ │ 00:00:37 v #5596 > > │ ........ │ 00:00:37 v #5597 > > │ ...............;/////////////////////////////////////////////............... │ 00:00:37 v #5598 > > │ ..........;;;////////....................................................... │ 00:00:37 v #5599 > > │ ........ │ 00:00:37 v #5600 > > │ ...............>>/////////////////////////////////////////////.............. │ 00:00:37 v #5601 > > │ .......;//////////////<..................................................... │ 00:00:37 v #5602 > > │ ........ │ 00:00:37 v #5603 > > │ ................>>/////////////////////////////////////////////............. │ 00:00:37 v #5604 > > │ ...;;///////////////////..................;;;//<............................ │ 00:00:37 v #5605 > > │ ........ │ 00:00:37 v #5606 > > │ ..................>>////////////////////////////////////////////<........... │ 00:00:37 v #5607 > > │ ..;;>////////////////////..............;/////////........................... │ 00:00:37 v #5608 > > │ ........ │ 00:00:37 v #5609 > > │ ...................>>////////////////////////////////////////////<.......... │ 00:00:37 v #5610 > > │ ..\>>>////////////////////............;>//////////.......................... │ 00:00:37 v #5611 > > │ ........ │ 00:00:37 v #5612 > > │ ....................>>////////////////////////////////////////////<......... │ 00:00:37 v #5613 > > │ ....>>>////////////////////...........\>>//////////......................... │ 00:00:37 v #5614 > > │ ........ │ 00:00:37 v #5615 > > │ .....................>>/////////////////////////////////////////////........ │ 00:00:37 v #5616 > > │ .....>>>////////////////////............>>>//////........................... │ 00:00:37 v #5617 > > │ ........ │ 00:00:37 v #5618 > > │ .......................>/////////////////////////////////////////////....... │ 00:00:37 v #5619 > > │ ......>>>////////////////................>>///.............................. │ 00:00:37 v #5620 > > │ ........ │ 00:00:37 v #5621 > > │ ........................>////////////////////////////////////////////....... │ 00:00:37 v #5622 > > │ .......>>>////////////...................................................... │ 00:00:37 v #5623 > > │ ........ │ 00:00:37 v #5624 > > │ .........................>>///////////////////////////////////////.......... │ 00:00:37 v #5625 > > │ ........>>>>///////......................................................... │ 00:00:37 v #5626 > > │ ........ │ 00:00:37 v #5627 > > │ ..........................>>///////////////////////////////////............. │ 00:00:37 v #5628 > > │ .........\>>>///............................................................ │ 00:00:37 v #5629 > > │ ........ │ 00:00:37 v #5630 > > │ ...........................>>//////////////////////////////................. │ 00:00:37 v #5631 > > │ ............................................................................ │ 00:00:37 v #5632 > > │ ........ │ 00:00:37 v #5633 > > │ ............................>>//////////////////////////.................... │ 00:00:37 v #5634 > > │ ............................................................................ │ 00:00:37 v #5635 > > │ ........ │ 00:00:37 v #5636 > > │ .............................>>//////////////////////....................... │ 00:00:37 v #5637 > > │ ............................................................................ │ 00:00:37 v #5638 > > │ ........ │ 00:00:37 v #5639 > > │ ...............................>//////////////////.......................... │ 00:00:37 v #5640 > > │ ............................................................................ │ 00:00:37 v #5641 > > │ ........ │ 00:00:37 v #5642 > > │ ................................>>/////////////............................. │ 00:00:37 v #5643 > > │ ............................................................................ │ 00:00:37 v #5644 > > │ ........ │ 00:00:37 v #5645 > > │ .................................>>/////////................................ │ 00:00:37 v #5646 > > │ ............................................................................ │ 00:00:37 v #5647 > > │ ........ │ 00:00:37 v #5648 > > │ ..................................>>/////................................... │ 00:00:37 v #5649 > > │ ............................................................................ │ 00:00:37 v #5650 > > │ ........ │ 00:00:37 v #5651 > > │ ...................................>//...................................... │ 00:00:37 v #5652 > > │ ............................................................................ │ 00:00:37 v #5653 > > │ ........ │ 00:00:37 v #5654 > > │ ............................................................................ │ 00:00:37 v #5655 > > │ ............................................................................ │ 00:00:37 v #5656 > > │ ........ │ 00:00:37 v #5657 > > │ ............................................................................ │ 00:00:37 v #5658 > > │ ............................................................................ │ 00:00:37 v #5659 > > │ ........ │ 00:00:37 v #5660 > > │ ............................................................................ │ 00:00:37 v #5661 > > │ ............................................................................ │ 00:00:37 v #5662 > > │ ........ │ 00:00:37 v #5663 > > │ ............................................................................ │ 00:00:37 v #5664 > > │ ............................................................................ │ 00:00:37 v #5665 > > │ ........ │ 00:00:37 v #5666 > > │ ............................................................................ │ 00:00:37 v #5667 > > │ ............................................................................ │ 00:00:37 v #5668 > > │ ........ │ 00:00:37 v #5669 > > │ ............................................................................ │ 00:00:37 v #5670 > > │ ............................................................................ │ 00:00:37 v #5671 > > │ ........ │ 00:00:37 v #5672 > > │ ............................................................................ │ 00:00:37 v #5673 > > │ ............................................................................ │ 00:00:37 v #5674 > > │ ........ │ 00:00:37 v #5675 > > │ ............................................................................ │ 00:00:37 v #5676 > > │ ............................................................................ │ 00:00:37 v #5677 > > │ ........ │ 00:00:37 v #5678 > > │ │ 00:00:37 v #5679 > > │ ............................................................................ │ 00:00:37 v #5680 > > │ ............................................................................ │ 00:00:37 v #5681 > > │ ........ │ 00:00:37 v #5682 > > │ ............................................................................ │ 00:00:37 v #5683 > > │ ............................................................................ │ 00:00:37 v #5684 > > │ ........ │ 00:00:37 v #5685 > > │ ............................................................................ │ 00:00:37 v #5686 > > │ ............................................................................ │ 00:00:37 v #5687 > > │ ........ │ 00:00:37 v #5688 > > │ ............................................................................ │ 00:00:37 v #5689 > > │ ............................................................................ │ 00:00:37 v #5690 > > │ ........ │ 00:00:37 v #5691 > > │ ............................................................................ │ 00:00:37 v #5692 > > │ ............................................................................ │ 00:00:37 v #5693 > > │ ........ │ 00:00:37 v #5694 > > │ ............................................................................ │ 00:00:37 v #5695 > > │ ............................................................................ │ 00:00:37 v #5696 > > │ ........ │ 00:00:37 v #5697 > > │ ............................................................................ │ 00:00:37 v #5698 > > │ ............................................................................ │ 00:00:37 v #5699 > > │ ........ │ 00:00:37 v #5700 > > │ ............................................................................ │ 00:00:37 v #5701 > > │ ............................................................................ │ 00:00:37 v #5702 > > │ ........ │ 00:00:37 v #5703 > > │ .............................................;;///.......................... │ 00:00:37 v #5704 > > │ ............................................................................ │ 00:00:37 v #5705 > > │ ........ │ 00:00:37 v #5706 > > │ ..........................................;;;//////<........................ │ 00:00:37 v #5707 > > │ ............................................................................ │ 00:00:37 v #5708 > > │ ........ │ 00:00:37 v #5709 > > │ .......................................;////////////<....................... │ 00:00:37 v #5710 > > │ ............................................................................ │ 00:00:37 v #5711 > > │ ........ │ 00:00:37 v #5712 > > │ ....................................;/////////////////...................... │ 00:00:37 v #5713 > > │ ............................................................................ │ 00:00:37 v #5714 > > │ ........ │ 00:00:37 v #5715 > > │ ................................;;;////////////////////<.................... │ 00:00:37 v #5716 > > │ ............................................................................ │ 00:00:37 v #5717 > > │ ........ │ 00:00:37 v #5718 > > │ .............................;;;////////////////////////<................... │ 00:00:37 v #5719 > > │ ............................................................................ │ 00:00:37 v #5720 > > │ ........ │ 00:00:37 v #5721 > > │ ..........................;///////////////////////////////.................. │ 00:00:37 v #5722 > > │ ............................................................................ │ 00:00:37 v #5723 > > │ ........ │ 00:00:37 v #5724 > > │ ......................;;///////////////////////////////////................. │ 00:00:37 v #5725 > > │ .................;/......................................................... │ 00:00:37 v #5726 > > │ ........ │ 00:00:37 v #5727 > > │ ...................;;;//////////////////////////////////////<............... │ 00:00:37 v #5728 > > │ ..............;;////........................................................ │ 00:00:37 v #5729 > > │ ........ │ 00:00:37 v #5730 > > │ ................;;////////////////////////////////////////////.............. │ 00:00:37 v #5731 > > │ ..........;;;////////....................................................... │ 00:00:37 v #5732 > > │ ........ │ 00:00:37 v #5733 > > │ ...............;>//////////////////////////////////////////////............. │ 00:00:37 v #5734 > > │ .......;;//////////////......................<.............................. │ 00:00:37 v #5735 > > │ ........ │ 00:00:37 v #5736 > > │ ................>>//////////////////////////////////////////////............ │ 00:00:37 v #5737 > > │ ....;///////////////////..................;;;//<............................ │ 00:00:37 v #5738 > > │ ........ │ 00:00:37 v #5739 > > │ .................>>>//////////////////////////////////////////////.......... │ 00:00:37 v #5740 > > │ ..;;>////////////////////..............;;;///////........................... │ 00:00:37 v #5741 > > │ ........ │ 00:00:37 v #5742 > > │ ..................>>>//////////////////////////////////////////////......... │ 00:00:37 v #5743 > > │ ..>>>>////////////////////<..........;;;>/////////.......................... │ 00:00:37 v #5744 > > │ ........ │ 00:00:37 v #5745 > > │ ...................>>>//////////////////////////////////////////////........ │ 00:00:37 v #5746 > > │ ...>>>>/////////////////////..........>>>>/////////......................... │ 00:00:37 v #5747 > > │ ........ │ 00:00:37 v #5748 > > │ .....................>>>/////////////////////////////////////////////<...... │ 00:00:37 v #5749 > > │ ....>>>>>//////////////////............>>>>//////........................... │ 00:00:37 v #5750 > > │ ........ │ 00:00:37 v #5751 > > │ ......................>>>////////////////////////////////////////////....... │ 00:00:37 v #5752 > > │ .....\>>>>///////////////................>>>//.............................. │ 00:00:37 v #5753 > > │ ........ │ 00:00:37 v #5754 > > │ ........................>>>////////////////////////////////////////......... │ 00:00:37 v #5755 > > │ .......>>>>///////////...................................................... │ 00:00:37 v #5756 > > │ ........ │ 00:00:37 v #5757 > > │ .........................>>>////////////////////////////////////............ │ 00:00:37 v #5758 > > │ ........>>>>>//////......................................................... │ 00:00:37 v #5759 > > │ ........ │ 00:00:37 v #5760 > > │ ..........................>>>////////////////////////////////............... │ 00:00:37 v #5761 > > │ ..........>>>>//............................................................ │ 00:00:37 v #5762 > > │ ........ │ 00:00:37 v #5763 > > │ ............................>>>////////////////////////////................. │ 00:00:37 v #5764 > > │ ............................................................................ │ 00:00:37 v #5765 > > │ ........ │ 00:00:37 v #5766 > > │ .............................>>>////////////////////////.................... │ 00:00:37 v #5767 > > │ ............................................................................ │ 00:00:37 v #5768 > > │ ........ │ 00:00:37 v #5769 > > │ ..............................>>>////////////////////....................... │ 00:00:37 v #5770 > > │ ............................................................................ │ 00:00:37 v #5771 > > │ ........ │ 00:00:37 v #5772 > > │ ................................>>>////////////////......................... │ 00:00:37 v #5773 > > │ ............................................................................ │ 00:00:37 v #5774 > > │ ........ │ 00:00:37 v #5775 > > │ .................................>>>////////////............................ │ 00:00:37 v #5776 > > │ ............................................................................ │ 00:00:37 v #5777 > > │ ........ │ 00:00:37 v #5778 > > │ ...................................>>>////////.............................. │ 00:00:37 v #5779 > > │ ............................................................................ │ 00:00:37 v #5780 > > │ ........ │ 00:00:37 v #5781 > > │ ....................................>>>////................................. │ 00:00:37 v #5782 > > │ ............................................................................ │ 00:00:37 v #5783 > > │ ........ │ 00:00:37 v #5784 > > │ ......................................>//................................... │ 00:00:37 v #5785 > > │ ............................................................................ │ 00:00:37 v #5786 > > │ ........ │ 00:00:37 v #5787 > > │ ............................................................................ │ 00:00:37 v #5788 > > │ ............................................................................ │ 00:00:37 v #5789 > > │ ........ │ 00:00:37 v #5790 > > │ ............................................................................ │ 00:00:37 v #5791 > > │ ............................................................................ │ 00:00:37 v #5792 > > │ ........ │ 00:00:37 v #5793 > > │ ............................................................................ │ 00:00:37 v #5794 > > │ ............................................................................ │ 00:00:37 v #5795 > > │ ........ │ 00:00:37 v #5796 > > │ ............................................................................ │ 00:00:37 v #5797 > > │ ............................................................................ │ 00:00:37 v #5798 > > │ ........ │ 00:00:37 v #5799 > > │ ............................................................................ │ 00:00:37 v #5800 > > │ ............................................................................ │ 00:00:37 v #5801 > > │ ........ │ 00:00:37 v #5802 > > │ ............................................................................ │ 00:00:37 v #5803 > > │ ............................................................................ │ 00:00:37 v #5804 > > │ ........ │ 00:00:37 v #5805 > > │ ............................................................................ │ 00:00:37 v #5806 > > │ ............................................................................ │ 00:00:37 v #5807 > > │ ........ │ 00:00:37 v #5808 > > │ ............................................................................ │ 00:00:37 v #5809 > > │ ............................................................................ │ 00:00:37 v #5810 > > │ ........ │ 00:00:37 v #5811 > > │ │ 00:00:37 v #5812 > > │ ............................................................................ │ 00:00:37 v #5813 > > │ ............................................................................ │ 00:00:37 v #5814 > > │ ........ │ 00:00:37 v #5815 > > │ ............................................................................ │ 00:00:37 v #5816 > > │ ............................................................................ │ 00:00:37 v #5817 > > │ ........ │ 00:00:37 v #5818 > > │ ............................................................................ │ 00:00:37 v #5819 > > │ ............................................................................ │ 00:00:37 v #5820 > > │ ........ │ 00:00:37 v #5821 > > │ ............................................................................ │ 00:00:37 v #5822 > > │ ............................................................................ │ 00:00:37 v #5823 > > │ ........ │ 00:00:37 v #5824 > > │ ............................................................................ │ 00:00:37 v #5825 > > │ ............................................................................ │ 00:00:37 v #5826 > > │ ........ │ 00:00:37 v #5827 > > │ ............................................................................ │ 00:00:37 v #5828 > > │ ............................................................................ │ 00:00:37 v #5829 > > │ ........ │ 00:00:37 v #5830 > > │ ............................................................................ │ 00:00:37 v #5831 > > │ ............................................................................ │ 00:00:37 v #5832 > > │ ........ │ 00:00:37 v #5833 > > │ ...............................................;<........................... │ 00:00:37 v #5834 > > │ ............................................................................ │ 00:00:37 v #5835 > > │ ........ │ 00:00:37 v #5836 > > │ ............................................;;;//<.......................... │ 00:00:37 v #5837 > > │ ............................................................................ │ 00:00:37 v #5838 > > │ ........ │ 00:00:37 v #5839 > > │ ..........................................;;///////<........................ │ 00:00:37 v #5840 > > │ ............................................................................ │ 00:00:37 v #5841 > > │ ........ │ 00:00:37 v #5842 > > │ .......................................;////////////<....................... │ 00:00:37 v #5843 > > │ ............................................................................ │ 00:00:37 v #5844 > > │ ........ │ 00:00:37 v #5845 > > │ ....................................;/////////////////...................... │ 00:00:37 v #5846 > > │ ............................................................................ │ 00:00:37 v #5847 > > │ ........ │ 00:00:37 v #5848 > > │ .................................;/////////////////////<.................... │ 00:00:37 v #5849 > > │ ............................................................................ │ 00:00:37 v #5850 > > │ ........ │ 00:00:37 v #5851 > > │ ..............................;;/////////////////////////................... │ 00:00:37 v #5852 > > │ ............................................................................ │ 00:00:37 v #5853 > > │ ........ │ 00:00:37 v #5854 > > │ ...........................;;/////////////////////////////.................. │ 00:00:37 v #5855 > > │ ............................................................................ │ 00:00:37 v #5856 > > │ ........ │ 00:00:37 v #5857 > > │ ........................;;//////////////////////////////////................ │ 00:00:37 v #5858 > > │ ................;;<......................................................... │ 00:00:37 v #5859 > > │ ........ │ 00:00:37 v #5860 > > │ .....................;;//////////////////////////////////////............... │ 00:00:37 v #5861 > > │ .............;//////........................................................ │ 00:00:37 v #5862 > > │ ........ │ 00:00:37 v #5863 > > │ ..................;///////////////////////////////////////////<............. │ 00:00:37 v #5864 > > │ ...........;//////////...................................................... │ 00:00:37 v #5865 > > │ ........ │ 00:00:37 v #5866 > > │ ................;///////////////////////////////////////////////............ │ 00:00:37 v #5867 > > │ ........;;/////////////......................;.............................. │ 00:00:37 v #5868 > > │ ........ │ 00:00:37 v #5869 > > │ ................>>>//////////////////////////////////////////////<.......... │ 00:00:37 v #5870 > > │ .....;;/////////////////<.................;;///<............................ │ 00:00:37 v #5871 > > │ ........ │ 00:00:37 v #5872 > > │ ................>>>>///////////////////////////////////////////////......... │ 00:00:37 v #5873 > > │ ...;>/////////////////////.............;;////////........................... │ 00:00:37 v #5874 > > │ ........ │ 00:00:37 v #5875 > > │ ................;>>>>>//////////////////////////////////////////////<....... │ 00:00:37 v #5876 > > │ .;;>>>/////////////////////<.........;;;>/////////<......................... │ 00:00:37 v #5877 > > │ ........ │ 00:00:37 v #5878 > > │ ..................>>>>>//////////////////////////////////////////////<...... │ 00:00:37 v #5879 > > │ ..>>>>>>////////////////////..........>>>>/////////......................... │ 00:00:37 v #5880 > > │ ........ │ 00:00:37 v #5881 > > │ ...................>>>>>//////////////////////////////////////////////...... │ 00:00:37 v #5882 > > │ ....>>>>>//////////////////............>>>>>/////........................... │ 00:00:37 v #5883 > > │ ........ │ 00:00:37 v #5884 > > │ .....................>>>>>//////////////////////////////////////////........ │ 00:00:37 v #5885 > > │ .....>>>>>>/////////////.................>>>>/.............................. │ 00:00:37 v #5886 > > │ ........ │ 00:00:37 v #5887 > > │ ......................>>>>>>/////////////////////////////////////........... │ 00:00:37 v #5888 > > │ .......>>>>>//////////...................................................... │ 00:00:37 v #5889 > > │ ........ │ 00:00:37 v #5890 > > │ ........................>>>>>//////////////////////////////////............. │ 00:00:37 v #5891 > > │ ........>>>>>>/////......................................................... │ 00:00:37 v #5892 > > │ ........ │ 00:00:37 v #5893 > > │ ..........................>>>>>//////////////////////////////............... │ 00:00:37 v #5894 > > │ ..........>>>>>//........................................................... │ 00:00:37 v #5895 > > │ ........ │ 00:00:37 v #5896 > > │ ...........................>>>>>///////////////////////////................. │ 00:00:37 v #5897 > > │ ............................................................................ │ 00:00:37 v #5898 > > │ ........ │ 00:00:37 v #5899 > > │ .............................>>>>>///////////////////////................... │ 00:00:37 v #5900 > > │ ............................................................................ │ 00:00:37 v #5901 > > │ ........ │ 00:00:37 v #5902 > > │ ..............................>>>>>///////////////////...................... │ 00:00:37 v #5903 > > │ ............................................................................ │ 00:00:37 v #5904 > > │ ........ │ 00:00:37 v #5905 > > │ ................................>>>>>///////////////........................ │ 00:00:37 v #5906 > > │ ............................................................................ │ 00:00:37 v #5907 > > │ ........ │ 00:00:37 v #5908 > > │ .................................>>>>>>///////////.......................... │ 00:00:37 v #5909 > > │ ............................................................................ │ 00:00:37 v #5910 > > │ ........ │ 00:00:37 v #5911 > > │ ...................................=>>>>///////............................. │ 00:00:37 v #5912 > > │ ............................................................................ │ 00:00:37 v #5913 > > │ ........ │ 00:00:37 v #5914 > > │ ......................................>>>>///............................... │ 00:00:37 v #5915 > > │ ............................................................................ │ 00:00:37 v #5916 > > │ ........ │ 00:00:37 v #5917 > > │ ........................................=>/................................. │ 00:00:37 v #5918 > > │ ............................................................................ │ 00:00:37 v #5919 > > │ ........ │ 00:00:37 v #5920 > > │ ............................................................................ │ 00:00:37 v #5921 > > │ ............................................................................ │ 00:00:37 v #5922 > > │ ........ │ 00:00:37 v #5923 > > │ ............................................................................ │ 00:00:37 v #5924 > > │ ............................................................................ │ 00:00:37 v #5925 > > │ ........ │ 00:00:37 v #5926 > > │ ............................................................................ │ 00:00:37 v #5927 > > │ ............................................................................ │ 00:00:37 v #5928 > > │ ........ │ 00:00:37 v #5929 > > │ ............................................................................ │ 00:00:37 v #5930 > > │ ............................................................................ │ 00:00:37 v #5931 > > │ ........ │ 00:00:37 v #5932 > > │ ............................................................................ │ 00:00:37 v #5933 > > │ ............................................................................ │ 00:00:37 v #5934 > > │ ........ │ 00:00:37 v #5935 > > │ ............................................................................ │ 00:00:37 v #5936 > > │ ............................................................................ │ 00:00:37 v #5937 > > │ ........ │ 00:00:37 v #5938 > > │ ............................................................................ │ 00:00:37 v #5939 > > │ ............................................................................ │ 00:00:37 v #5940 > > │ ........ │ 00:00:37 v #5941 > > │ ............................................................................ │ 00:00:37 v #5942 > > │ ............................................................................ │ 00:00:37 v #5943 > > │ ........ │ 00:00:37 v #5944 > > │ │ 00:00:37 v #5945 > > │ ............................................................................ │ 00:00:37 v #5946 > > │ ............................................................................ │ 00:00:37 v #5947 > > │ ........ │ 00:00:37 v #5948 > > │ ............................................................................ │ 00:00:37 v #5949 > > │ ............................................................................ │ 00:00:37 v #5950 > > │ ........ │ 00:00:37 v #5951 > > │ ............................................................................ │ 00:00:37 v #5952 > > │ ............................................................................ │ 00:00:37 v #5953 > > │ ........ │ 00:00:37 v #5954 > > │ ............................................................................ │ 00:00:37 v #5955 > > │ ............................................................................ │ 00:00:37 v #5956 > > │ ........ │ 00:00:37 v #5957 > > │ ............................................................................ │ 00:00:37 v #5958 > > │ ............................................................................ │ 00:00:37 v #5959 > > │ ........ │ 00:00:37 v #5960 > > │ ............................................................................ │ 00:00:37 v #5961 > > │ ............................................................................ │ 00:00:37 v #5962 > > │ ........ │ 00:00:37 v #5963 > > │ ............................................................................ │ 00:00:37 v #5964 > > │ ............................................................................ │ 00:00:37 v #5965 > > │ ........ │ 00:00:37 v #5966 > > │ ..............................................;/............................ │ 00:00:37 v #5967 > > │ ............................................................................ │ 00:00:37 v #5968 > > │ ........ │ 00:00:37 v #5969 > > │ ............................................;////........................... │ 00:00:37 v #5970 > > │ ............................................................................ │ 00:00:37 v #5971 > > │ ........ │ 00:00:37 v #5972 > > │ .........................................;;///////<......................... │ 00:00:37 v #5973 > > │ ............................................................................ │ 00:00:37 v #5974 > > │ ........ │ 00:00:37 v #5975 > > │ ......................................;;////////////........................ │ 00:00:37 v #5976 > > │ ............................................................................ │ 00:00:37 v #5977 > > │ ........ │ 00:00:37 v #5978 > > │ ....................................;;///////////////<...................... │ 00:00:37 v #5979 > > │ ............................................................................ │ 00:00:37 v #5980 > > │ ........ │ 00:00:37 v #5981 > > │ .................................;/////////////////////<.................... │ 00:00:37 v #5982 > > │ ............................................................................ │ 00:00:37 v #5983 > > │ ........ │ 00:00:37 v #5984 > > │ ..............................;;;////////////////////////................... │ 00:00:37 v #5985 > > │ ............................................................................ │ 00:00:37 v #5986 > > │ ........ │ 00:00:37 v #5987 > > │ ............................;/////////////////////////////<................. │ 00:00:37 v #5988 > > │ ............................................................................ │ 00:00:37 v #5989 > > │ ........ │ 00:00:37 v #5990 > > │ .........................;;/////////////////////////////////................ │ 00:00:37 v #5991 > > │ ...............;;/.......................................................... │ 00:00:37 v #5992 > > │ ........ │ 00:00:37 v #5993 > > │ .......................;;/////////////////////////////////////.............. │ 00:00:37 v #5994 > > │ .............;;/////........................................................ │ 00:00:37 v #5995 > > │ ........ │ 00:00:37 v #5996 > > │ ....................;;/////////////////////////////////////////............. │ 00:00:37 v #5997 > > │ ...........;//////////...................................................... │ 00:00:37 v #5998 > > │ ........ │ 00:00:37 v #5999 > > │ ..................;;/////////////////////////////////////////////........... │ 00:00:37 v #6000 > > │ ........;;/////////////......................;.............................. │ 00:00:37 v #6001 > > │ ........ │ 00:00:37 v #6002 > > │ ................;;>///////////////////////////////////////////////<......... │ 00:00:37 v #6003 > > │ ......;;/////////////////.................;;///<............................ │ 00:00:37 v #6004 > > │ ........ │ 00:00:37 v #6005 > > │ ................;>>>////////////////////////////////////////////////........ │ 00:00:37 v #6006 > > │ ...;;/////////////////////.............\;////////<.......................... │ 00:00:37 v #6007 > > │ ........ │ 00:00:37 v #6008 > > │ ................>>>>>>///////////////////////////////////////////////<...... │ 00:00:37 v #6009 > > │ .;;;>>>/////////////////////.........;;;>//////////......................... │ 00:00:37 v #6010 > > │ ........ │ 00:00:37 v #6011 > > │ ................>>>>>>>>//////////////////////////////////////////////...... │ 00:00:37 v #6012 > > │ .>>>>>>>////////////////////.........>>>>>>////////......................... │ 00:00:37 v #6013 > > │ ........ │ 00:00:37 v #6014 > > │ ..................>>>>>>>>//////////////////////////////////////////........ │ 00:00:37 v #6015 > > │ ...>>>>>>>////////////////.............>>>>>/////........................... │ 00:00:37 v #6016 > > │ ........ │ 00:00:37 v #6017 > > │ ...................\>>>>>>>///////////////////////////////////////.......... │ 00:00:37 v #6018 > > │ .....>>>>>>>////////////.................>>>>//............................. │ 00:00:37 v #6019 > > │ ........ │ 00:00:37 v #6020 > > │ .....................>>>>>>>>///////////////////////////////////............ │ 00:00:37 v #6021 > > │ ......>>>>>>>/////////...................................................... │ 00:00:37 v #6022 > > │ ........ │ 00:00:37 v #6023 > > │ .......................>>>>>>>>///////////////////////////////.............. │ 00:00:37 v #6024 > > │ ........>>>>>>>/////........................................................ │ 00:00:37 v #6025 > > │ ........ │ 00:00:37 v #6026 > > │ .........................>>>>>>>/////////////////////////////............... │ 00:00:37 v #6027 > > │ ..........>>>>>>//.......................................................... │ 00:00:37 v #6028 > > │ ........ │ 00:00:37 v #6029 > > │ ..........................>>>>>>>>/////////////////////////................. │ 00:00:37 v #6030 > > │ ............................................................................ │ 00:00:37 v #6031 > > │ ........ │ 00:00:37 v #6032 > > │ ............................>>>>>>>>/////////////////////................... │ 00:00:37 v #6033 > > │ ............................................................................ │ 00:00:37 v #6034 > > │ ........ │ 00:00:37 v #6035 > > │ ..............................>>>>>>>>/////////////////..................... │ 00:00:37 v #6036 > > │ ............................................................................ │ 00:00:37 v #6037 > > │ ........ │ 00:00:37 v #6038 > > │ ................................>>>>>>>//////////////....................... │ 00:00:37 v #6039 > > │ ............................................................................ │ 00:00:37 v #6040 > > │ ........ │ 00:00:37 v #6041 > > │ .................................>>>>>>>>//////////......................... │ 00:00:37 v #6042 > > │ ............................................................................ │ 00:00:37 v #6043 > > │ ........ │ 00:00:37 v #6044 > > │ ....................................>>>>>>>//////........................... │ 00:00:37 v #6045 > > │ ............................................................................ │ 00:00:37 v #6046 > > │ ........ │ 00:00:37 v #6047 > > │ ........................................>>>>///............................. │ 00:00:37 v #6048 > > │ ............................................................................ │ 00:00:37 v #6049 > > │ ........ │ 00:00:37 v #6050 > > │ ...........................................>>/.............................. │ 00:00:37 v #6051 > > │ ............................................................................ │ 00:00:37 v #6052 > > │ ........ │ 00:00:37 v #6053 > > │ ............................................................................ │ 00:00:37 v #6054 > > │ ............................................................................ │ 00:00:37 v #6055 > > │ ........ │ 00:00:37 v #6056 > > │ ............................................................................ │ 00:00:37 v #6057 > > │ ............................................................................ │ 00:00:37 v #6058 > > │ ........ │ 00:00:37 v #6059 > > │ ............................................................................ │ 00:00:37 v #6060 > > │ ............................................................................ │ 00:00:37 v #6061 > > │ ........ │ 00:00:37 v #6062 > > │ ............................................................................ │ 00:00:37 v #6063 > > │ ............................................................................ │ 00:00:37 v #6064 > > │ ........ │ 00:00:37 v #6065 > > │ ............................................................................ │ 00:00:37 v #6066 > > │ ............................................................................ │ 00:00:37 v #6067 > > │ ........ │ 00:00:37 v #6068 > > │ ............................................................................ │ 00:00:37 v #6069 > > │ ............................................................................ │ 00:00:37 v #6070 > > │ ........ │ 00:00:37 v #6071 > > │ ............................................................................ │ 00:00:37 v #6072 > > │ ............................................................................ │ 00:00:37 v #6073 > > │ ........ │ 00:00:37 v #6074 > > │ ............................................................................ │ 00:00:37 v #6075 > > │ ............................................................................ │ 00:00:37 v #6076 > > │ ........ │ 00:00:37 v #6077 > > │ │ 00:00:37 v #6078 > > │ ............................................................................ │ 00:00:37 v #6079 > > │ ............................................................................ │ 00:00:37 v #6080 > > │ ........ │ 00:00:37 v #6081 > > │ ............................................................................ │ 00:00:37 v #6082 > > │ ............................................................................ │ 00:00:37 v #6083 > > │ ........ │ 00:00:37 v #6084 > > │ ............................................................................ │ 00:00:37 v #6085 > > │ ............................................................................ │ 00:00:37 v #6086 > > │ ........ │ 00:00:37 v #6087 > > │ ............................................................................ │ 00:00:37 v #6088 > > │ ............................................................................ │ 00:00:37 v #6089 > > │ ........ │ 00:00:37 v #6090 > > │ ............................................................................ │ 00:00:37 v #6091 > > │ ............................................................................ │ 00:00:37 v #6092 > > │ ........ │ 00:00:37 v #6093 > > │ ............................................................................ │ 00:00:37 v #6094 > > │ ............................................................................ │ 00:00:37 v #6095 > > │ ........ │ 00:00:37 v #6096 > > │ ............................................................................ │ 00:00:37 v #6097 > > │ ............................................................................ │ 00:00:37 v #6098 > > │ ........ │ 00:00:37 v #6099 > > │ .............................................;/............................. │ 00:00:37 v #6100 > > │ ............................................................................ │ 00:00:37 v #6101 > > │ ........ │ 00:00:37 v #6102 > > │ ...........................................;;////........................... │ 00:00:37 v #6103 > > │ ............................................................................ │ 00:00:37 v #6104 > > │ ........ │ 00:00:37 v #6105 > > │ ........................................;;////////<......................... │ 00:00:37 v #6106 > > │ ............................................................................ │ 00:00:37 v #6107 > > │ ........ │ 00:00:37 v #6108 > > │ ......................................;/////////////........................ │ 00:00:37 v #6109 > > │ ............................................................................ │ 00:00:37 v #6110 > > │ ........ │ 00:00:37 v #6111 > > │ ....................................;/////////////////...................... │ 00:00:37 v #6112 > > │ ............................................................................ │ 00:00:37 v #6113 > > │ ........ │ 00:00:37 v #6114 > > │ .................................;;////////////////////<.................... │ 00:00:37 v #6115 > > │ ............................................................................ │ 00:00:37 v #6116 > > │ ........ │ 00:00:37 v #6117 > > │ ...............................;/////////////////////////................... │ 00:00:37 v #6118 > > │ ............................................................................ │ 00:00:37 v #6119 > > │ ........ │ 00:00:37 v #6120 > > │ .............................;/////////////////////////////................. │ 00:00:37 v #6121 > > │ ............................................................................ │ 00:00:37 v #6122 > > │ ........ │ 00:00:37 v #6123 > > │ ..........................;;////////////////////////////////<............... │ 00:00:37 v #6124 > > │ ...............;;/.......................................................... │ 00:00:37 v #6125 > > │ ........ │ 00:00:37 v #6126 > > │ ........................;;////////////////////////////////////.............. │ 00:00:37 v #6127 > > │ ............;;//////........................................................ │ 00:00:37 v #6128 > > │ ........ │ 00:00:37 v #6129 > > │ ......................;/////////////////////////////////////////............ │ 00:00:37 v #6130 > > │ ..........;;//////////...................................................... │ 00:00:37 v #6131 > > │ ........ │ 00:00:37 v #6132 > > │ ...................;;////////////////////////////////////////////<.......... │ 00:00:37 v #6133 > > │ ........;;;////////////<....................;;.............................. │ 00:00:37 v #6134 > > │ ........ │ 00:00:37 v #6135 > > │ .................;;////////////////////////////////////////////////<........ │ 00:00:37 v #6136 > > │ ......;;/////////////////................;;;////............................ │ 00:00:37 v #6137 > > │ ........ │ 00:00:37 v #6138 > > │ ................;;>>>////////////////////////////////////////////////....... │ 00:00:37 v #6139 > > │ ....;;/////////////////////............\;;///////<.......................... │ 00:00:37 v #6140 > > │ ........ │ 00:00:37 v #6141 > > │ ................;>>>>>>///////////////////////////////////////////////...... │ 00:00:37 v #6142 > > │ .;;;;>>/////////////////////.........;;;>//////////......................... │ 00:00:37 v #6143 > > │ ........ │ 00:00:37 v #6144 > > │ ...............;>>>>>>>>/////////////////////////////////////////////....... │ 00:00:37 v #6145 > > │ .;>>>>>>>///////////////////.........;>>>>>////////......................... │ 00:00:37 v #6146 > > │ ........ │ 00:00:37 v #6147 > > │ ................>>>>>>>>>>/////////////////////////////////////////......... │ 00:00:37 v #6148 > > │ ..>>>>>>>>>///////////////.............>>>>>>////........................... │ 00:00:37 v #6149 > > │ ........ │ 00:00:37 v #6150 > > │ ..................>>>>>>>>>>>////////////////////////////////////........... │ 00:00:37 v #6151 > > │ ....>>>>>>>>>///////////................\>>>>>/............................. │ 00:00:37 v #6152 > > │ ........ │ 00:00:37 v #6153 > > │ ....................>>>>>>>>>>//////////////////////////////////............ │ 00:00:37 v #6154 > > │ ......>>>>>>>>////////...................................................... │ 00:00:37 v #6155 > > │ ........ │ 00:00:37 v #6156 > > │ ......................>>>>>>>>>>//////////////////////////////.............. │ 00:00:37 v #6157 > > │ ........>>>>>>>>////........................................................ │ 00:00:37 v #6158 > > │ ........ │ 00:00:37 v #6159 > > │ ........................>>>>>>>>>>///////////////////////////............... │ 00:00:37 v #6160 > > │ ..........>>>>>>>//......................................................... │ 00:00:37 v #6161 > > │ ........ │ 00:00:37 v #6162 > > │ ..........................>>>>>>>>>>///////////////////////................. │ 00:00:37 v #6163 > > │ ............................................................................ │ 00:00:37 v #6164 > > │ ........ │ 00:00:37 v #6165 > > │ ............................>>>>>>>>>>///////////////////................... │ 00:00:37 v #6166 > > │ ............................................................................ │ 00:00:37 v #6167 > > │ ........ │ 00:00:37 v #6168 > > │ ..............................>>>>>>>>>>////////////////.................... │ 00:00:37 v #6169 > > │ ............................................................................ │ 00:00:37 v #6170 > > │ ........ │ 00:00:37 v #6171 > > │ ................................>>>>>>>>>>////////////...................... │ 00:00:37 v #6172 > > │ ............................................................................ │ 00:00:37 v #6173 > > │ ........ │ 00:00:37 v #6174 > > │ ..................................>>>>>>>>>>////////........................ │ 00:00:37 v #6175 > > │ ............................................................................ │ 00:00:37 v #6176 > > │ ........ │ 00:00:37 v #6177 > > │ ....................................=>>>>>>>>>/////......................... │ 00:00:37 v #6178 > > │ ............................................................................ │ 00:00:37 v #6179 > > │ ........ │ 00:00:37 v #6180 > > │ ..........................................>>>>>//........................... │ 00:00:37 v #6181 > > │ ............................................................................ │ 00:00:37 v #6182 > > │ ........ │ 00:00:37 v #6183 > > │ .............................................../............................ │ 00:00:37 v #6184 > > │ ............................................................................ │ 00:00:37 v #6185 > > │ ........ │ 00:00:37 v #6186 > > │ ............................................................................ │ 00:00:37 v #6187 > > │ ............................................................................ │ 00:00:37 v #6188 > > │ ........ │ 00:00:37 v #6189 > > │ ............................................................................ │ 00:00:37 v #6190 > > │ ............................................................................ │ 00:00:37 v #6191 > > │ ........ │ 00:00:37 v #6192 > > │ ............................................................................ │ 00:00:37 v #6193 > > │ ............................................................................ │ 00:00:37 v #6194 > > │ ........ │ 00:00:37 v #6195 > > │ ............................................................................ │ 00:00:37 v #6196 > > │ ............................................................................ │ 00:00:37 v #6197 > > │ ........ │ 00:00:37 v #6198 > > │ ............................................................................ │ 00:00:37 v #6199 > > │ ............................................................................ │ 00:00:37 v #6200 > > │ ........ │ 00:00:37 v #6201 > > │ ............................................................................ │ 00:00:37 v #6202 > > │ ............................................................................ │ 00:00:37 v #6203 > > │ ........ │ 00:00:37 v #6204 > > │ ............................................................................ │ 00:00:37 v #6205 > > │ ............................................................................ │ 00:00:37 v #6206 > > │ ........ │ 00:00:37 v #6207 > > │ ............................................................................ │ 00:00:37 v #6208 > > │ ............................................................................ │ 00:00:37 v #6209 > > │ ........ │ 00:00:37 v #6210 > > │ │ 00:00:37 v #6211 > > │ ............................................................................ │ 00:00:37 v #6212 > > │ ............................................................................ │ 00:00:37 v #6213 > > │ ........ │ 00:00:37 v #6214 > > │ ............................................................................ │ 00:00:37 v #6215 > > │ ............................................................................ │ 00:00:37 v #6216 > > │ ........ │ 00:00:37 v #6217 > > │ ............................................................................ │ 00:00:37 v #6218 > > │ ............................................................................ │ 00:00:37 v #6219 > > │ ........ │ 00:00:37 v #6220 > > │ ............................................................................ │ 00:00:37 v #6221 > > │ ............................................................................ │ 00:00:37 v #6222 > > │ ........ │ 00:00:37 v #6223 > > │ ............................................................................ │ 00:00:37 v #6224 > > │ ............................................................................ │ 00:00:37 v #6225 > > │ ........ │ 00:00:37 v #6226 > > │ ............................................................................ │ 00:00:37 v #6227 > > │ ............................................................................ │ 00:00:37 v #6228 > > │ ........ │ 00:00:37 v #6229 > > │ ............................................................................ │ 00:00:37 v #6230 > > │ ............................................................................ │ 00:00:37 v #6231 > > │ ........ │ 00:00:37 v #6232 > > │ ............................................;;.............................. │ 00:00:37 v #6233 > > │ ............................................................................ │ 00:00:37 v #6234 > > │ ........ │ 00:00:37 v #6235 > > │ ..........................................;;////............................ │ 00:00:37 v #6236 > > │ ............................................................................ │ 00:00:37 v #6237 > > │ ........ │ 00:00:37 v #6238 > > │ ........................................;;////////.......................... │ 00:00:37 v #6239 > > │ ............................................................................ │ 00:00:37 v #6240 > > │ ........ │ 00:00:37 v #6241 > > │ ......................................;////////////<........................ │ 00:00:37 v #6242 > > │ ............................................................................ │ 00:00:37 v #6243 > > │ ........ │ 00:00:37 v #6244 > > │ ....................................;////////////////<...................... │ 00:00:37 v #6245 > > │ ............................................................................ │ 00:00:37 v #6246 > > │ ........ │ 00:00:37 v #6247 > > │ ..................................;////////////////////<.................... │ 00:00:37 v #6248 > > │ ............................................................................ │ 00:00:37 v #6249 > > │ ........ │ 00:00:37 v #6250 > > │ ................................;////////////////////////<.................. │ 00:00:37 v #6251 > > │ ............................................................................ │ 00:00:37 v #6252 > > │ ........ │ 00:00:37 v #6253 > > │ ..............................;////////////////////////////................. │ 00:00:37 v #6254 > > │ ............................................................................ │ 00:00:37 v #6255 > > │ ........ │ 00:00:37 v #6256 > > │ ............................;////////////////////////////////............... │ 00:00:37 v #6257 > > │ ..............;;//.......................................................... │ 00:00:37 v #6258 > > │ ........ │ 00:00:37 v #6259 > > │ ..........................;////////////////////////////////////............. │ 00:00:37 v #6260 > > │ ............;;//////........................................................ │ 00:00:37 v #6261 > > │ ........ │ 00:00:37 v #6262 > > │ ........................;///////////////////////////////////////<........... │ 00:00:37 v #6263 > > │ .........;;;//////////...................................................... │ 00:00:37 v #6264 > > │ ........ │ 00:00:37 v #6265 > > │ ......................;///////////////////////////////////////////<......... │ 00:00:37 v #6266 > > │ .......\;;//////////////....................;<.............................. │ 00:00:37 v #6267 > > │ ........ │ 00:00:37 v #6268 > > │ ....................;;//////////////////////////////////////////////<....... │ 00:00:37 v #6269 > > │ ......;;;/////////////////...............;;;///<............................ │ 00:00:37 v #6270 > > │ ........ │ 00:00:37 v #6271 > > │ ..................;;>////////////////////////////////////////////////....... │ 00:00:37 v #6272 > > │ ....;;;/////////////////////...........;;;///////<.......................... │ 00:00:37 v #6273 > > │ ........ │ 00:00:37 v #6274 > > │ ................;;>>>>>//////////////////////////////////////////////....... │ 00:00:37 v #6275 > > │ ..;;;;>/////////////////////..........;;;//////////......................... │ 00:00:37 v #6276 > > │ ........ │ 00:00:37 v #6277 > > │ ...............;;>>>>>>>>//////////////////////////////////////////......... │ 00:00:37 v #6278 > > │ \;;>>>>>>//////////////////..........;;>>>>////////......................... │ 00:00:37 v #6279 > > │ ........ │ 00:00:37 v #6280 > > │ ..............;>>>>>>>>>>>>///////////////////////////////////////.......... │ 00:00:37 v #6281 > > │ .>>>>>>>>>>///////////////.............>>>>>>////........................... │ 00:00:37 v #6282 > > │ ........ │ 00:00:37 v #6283 > > │ ................>>>>>>>>>>>>>////////////////////////////////////........... │ 00:00:37 v #6284 > > │ ....>>>>>>>>>>//////////.................>>>>>/............................. │ 00:00:37 v #6285 > > │ ........ │ 00:00:37 v #6286 > > │ ..................>>>>>>>>>>>>>>///////////////////////////////............. │ 00:00:37 v #6287 > > │ .....\>>>>>>>>>////////...................=................................. │ 00:00:37 v #6288 > > │ ........ │ 00:00:37 v #6289 > > │ ....................\>>>>>>>>>>>>>////////////////////////////.............. │ 00:00:37 v #6290 > > │ ........>>>>>>>>>////....................................................... │ 00:00:37 v #6291 > > │ ........ │ 00:00:37 v #6292 > > │ .......................>>>>>>>>>>>>>/////////////////////////............... │ 00:00:37 v #6293 > > │ ..........>>>>>>>>>/........................................................ │ 00:00:37 v #6294 > > │ ........ │ 00:00:37 v #6295 > > │ .........................>>>>>>>>>>>>>/////////////////////................. │ 00:00:37 v #6296 > > │ ............................................................................ │ 00:00:37 v #6297 > > │ ........ │ 00:00:37 v #6298 > > │ ...........................>>>>>>>>>>>>>//////////////////.................. │ 00:00:37 v #6299 > > │ ............................................................................ │ 00:00:37 v #6300 > > │ ........ │ 00:00:37 v #6301 > > │ .............................>>>>>>>>>>>>>///////////////................... │ 00:00:37 v #6302 > > │ ............................................................................ │ 00:00:37 v #6303 > > │ ........ │ 00:00:37 v #6304 > > │ ...............................>>>>>>>>>>>>>>//////////..................... │ 00:00:37 v #6305 > > │ ............................................................................ │ 00:00:37 v #6306 > > │ ........ │ 00:00:37 v #6307 > > │ ..................................>>>>>>>>>>>>>///////...................... │ 00:00:37 v #6308 > > │ ............................................................................ │ 00:00:37 v #6309 > > │ ........ │ 00:00:37 v #6310 > > │ ....................................=>>>>>>>>>>>>////....................... │ 00:00:37 v #6311 > > │ ............................................................................ │ 00:00:37 v #6312 > > │ ........ │ 00:00:37 v #6313 > > │ ............................................=>>>>>/......................... │ 00:00:37 v #6314 > > │ ............................................................................ │ 00:00:37 v #6315 > > │ ........ │ 00:00:37 v #6316 > > │ ............................................................................ │ 00:00:37 v #6317 > > │ ............................................................................ │ 00:00:37 v #6318 > > │ ........ │ 00:00:37 v #6319 > > │ ............................................................................ │ 00:00:37 v #6320 > > │ ............................................................................ │ 00:00:37 v #6321 > > │ ........ │ 00:00:37 v #6322 > > │ ............................................................................ │ 00:00:37 v #6323 > > │ ............................................................................ │ 00:00:37 v #6324 > > │ ........ │ 00:00:37 v #6325 > > │ ............................................................................ │ 00:00:37 v #6326 > > │ ............................................................................ │ 00:00:37 v #6327 > > │ ........ │ 00:00:37 v #6328 > > │ ............................................................................ │ 00:00:37 v #6329 > > │ ............................................................................ │ 00:00:37 v #6330 > > │ ........ │ 00:00:37 v #6331 > > │ ............................................................................ │ 00:00:37 v #6332 > > │ ............................................................................ │ 00:00:37 v #6333 > > │ ........ │ 00:00:37 v #6334 > > │ ............................................................................ │ 00:00:37 v #6335 > > │ ............................................................................ │ 00:00:37 v #6336 > > │ ........ │ 00:00:37 v #6337 > > │ ............................................................................ │ 00:00:37 v #6338 > > │ ............................................................................ │ 00:00:37 v #6339 > > │ ........ │ 00:00:37 v #6340 > > │ ............................................................................ │ 00:00:37 v #6341 > > │ ............................................................................ │ 00:00:37 v #6342 > > │ ........ │ 00:00:37 v #6343 > > │ │ 00:00:37 v #6344 > > │ ............................................................................ │ 00:00:37 v #6345 > > │ ............................................................................ │ 00:00:37 v #6346 > > │ ........ │ 00:00:37 v #6347 > > │ ............................................................................ │ 00:00:37 v #6348 > > │ ............................................................................ │ 00:00:37 v #6349 > > │ ........ │ 00:00:37 v #6350 > > │ ............................................................................ │ 00:00:37 v #6351 > > │ ............................................................................ │ 00:00:37 v #6352 > > │ ........ │ 00:00:37 v #6353 > > │ ............................................................................ │ 00:00:37 v #6354 > > │ ............................................................................ │ 00:00:37 v #6355 > > │ ........ │ 00:00:37 v #6356 > > │ ............................................................................ │ 00:00:37 v #6357 > > │ ............................................................................ │ 00:00:37 v #6358 > > │ ........ │ 00:00:37 v #6359 > > │ ............................................................................ │ 00:00:37 v #6360 > > │ ............................................................................ │ 00:00:37 v #6361 > > │ ........ │ 00:00:37 v #6362 > > │ ............................................................................ │ 00:00:37 v #6363 > > │ ............................................................................ │ 00:00:37 v #6364 > > │ ........ │ 00:00:37 v #6365 > > │ ...........................................;/<.............................. │ 00:00:37 v #6366 > > │ ............................................................................ │ 00:00:37 v #6367 > > │ ........ │ 00:00:37 v #6368 > > │ .........................................;;////<............................ │ 00:00:37 v #6369 > > │ ............................................................................ │ 00:00:37 v #6370 > > │ ........ │ 00:00:37 v #6371 > > │ .......................................;;////////<.......................... │ 00:00:37 v #6372 > > │ ............................................................................ │ 00:00:37 v #6373 > > │ ........ │ 00:00:37 v #6374 > > │ .....................................;;////////////<........................ │ 00:00:37 v #6375 > > │ ............................................................................ │ 00:00:37 v #6376 > > │ ........ │ 00:00:37 v #6377 > > │ ...................................;;;///////////////<...................... │ 00:00:37 v #6378 > > │ ............................................................................ │ 00:00:37 v #6379 > > │ ........ │ 00:00:37 v #6380 > > │ .................................;;////////////////////<.................... │ 00:00:37 v #6381 > > │ ............................................................................ │ 00:00:37 v #6382 > > │ ........ │ 00:00:37 v #6383 > > │ ................................;;///////////////////////<.................. │ 00:00:37 v #6384 > > │ ............................................................................ │ 00:00:37 v #6385 > > │ ........ │ 00:00:37 v #6386 > > │ ..............................;;///////////////////////////<................ │ 00:00:37 v #6387 > > │ ............................................................................ │ 00:00:37 v #6388 > > │ ........ │ 00:00:37 v #6389 > > │ ............................;;///////////////////////////////<.............. │ 00:00:37 v #6390 > > │ ..............;;//.......................................................... │ 00:00:37 v #6391 > > │ ........ │ 00:00:37 v #6392 > > │ ..........................;;;//////////////////////////////////............. │ 00:00:37 v #6393 > > │ ...........;;;//////........................................................ │ 00:00:37 v #6394 > > │ ........ │ 00:00:37 v #6395 > > │ .........................;;//////////////////////////////////////........... │ 00:00:37 v #6396 > > │ .........;;;//////////...................................................... │ 00:00:37 v #6397 > > │ ........ │ 00:00:37 v #6398 > > │ .......................;;//////////////////////////////////////////<........ │ 00:00:37 v #6399 > > │ .......;;;;/////////////....................;/.............................. │ 00:00:37 v #6400 > > │ ........ │ 00:00:37 v #6401 > > │ .....................;;//////////////////////////////////////////////....... │ 00:00:37 v #6402 > > │ .....;;;;/////////////////...............;;;////............................ │ 00:00:37 v #6403 > > │ ........ │ 00:00:37 v #6404 > > │ ...................;;;///////////////////////////////////////////////....... │ 00:00:37 v #6405 > > │ ....;;;;////////////////////...........;;;////////.......................... │ 00:00:37 v #6406 > > │ ........ │ 00:00:37 v #6407 > > │ ..................;;>>>>////////////////////////////////////////////........ │ 00:00:37 v #6408 > > │ ..;;;;;>////////////////////..........;;;//////////......................... │ 00:00:37 v #6409 > > │ ........ │ 00:00:37 v #6410 > > │ ................;;>>>>>>>>////////////////////////////////////////.......... │ 00:00:37 v #6411 > > │ .;;;>>>>>>/////////////////..........;;>>>>///////.......................... │ 00:00:37 v #6412 > > │ ........ │ 00:00:37 v #6413 > > │ ..............;;>>>>>>>>>>>>/////////////////////////////////////........... │ 00:00:37 v #6414 > > │ ;>>>>>>>>>>>/////////////.............>>>>>>>>///........................... │ 00:00:37 v #6415 > > │ ........ │ 00:00:37 v #6416 > > │ ..............>>>>>>>>>>>>>>>>>/////////////////////////////////............ │ 00:00:37 v #6417 > > │ ...>>>>>>>>>>>//////////................\>>>>>>/............................ │ 00:00:37 v #6418 > > │ ........ │ 00:00:37 v #6419 > > │ ................\>>>>>>>>>>>>>>>>//////////////////////////////............. │ 00:00:37 v #6420 > > │ .....>>>>>>>>>>>///////....................=................................ │ 00:00:37 v #6421 > > │ ........ │ 00:00:37 v #6422 > > │ ...................>>>>>>>>>>>>>>>>///////////////////////////.............. │ 00:00:37 v #6423 > > │ .......>>>>>>>>>>>>///...................................................... │ 00:00:37 v #6424 > > │ ........ │ 00:00:37 v #6425 > > │ .....................\>>>>>>>>>>>>>>>>///////////////////////............... │ 00:00:37 v #6426 > > │ ..........>>>>>>>>>>........................................................ │ 00:00:37 v #6427 > > │ ........ │ 00:00:37 v #6428 > > │ ........................>>>>>>>>>>>>>>>>////////////////////................ │ 00:00:37 v #6429 > > │ ............................................................................ │ 00:00:37 v #6430 > > │ ........ │ 00:00:37 v #6431 > > │ ..........................>>>>>>>>>>>>>>>>/////////////////................. │ 00:00:37 v #6432 > > │ ............................................................................ │ 00:00:37 v #6433 > > │ ........ │ 00:00:37 v #6434 > > │ .............................>>>>>>>>>>>>>>>>/////////////.................. │ 00:00:37 v #6435 > > │ ............................................................................ │ 00:00:37 v #6436 > > │ ........ │ 00:00:37 v #6437 > > │ ...............................>>>>>>>>>>>>>>>>/////////.................... │ 00:00:37 v #6438 > > │ ............................................................................ │ 00:00:37 v #6439 > > │ ........ │ 00:00:37 v #6440 > > │ ..................................>>>>>>>>>>>>>>>>/////..................... │ 00:00:37 v #6441 > > │ ............................................................................ │ 00:00:37 v #6442 > > │ ........ │ 00:00:37 v #6443 > > │ ....................................=>>>>>>>>>>>>>>>//...................... │ 00:00:37 v #6444 > > │ ............................................................................ │ 00:00:37 v #6445 > > │ ........ │ 00:00:37 v #6446 > > │ .................................................>>>>....................... │ 00:00:37 v #6447 > > │ ............................................................................ │ 00:00:37 v #6448 > > │ ........ │ 00:00:37 v #6449 > > │ ............................................................................ │ 00:00:37 v #6450 > > │ ............................................................................ │ 00:00:37 v #6451 > > │ ........ │ 00:00:37 v #6452 > > │ ............................................................................ │ 00:00:37 v #6453 > > │ ............................................................................ │ 00:00:37 v #6454 > > │ ........ │ 00:00:37 v #6455 > > │ ............................................................................ │ 00:00:37 v #6456 > > │ ............................................................................ │ 00:00:37 v #6457 > > │ ........ │ 00:00:37 v #6458 > > │ ............................................................................ │ 00:00:37 v #6459 > > │ ............................................................................ │ 00:00:37 v #6460 > > │ ........ │ 00:00:37 v #6461 > > │ ............................................................................ │ 00:00:37 v #6462 > > │ ............................................................................ │ 00:00:37 v #6463 > > │ ........ │ 00:00:37 v #6464 > > │ ............................................................................ │ 00:00:37 v #6465 > > │ ............................................................................ │ 00:00:37 v #6466 > > │ ........ │ 00:00:37 v #6467 > > │ ............................................................................ │ 00:00:37 v #6468 > > │ ............................................................................ │ 00:00:37 v #6469 > > │ ........ │ 00:00:37 v #6470 > > │ ............................................................................ │ 00:00:37 v #6471 > > │ ............................................................................ │ 00:00:37 v #6472 > > │ ........ │ 00:00:37 v #6473 > > │ ............................................................................ │ 00:00:37 v #6474 > > │ ............................................................................ │ 00:00:37 v #6475 > > │ ........ │ 00:00:37 v #6476 > > │ │ 00:00:37 v #6477 > > │ ............................................................................ │ 00:00:37 v #6478 > > │ ............................................................................ │ 00:00:37 v #6479 > > │ ........ │ 00:00:37 v #6480 > > │ ............................................................................ │ 00:00:37 v #6481 > > │ ............................................................................ │ 00:00:37 v #6482 > > │ ........ │ 00:00:37 v #6483 > > │ ............................................................................ │ 00:00:37 v #6484 > > │ ............................................................................ │ 00:00:37 v #6485 > > │ ........ │ 00:00:37 v #6486 > > │ ............................................................................ │ 00:00:37 v #6487 > > │ ............................................................................ │ 00:00:37 v #6488 > > │ ........ │ 00:00:37 v #6489 > > │ ............................................................................ │ 00:00:37 v #6490 > > │ ............................................................................ │ 00:00:37 v #6491 > > │ ........ │ 00:00:37 v #6492 > > │ ............................................................................ │ 00:00:37 v #6493 > > │ ............................................................................ │ 00:00:37 v #6494 > > │ ........ │ 00:00:37 v #6495 > > │ ............................................................................ │ 00:00:37 v #6496 > > │ ............................................................................ │ 00:00:37 v #6497 > > │ ........ │ 00:00:37 v #6498 > > │ ..........................................;//............................... │ 00:00:37 v #6499 > > │ ............................................................................ │ 00:00:37 v #6500 > > │ ........ │ 00:00:37 v #6501 > > │ ........................................;;/////............................. │ 00:00:37 v #6502 > > │ ............................................................................ │ 00:00:37 v #6503 > > │ ........ │ 00:00:37 v #6504 > > │ ......................................;;/////////........................... │ 00:00:37 v #6505 > > │ ............................................................................ │ 00:00:37 v #6506 > > │ ........ │ 00:00:37 v #6507 > > │ ....................................;;;////////////......................... │ 00:00:37 v #6508 > > │ ............................................................................ │ 00:00:37 v #6509 > > │ ........ │ 00:00:37 v #6510 > > │ ..................................;;;////////////////....................... │ 00:00:37 v #6511 > > │ ............................................................................ │ 00:00:37 v #6512 > > │ ........ │ 00:00:37 v #6513 > > │ ................................;;;;///////////////////<.................... │ 00:00:37 v #6514 > > │ ............................................................................ │ 00:00:37 v #6515 > > │ ........ │ 00:00:37 v #6516 > > │ ..............................;;;;///////////////////////<.................. │ 00:00:37 v #6517 > > │ ............................................................................ │ 00:00:37 v #6518 > > │ ........ │ 00:00:37 v #6519 > > │ .............................;;;;//////////////////////////<................ │ 00:00:37 v #6520 > > │ ............................................................................ │ 00:00:37 v #6521 > > │ ........ │ 00:00:37 v #6522 > > │ ...........................;;;;///////////////////////////////.............. │ 00:00:37 v #6523 > > │ .............;;;//.......................................................... │ 00:00:37 v #6524 > > │ ........ │ 00:00:37 v #6525 > > │ ..........................;;;;//////////////////////////////////............ │ 00:00:37 v #6526 > > │ ..........;;;;//////........................................................ │ 00:00:37 v #6527 > > │ ........ │ 00:00:37 v #6528 > > │ ........................;;;;//////////////////////////////////////.......... │ 00:00:37 v #6529 > > │ ........;;;;;/////////...................................................... │ 00:00:37 v #6530 > > │ ........ │ 00:00:37 v #6531 > > │ ......................;;;;;/////////////////////////////////////////........ │ 00:00:37 v #6532 > > │ .......;;;;/////////////<..................<;<.............................. │ 00:00:37 v #6533 > > │ ........ │ 00:00:37 v #6534 > > │ .....................;;;;///////////////////////////////////////////........ │ 00:00:37 v #6535 > > │ .....;;;;;/////////////////..............;;;////............................ │ 00:00:37 v #6536 > > │ ........ │ 00:00:37 v #6537 > > │ ...................;;;;;////////////////////////////////////////////........ │ 00:00:37 v #6538 > > │ ....;;;;////////////////////...........;;;;///////.......................... │ 00:00:37 v #6539 > > │ ........ │ 00:00:37 v #6540 > > │ ..................;;;;;>///////////////////////////////////////////......... │ 00:00:37 v #6541 > > │ ..;;;;;>////////////////////..........;;;//////////......................... │ 00:00:37 v #6542 > > │ ........ │ 00:00:37 v #6543 > > │ ................;;;;;>>>>>////////////////////////////////////////.......... │ 00:00:37 v #6544 > > │ .;;;;;>>>>/////////////////..........;;;>>>>//////.......................... │ 00:00:37 v #6545 > > │ ........ │ 00:00:37 v #6546 > > │ ...............;;;>>>>>>>>>>>////////////////////////////////////........... │ 00:00:37 v #6547 > > │ ;;>>>>>>>>>>>/////////////............>>>>>>>>///........................... │ 00:00:37 v #6548 > > │ ........ │ 00:00:37 v #6549 > > │ .............;;;>>>>>>>>>>>>>>>>////////////////////////////////............ │ 00:00:37 v #6550 > > │ ..>>>>>>>>>>>>>/////////................>>>>>>>/............................ │ 00:00:37 v #6551 > > │ ........ │ 00:00:37 v #6552 > > │ ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////............. │ 00:00:37 v #6553 > > │ .....>>>>>>>>>>>>>/////....................>................................ │ 00:00:37 v #6554 > > │ ........ │ 00:00:37 v #6555 > > │ .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.............. │ 00:00:37 v #6556 > > │ .......>>>>>>>>>>>>>//...................................................... │ 00:00:37 v #6557 > > │ ........ │ 00:00:37 v #6558 > > │ ....................>>>>>>>>>>>>>>>>>>>>/////////////////////............... │ 00:00:37 v #6559 > > │ ..........>>>>>>>>>>>....................................................... │ 00:00:37 v #6560 > > │ ........ │ 00:00:37 v #6561 > > │ .......................>>>>>>>>>>>>>>>>>>>//////////////////................ │ 00:00:37 v #6562 > > │ ............................................................................ │ 00:00:37 v #6563 > > │ ........ │ 00:00:37 v #6564 > > │ ..........................>>>>>>>>>>>>>>>>>>>//////////////................. │ 00:00:37 v #6565 > > │ ............................................................................ │ 00:00:37 v #6566 > > │ ........ │ 00:00:37 v #6567 > > │ ............................>>>>>>>>>>>>>>>>>>>>///////////................. │ 00:00:37 v #6568 > > │ ............................................................................ │ 00:00:37 v #6569 > > │ ........ │ 00:00:37 v #6570 > > │ ...............................>>>>>>>>>>>>>>>>>>>////////.................. │ 00:00:37 v #6571 > > │ ............................................................................ │ 00:00:37 v #6572 > > │ ........ │ 00:00:37 v #6573 > > │ ..................................>>>>>>>>>>>>>>>>>>>////................... │ 00:00:37 v #6574 > > │ ............................................................................ │ 00:00:37 v #6575 > > │ ........ │ 00:00:37 v #6576 > > │ .....................................>>>>>>>>>>>>>>>>>>/.................... │ 00:00:37 v #6577 > > │ ............................................................................ │ 00:00:37 v #6578 > > │ ........ │ 00:00:37 v #6579 > > │ ............................................................................ │ 00:00:37 v #6580 > > │ ............................................................................ │ 00:00:37 v #6581 > > │ ........ │ 00:00:37 v #6582 > > │ ............................................................................ │ 00:00:37 v #6583 > > │ ............................................................................ │ 00:00:37 v #6584 > > │ ........ │ 00:00:37 v #6585 > > │ ............................................................................ │ 00:00:37 v #6586 > > │ ............................................................................ │ 00:00:37 v #6587 > > │ ........ │ 00:00:37 v #6588 > > │ ............................................................................ │ 00:00:37 v #6589 > > │ ............................................................................ │ 00:00:37 v #6590 > > │ ........ │ 00:00:37 v #6591 > > │ ............................................................................ │ 00:00:37 v #6592 > > │ ............................................................................ │ 00:00:37 v #6593 > > │ ........ │ 00:00:37 v #6594 > > │ ............................................................................ │ 00:00:37 v #6595 > > │ ............................................................................ │ 00:00:37 v #6596 > > │ ........ │ 00:00:37 v #6597 > > │ ............................................................................ │ 00:00:37 v #6598 > > │ ............................................................................ │ 00:00:37 v #6599 > > │ ........ │ 00:00:37 v #6600 > > │ ............................................................................ │ 00:00:37 v #6601 > > │ ............................................................................ │ 00:00:37 v #6602 > > │ ........ │ 00:00:37 v #6603 > > │ ............................................................................ │ 00:00:37 v #6604 > > │ ............................................................................ │ 00:00:37 v #6605 > > │ ........ │ 00:00:37 v #6606 > > │ ............................................................................ │ 00:00:37 v #6607 > > │ ............................................................................ │ 00:00:37 v #6608 > > │ ........ │ 00:00:37 v #6609 > > │ │ 00:00:37 v #6610 > > │ ............................................................................ │ 00:00:37 v #6611 > > │ ............................................................................ │ 00:00:37 v #6612 > > │ ........ │ 00:00:37 v #6613 > > │ ............................................................................ │ 00:00:37 v #6614 > > │ ............................................................................ │ 00:00:37 v #6615 > > │ ........ │ 00:00:37 v #6616 > > │ ............................................................................ │ 00:00:37 v #6617 > > │ ............................................................................ │ 00:00:37 v #6618 > > │ ........ │ 00:00:37 v #6619 > > │ ............................................................................ │ 00:00:37 v #6620 > > │ ............................................................................ │ 00:00:37 v #6621 > > │ ........ │ 00:00:37 v #6622 > > │ ............................................................................ │ 00:00:37 v #6623 > > │ ............................................................................ │ 00:00:37 v #6624 > > │ ........ │ 00:00:37 v #6625 > > │ ............................................................................ │ 00:00:37 v #6626 > > │ ............................................................................ │ 00:00:37 v #6627 > > │ ........ │ 00:00:37 v #6628 > > │ ............................................................................ │ 00:00:37 v #6629 > > │ ............................................................................ │ 00:00:37 v #6630 > > │ ........ │ 00:00:37 v #6631 > > │ .........................................;;/................................ │ 00:00:37 v #6632 > > │ ............................................................................ │ 00:00:37 v #6633 > > │ ........ │ 00:00:37 v #6634 > > │ .......................................;;/////<............................. │ 00:00:37 v #6635 > > │ ............................................................................ │ 00:00:37 v #6636 > > │ ........ │ 00:00:37 v #6637 > > │ .....................................;;;/////////........................... │ 00:00:37 v #6638 > > │ ............................................................................ │ 00:00:37 v #6639 > > │ ........ │ 00:00:37 v #6640 > > │ ...................................;;;;////////////......................... │ 00:00:37 v #6641 > > │ ............................................................................ │ 00:00:37 v #6642 > > │ ........ │ 00:00:37 v #6643 > > │ .................................;;;;;///////////////....................... │ 00:00:37 v #6644 > > │ ............................................................................ │ 00:00:37 v #6645 > > │ ........ │ 00:00:37 v #6646 > > │ ...............................;;;;;///////////////////<.................... │ 00:00:37 v #6647 > > │ ............................................................................ │ 00:00:37 v #6648 > > │ ........ │ 00:00:37 v #6649 > > │ .............................;;;;;;//////////////////////<.................. │ 00:00:37 v #6650 > > │ ............................................................................ │ 00:00:37 v #6651 > > │ ........ │ 00:00:37 v #6652 > > │ ...........................;;;;;;;//////////////////////////................ │ 00:00:37 v #6653 > > │ ............................................................................ │ 00:00:37 v #6654 > > │ ........ │ 00:00:37 v #6655 > > │ ..........................;;;;;;//////////////////////////////.............. │ 00:00:37 v #6656 > > │ .............;;//<.......................................................... │ 00:00:37 v #6657 > > │ ........ │ 00:00:37 v #6658 > > │ .........................;;;;;;/////////////////////////////////............ │ 00:00:37 v #6659 > > │ ..........;;;;//////........................................................ │ 00:00:37 v #6660 > > │ ........ │ 00:00:37 v #6661 > > │ .......................;;;;;;;////////////////////////////////////<......... │ 00:00:37 v #6662 > > │ .......;;;;;;/////////<..................................................... │ 00:00:37 v #6663 > > │ ........ │ 00:00:37 v #6664 > > │ ......................;;;;;;;///////////////////////////////////////........ │ 00:00:37 v #6665 > > │ ......;;;;;//////////////..................;;............................... │ 00:00:37 v #6666 > > │ ........ │ 00:00:37 v #6667 > > │ .....................;;;;;;////////////////////////////////////////......... │ 00:00:37 v #6668 > > │ .....;;;;;;////////////////.............;;;;////............................ │ 00:00:37 v #6669 > > │ ........ │ 00:00:37 v #6670 > > │ ...................;;;;;;;////////////////////////////////////////.......... │ 00:00:37 v #6671 > > │ ....;;;;;;//////////////////...........;;;;///////<......................... │ 00:00:37 v #6672 > > │ ........ │ 00:00:37 v #6673 > > │ ..................;;;;;;;/////////////////////////////////////////.......... │ 00:00:37 v #6674 > > │ ..\;;;;;///////////////////...........;;;;/////////......................... │ 00:00:37 v #6675 > > │ ........ │ 00:00:37 v #6676 > > │ .................;;;;;;;>>>//////////////////////////////////////........... │ 00:00:37 v #6677 > > │ .;;;;;;>>>>///////////////...........;;;;>>>//////.......................... │ 00:00:37 v #6678 > > │ ........ │ 00:00:37 v #6679 > > │ ...............;;;;;;>>>>>>>>>>/////////////////////////////////............ │ 00:00:37 v #6680 > > │ ;;;>>>>>>>>>>////////////............\>>>>>>>>>//........................... │ 00:00:37 v #6681 > > │ ........ │ 00:00:37 v #6682 > > │ ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////............ │ 00:00:37 v #6683 > > │ .>>>>>>>>>>>>>>>/////////...............>>>>>>>>............................ │ 00:00:37 v #6684 > > │ ........ │ 00:00:37 v #6685 > > │ .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////............. │ 00:00:37 v #6686 > > │ ....>>>>>>>>>>>>>>>/////...................>................................ │ 00:00:37 v #6687 > > │ ........ │ 00:00:37 v #6688 > > │ ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.............. │ 00:00:37 v #6689 > > │ .......>>>>>>>>>>>>>>>/..................................................... │ 00:00:37 v #6690 > > │ ........ │ 00:00:37 v #6691 > > │ ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.............. │ 00:00:37 v #6692 > > │ ..........>>>>>>>>>>>/...................................................... │ 00:00:37 v #6693 > > │ ........ │ 00:00:37 v #6694 > > │ .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////............... │ 00:00:37 v #6695 > > │ ............................................................................ │ 00:00:37 v #6696 > > │ ........ │ 00:00:37 v #6697 > > │ ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////................ │ 00:00:37 v #6698 > > │ ............................................................................ │ 00:00:37 v #6699 > > │ ........ │ 00:00:37 v #6700 > > │ ............................>>>>>>>>>>>>>>>>>>>>>>>/////////................ │ 00:00:37 v #6701 > > │ ............................................................................ │ 00:00:37 v #6702 > > │ ........ │ 00:00:37 v #6703 > > │ ...............................>>>>>>>>>>>>>>>>>>>>>>>/////................. │ 00:00:37 v #6704 > > │ ............................................................................ │ 00:00:37 v #6705 > > │ ........ │ 00:00:37 v #6706 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>//.................. │ 00:00:37 v #6707 > > │ ............................................................................ │ 00:00:37 v #6708 > > │ ........ │ 00:00:37 v #6709 > > │ .....................................>>>>>>>>>>>>>>>>>>>>/.................. │ 00:00:37 v #6710 > > │ ............................................................................ │ 00:00:37 v #6711 > > │ ........ │ 00:00:37 v #6712 > > │ ............................................................................ │ 00:00:37 v #6713 > > │ ............................................................................ │ 00:00:37 v #6714 > > │ ........ │ 00:00:37 v #6715 > > │ ............................................................................ │ 00:00:37 v #6716 > > │ ............................................................................ │ 00:00:37 v #6717 > > │ ........ │ 00:00:37 v #6718 > > │ ............................................................................ │ 00:00:37 v #6719 > > │ ............................................................................ │ 00:00:37 v #6720 > > │ ........ │ 00:00:37 v #6721 > > │ ............................................................................ │ 00:00:37 v #6722 > > │ ............................................................................ │ 00:00:37 v #6723 > > │ ........ │ 00:00:37 v #6724 > > │ ............................................................................ │ 00:00:37 v #6725 > > │ ............................................................................ │ 00:00:37 v #6726 > > │ ........ │ 00:00:37 v #6727 > > │ ............................................................................ │ 00:00:37 v #6728 > > │ ............................................................................ │ 00:00:37 v #6729 > > │ ........ │ 00:00:37 v #6730 > > │ ............................................................................ │ 00:00:37 v #6731 > > │ ............................................................................ │ 00:00:37 v #6732 > > │ ........ │ 00:00:37 v #6733 > > │ ............................................................................ │ 00:00:37 v #6734 > > │ ............................................................................ │ 00:00:37 v #6735 > > │ ........ │ 00:00:37 v #6736 > > │ ............................................................................ │ 00:00:37 v #6737 > > │ ............................................................................ │ 00:00:37 v #6738 > > │ ........ │ 00:00:37 v #6739 > > │ ............................................................................ │ 00:00:37 v #6740 > > │ ............................................................................ │ 00:00:37 v #6741 > > │ ........ │ 00:00:37 v #6742 > > │ │ 00:00:37 v #6743 > > │ ............................................................................ │ 00:00:37 v #6744 > > │ ............................................................................ │ 00:00:37 v #6745 > > │ ........ │ 00:00:37 v #6746 > > │ ............................................................................ │ 00:00:37 v #6747 > > │ ............................................................................ │ 00:00:37 v #6748 > > │ ........ │ 00:00:37 v #6749 > > │ ............................................................................ │ 00:00:37 v #6750 > > │ ............................................................................ │ 00:00:37 v #6751 > > │ ........ │ 00:00:37 v #6752 > > │ ............................................................................ │ 00:00:37 v #6753 > > │ ............................................................................ │ 00:00:37 v #6754 > > │ ........ │ 00:00:37 v #6755 > > │ ............................................................................ │ 00:00:37 v #6756 > > │ ............................................................................ │ 00:00:37 v #6757 > > │ ........ │ 00:00:37 v #6758 > > │ ............................................................................ │ 00:00:37 v #6759 > > │ ............................................................................ │ 00:00:37 v #6760 > > │ ........ │ 00:00:37 v #6761 > > │ ............................................................................ │ 00:00:37 v #6762 > > │ ............................................................................ │ 00:00:37 v #6763 > > │ ........ │ 00:00:37 v #6764 > > │ ........................................;;/<................................ │ 00:00:37 v #6765 > > │ ............................................................................ │ 00:00:37 v #6766 > > │ ........ │ 00:00:37 v #6767 > > │ ......................................;;;/////.............................. │ 00:00:37 v #6768 > > │ ............................................................................ │ 00:00:37 v #6769 > > │ ........ │ 00:00:37 v #6770 > > │ ....................................;;;;////////............................ │ 00:00:37 v #6771 > > │ ............................................................................ │ 00:00:37 v #6772 > > │ ........ │ 00:00:37 v #6773 > > │ ..................................;;;;;////////////......................... │ 00:00:37 v #6774 > > │ ............................................................................ │ 00:00:37 v #6775 > > │ ........ │ 00:00:37 v #6776 > > │ ................................;;;;;;///////////////....................... │ 00:00:37 v #6777 > > │ ............................................................................ │ 00:00:37 v #6778 > > │ ........ │ 00:00:37 v #6779 > > │ ..............................;;;;;;;//////////////////..................... │ 00:00:37 v #6780 > > │ ............................................................................ │ 00:00:37 v #6781 > > │ ........ │ 00:00:37 v #6782 > > │ ............................;;;;;;;;//////////////////////.................. │ 00:00:37 v #6783 > > │ ............................................................................ │ 00:00:37 v #6784 > > │ ........ │ 00:00:37 v #6785 > > │ ..........................;;;;;;;;//////////////////////////................ │ 00:00:37 v #6786 > > │ ............................................................................ │ 00:00:37 v #6787 > > │ ........ │ 00:00:37 v #6788 > > │ .........................;;;;;;;;/////////////////////////////<............. │ 00:00:37 v #6789 > > │ ............;;;//........................................................... │ 00:00:37 v #6790 > > │ ........ │ 00:00:37 v #6791 > > │ ........................;;;;;;;;////////////////////////////////<........... │ 00:00:37 v #6792 > > │ .........;;;;;//////........................................................ │ 00:00:37 v #6793 > > │ ........ │ 00:00:37 v #6794 > > │ .......................;;;;;;;;////////////////////////////////////......... │ 00:00:37 v #6795 > > │ ......<;;;;;;/////////<..................................................... │ 00:00:37 v #6796 > > │ ........ │ 00:00:37 v #6797 > > │ .....................\;;;;;;;;/////////////////////////////////////......... │ 00:00:37 v #6798 > > │ ......;;;;;;/////////////..................;;<.............................. │ 00:00:37 v #6799 > > │ ........ │ 00:00:37 v #6800 > > │ ....................;;;;;;;;;/////////////////////////////////////.......... │ 00:00:37 v #6801 > > │ ....\;;;;;;/////////////////............;;;;////............................ │ 00:00:37 v #6802 > > │ ........ │ 00:00:37 v #6803 > > │ ...................;;;;;;;;;//////////////////////////////////////.......... │ 00:00:37 v #6804 > > │ ....;;;;;;/////////////////............;;;;////////......................... │ 00:00:37 v #6805 > > │ ........ │ 00:00:37 v #6806 > > │ ..................;;;;;;;;;//////////////////////////////////////........... │ 00:00:37 v #6807 > > │ ..\;;;;;;//////////////////...........;;;;/////////......................... │ 00:00:37 v #6808 > > │ ........ │ 00:00:37 v #6809 > > │ .................;;;;;;;;;;>/////////////////////////////////////........... │ 00:00:37 v #6810 > > │ .\;;;;;;;>>///////////////...........;;;;;>>>/////.......................... │ 00:00:37 v #6811 > > │ ........ │ 00:00:37 v #6812 > > │ ................;;;;;;;;>>>>>>>>////////////////////////////////............ │ 00:00:37 v #6813 > > │ \;;;;>>>>>>>>>////////////...........;>>>>>>>>>//........................... │ 00:00:37 v #6814 > > │ ........ │ 00:00:37 v #6815 > > │ ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............ │ 00:00:37 v #6816 > > │ ;>>>>>>>>>>>>>>>>////////...............>>>>>>>>/........................... │ 00:00:37 v #6817 > > │ ........ │ 00:00:37 v #6818 > > │ ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////............. │ 00:00:37 v #6819 > > │ ...>>>>>>>>>>>>>>>>>////...................=>............................... │ 00:00:37 v #6820 > > │ ........ │ 00:00:37 v #6821 > > │ .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////............. │ 00:00:37 v #6822 > > │ ......\>>>>>>>>>>>>>>>>..................................................... │ 00:00:37 v #6823 > > │ ........ │ 00:00:37 v #6824 > > │ ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.............. │ 00:00:37 v #6825 > > │ ..........>>>>>>>>>=>....................................................... │ 00:00:37 v #6826 > > │ ........ │ 00:00:37 v #6827 > > │ ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.............. │ 00:00:37 v #6828 > > │ ............................................................................ │ 00:00:37 v #6829 > > │ ........ │ 00:00:37 v #6830 > > │ .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////............... │ 00:00:37 v #6831 > > │ ............................................................................ │ 00:00:37 v #6832 > > │ ........ │ 00:00:37 v #6833 > > │ ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... │ 00:00:37 v #6834 > > │ ............................................................................ │ 00:00:37 v #6835 > > │ ........ │ 00:00:37 v #6836 > > │ ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///................ │ 00:00:37 v #6837 > > │ ............................................................................ │ 00:00:37 v #6838 > > │ ........ │ 00:00:37 v #6839 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/................ │ 00:00:37 v #6840 > > │ ............................................................................ │ 00:00:37 v #6841 > > │ ........ │ 00:00:37 v #6842 > > │ ......................................>>>>>=>=>>............................ │ 00:00:37 v #6843 > > │ ............................................................................ │ 00:00:37 v #6844 > > │ ........ │ 00:00:37 v #6845 > > │ ............................................................................ │ 00:00:37 v #6846 > > │ ............................................................................ │ 00:00:37 v #6847 > > │ ........ │ 00:00:37 v #6848 > > │ ............................................................................ │ 00:00:37 v #6849 > > │ ............................................................................ │ 00:00:37 v #6850 > > │ ........ │ 00:00:37 v #6851 > > │ ............................................................................ │ 00:00:37 v #6852 > > │ ............................................................................ │ 00:00:37 v #6853 > > │ ........ │ 00:00:37 v #6854 > > │ ............................................................................ │ 00:00:37 v #6855 > > │ ............................................................................ │ 00:00:37 v #6856 > > │ ........ │ 00:00:37 v #6857 > > │ ............................................................................ │ 00:00:37 v #6858 > > │ ............................................................................ │ 00:00:37 v #6859 > > │ ........ │ 00:00:37 v #6860 > > │ ............................................................................ │ 00:00:37 v #6861 > > │ ............................................................................ │ 00:00:37 v #6862 > > │ ........ │ 00:00:37 v #6863 > > │ ............................................................................ │ 00:00:37 v #6864 > > │ ............................................................................ │ 00:00:37 v #6865 > > │ ........ │ 00:00:37 v #6866 > > │ ............................................................................ │ 00:00:37 v #6867 > > │ ............................................................................ │ 00:00:37 v #6868 > > │ ........ │ 00:00:37 v #6869 > > │ ............................................................................ │ 00:00:37 v #6870 > > │ ............................................................................ │ 00:00:37 v #6871 > > │ ........ │ 00:00:37 v #6872 > > │ ............................................................................ │ 00:00:37 v #6873 > > │ ............................................................................ │ 00:00:37 v #6874 > > │ ........ │ 00:00:37 v #6875 > > │ │ 00:00:37 v #6876 > > │ ............................................................................ │ 00:00:37 v #6877 > > │ ............................................................................ │ 00:00:37 v #6878 > > │ ........ │ 00:00:37 v #6879 > > │ ............................................................................ │ 00:00:37 v #6880 > > │ ............................................................................ │ 00:00:37 v #6881 > > │ ........ │ 00:00:37 v #6882 > > │ ............................................................................ │ 00:00:37 v #6883 > > │ ............................................................................ │ 00:00:37 v #6884 > > │ ........ │ 00:00:37 v #6885 > > │ ............................................................................ │ 00:00:37 v #6886 > > │ ............................................................................ │ 00:00:37 v #6887 > > │ ........ │ 00:00:37 v #6888 > > │ ............................................................................ │ 00:00:37 v #6889 > > │ ............................................................................ │ 00:00:37 v #6890 > > │ ........ │ 00:00:37 v #6891 > > │ ............................................................................ │ 00:00:37 v #6892 > > │ ............................................................................ │ 00:00:37 v #6893 > > │ ........ │ 00:00:37 v #6894 > > │ ............................................................................ │ 00:00:37 v #6895 > > │ ............................................................................ │ 00:00:37 v #6896 > > │ ........ │ 00:00:37 v #6897 > > │ .......................................;;//................................. │ 00:00:37 v #6898 > > │ ............................................................................ │ 00:00:37 v #6899 > > │ ........ │ 00:00:37 v #6900 > > │ .....................................;;;/////<.............................. │ 00:00:37 v #6901 > > │ ............................................................................ │ 00:00:37 v #6902 > > │ ........ │ 00:00:37 v #6903 > > │ ...................................;;;;/////////............................ │ 00:00:37 v #6904 > > │ ............................................................................ │ 00:00:37 v #6905 > > │ ........ │ 00:00:37 v #6906 > > │ .................................;;;;;;///////////<......................... │ 00:00:37 v #6907 > > │ ............................................................................ │ 00:00:37 v #6908 > > │ ........ │ 00:00:37 v #6909 > > │ ...............................;;;;;;;///////////////....................... │ 00:00:37 v #6910 > > │ ............................................................................ │ 00:00:37 v #6911 > > │ ........ │ 00:00:37 v #6912 > > │ .............................;;;;;;;;//////////////////..................... │ 00:00:37 v #6913 > > │ ............................................................................ │ 00:00:37 v #6914 > > │ ........ │ 00:00:37 v #6915 > > │ ...........................;;;;;;;;;//////////////////////.................. │ 00:00:37 v #6916 > > │ ............................................................................ │ 00:00:37 v #6917 > > │ ........ │ 00:00:37 v #6918 > > │ .........................;;;;;;;;;;/////////////////////////................ │ 00:00:37 v #6919 > > │ ............................................................................ │ 00:00:37 v #6920 > > │ ........ │ 00:00:37 v #6921 > > │ ........................;;;;;;;;;;;///////////////////////////<............. │ 00:00:37 v #6922 > > │ ............;;;//........................................................... │ 00:00:37 v #6923 > > │ ........ │ 00:00:37 v #6924 > > │ .......................;;;;;;;;;;;///////////////////////////////........... │ 00:00:37 v #6925 > > │ .........;;;;;//////........................................................ │ 00:00:37 v #6926 > > │ ........ │ 00:00:37 v #6927 > > │ ......................;;;;;;;;;;;/////////////////////////////////.......... │ 00:00:37 v #6928 > > │ ......;;;;;;;/////////<..................................................... │ 00:00:37 v #6929 > > │ ........ │ 00:00:37 v #6930 > > │ .....................;;;;;;;;;;;//////////////////////////////////.......... │ 00:00:37 v #6931 > > │ .....;;;;;;;/////////////..................;;<.............................. │ 00:00:37 v #6932 > > │ ........ │ 00:00:37 v #6933 > > │ ....................;;;;;;;;;;;//////////////////////////////////........... │ 00:00:37 v #6934 > > │ ....;;;;;;;;///////////////.............;;;;////<........................... │ 00:00:37 v #6935 > > │ ........ │ 00:00:37 v #6936 > > │ ...................;;;;;;;;;;;;//////////////////////////////////........... │ 00:00:37 v #6937 > > │ ...;;;;;;;;////////////////............;;;;////////......................... │ 00:00:37 v #6938 > > │ ........ │ 00:00:37 v #6939 > > │ ..................;;;;;;;;;;;;///////////////////////////////////........... │ 00:00:37 v #6940 > > │ ...;;;;;;;/////////////////...........;;;;;////////......................... │ 00:00:37 v #6941 > > │ ........ │ 00:00:37 v #6942 > > │ .................;;;;;;;;;;;;///////////////////////////////////............ │ 00:00:37 v #6943 > > │ ..;;;;;;;;>>//////////////...........;;;;;>>>/////.......................... │ 00:00:37 v #6944 > > │ ........ │ 00:00:37 v #6945 > > │ ................;;;;;;;;;;;;>>>>>///////////////////////////////............ │ 00:00:37 v #6946 > > │ .;;;;;>>>>>>>>>///////////...........;>>>>>>>>>>//.......................... │ 00:00:37 v #6947 > > │ ........ │ 00:00:37 v #6948 > > │ ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............ │ 00:00:37 v #6949 > > │ \;;>>>>>>>>>>>>>>>///////...............>>>>>>>>>........................... │ 00:00:37 v #6950 > > │ ........ │ 00:00:37 v #6951 > > │ ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////............. │ 00:00:37 v #6952 > > │ ..\>>>>>>>>>>>>>>>>>>>///..................>=............................... │ 00:00:37 v #6953 > > │ ........ │ 00:00:37 v #6954 > > │ .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////............. │ 00:00:37 v #6955 > > │ ......>>>>>>>>>>>>>>>>>>.................................................... │ 00:00:37 v #6956 > > │ ........ │ 00:00:37 v #6957 > > │ .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////............. │ 00:00:37 v #6958 > > │ ..........>>>>>>>>>>=....................................................... │ 00:00:37 v #6959 > > │ ........ │ 00:00:37 v #6960 > > │ .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.............. │ 00:00:37 v #6961 > > │ ............................................................................ │ 00:00:37 v #6962 > > │ ........ │ 00:00:37 v #6963 > > │ ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.............. │ 00:00:37 v #6964 > > │ ............................................................................ │ 00:00:37 v #6965 > > │ ........ │ 00:00:37 v #6966 > > │ ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.............. │ 00:00:37 v #6967 > > │ ............................................................................ │ 00:00:37 v #6968 > > │ ........ │ 00:00:37 v #6969 > > │ ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.............. │ 00:00:37 v #6970 > > │ ............................................................................ │ 00:00:37 v #6971 > > │ ........ │ 00:00:37 v #6972 > > │ ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>............... │ 00:00:37 v #6973 > > │ ............................................................................ │ 00:00:37 v #6974 > > │ ........ │ 00:00:37 v #6975 > > │ ......................................>>>==................................. │ 00:00:37 v #6976 > > │ ............................................................................ │ 00:00:37 v #6977 > > │ ........ │ 00:00:37 v #6978 > > │ ............................................................................ │ 00:00:37 v #6979 > > │ ............................................................................ │ 00:00:37 v #6980 > > │ ........ │ 00:00:37 v #6981 > > │ ............................................................................ │ 00:00:37 v #6982 > > │ ............................................................................ │ 00:00:37 v #6983 > > │ ........ │ 00:00:37 v #6984 > > │ ............................................................................ │ 00:00:37 v #6985 > > │ ............................................................................ │ 00:00:37 v #6986 > > │ ........ │ 00:00:37 v #6987 > > │ ............................................................................ │ 00:00:37 v #6988 > > │ ............................................................................ │ 00:00:37 v #6989 > > │ ........ │ 00:00:37 v #6990 > > │ ............................................................................ │ 00:00:37 v #6991 > > │ ............................................................................ │ 00:00:37 v #6992 > > │ ........ │ 00:00:37 v #6993 > > │ ............................................................................ │ 00:00:37 v #6994 > > │ ............................................................................ │ 00:00:37 v #6995 > > │ ........ │ 00:00:37 v #6996 > > │ ............................................................................ │ 00:00:37 v #6997 > > │ ............................................................................ │ 00:00:37 v #6998 > > │ ........ │ 00:00:37 v #6999 > > │ ............................................................................ │ 00:00:37 v #7000 > > │ ............................................................................ │ 00:00:37 v #7001 > > │ ........ │ 00:00:37 v #7002 > > │ ............................................................................ │ 00:00:37 v #7003 > > │ ............................................................................ │ 00:00:37 v #7004 > > │ ........ │ 00:00:37 v #7005 > > │ ............................................................................ │ 00:00:37 v #7006 > > │ ............................................................................ │ 00:00:37 v #7007 > > │ ........ │ 00:00:37 v #7008 > > │ │ 00:00:37 v #7009 > > │ ............................................................................ │ 00:00:37 v #7010 > > │ ............................................................................ │ 00:00:37 v #7011 > > │ ........ │ 00:00:37 v #7012 > > │ ............................................................................ │ 00:00:37 v #7013 > > │ ............................................................................ │ 00:00:37 v #7014 > > │ ........ │ 00:00:37 v #7015 > > │ ............................................................................ │ 00:00:37 v #7016 > > │ ............................................................................ │ 00:00:37 v #7017 > > │ ........ │ 00:00:37 v #7018 > > │ ............................................................................ │ 00:00:37 v #7019 > > │ ............................................................................ │ 00:00:37 v #7020 > > │ ........ │ 00:00:37 v #7021 > > │ ............................................................................ │ 00:00:37 v #7022 > > │ ............................................................................ │ 00:00:37 v #7023 > > │ ........ │ 00:00:37 v #7024 > > │ ............................................................................ │ 00:00:37 v #7025 > > │ ............................................................................ │ 00:00:37 v #7026 > > │ ........ │ 00:00:37 v #7027 > > │ ............................................................................ │ 00:00:37 v #7028 > > │ ............................................................................ │ 00:00:37 v #7029 > > │ ........ │ 00:00:37 v #7030 > > │ .......................................;;/<................................. │ 00:00:37 v #7031 > > │ ............................................................................ │ 00:00:37 v #7032 > > │ ........ │ 00:00:37 v #7033 > > │ ....................................<;;;/////............................... │ 00:00:37 v #7034 > > │ ............................................................................ │ 00:00:37 v #7035 > > │ ........ │ 00:00:37 v #7036 > > │ ..................................;;;;;////////<............................ │ 00:00:37 v #7037 > > │ ............................................................................ │ 00:00:37 v #7038 > > │ ........ │ 00:00:37 v #7039 > > │ ................................;;;;;;;///////////.......................... │ 00:00:37 v #7040 > > │ ............................................................................ │ 00:00:37 v #7041 > > │ ........ │ 00:00:37 v #7042 > > │ ..............................;;;;;;;;//////////////<....................... │ 00:00:37 v #7043 > > │ ............................................................................ │ 00:00:37 v #7044 > > │ ........ │ 00:00:37 v #7045 > > │ ............................;;;;;;;;;;/////////////////..................... │ 00:00:37 v #7046 > > │ ............................................................................ │ 00:00:37 v #7047 > > │ ........ │ 00:00:37 v #7048 > > │ ..........................;;;;;;;;;;;////////////////////<.................. │ 00:00:37 v #7049 > > │ ............................................................................ │ 00:00:37 v #7050 > > │ ........ │ 00:00:37 v #7051 > > │ ........................;;;;;;;;;;;;////////////////////////................ │ 00:00:37 v #7052 > > │ ............................................................................ │ 00:00:37 v #7053 > > │ ........ │ 00:00:37 v #7054 > > │ .......................;;;;;;;;;;;;;///////////////////////////............. │ 00:00:37 v #7055 > > │ ............;;///........................................................... │ 00:00:37 v #7056 > > │ ........ │ 00:00:37 v #7057 > > │ ......................;;;;;;;;;;;;;//////////////////////////////........... │ 00:00:37 v #7058 > > │ .........;;;;;//////........................................................ │ 00:00:37 v #7059 > > │ ........ │ 00:00:37 v #7060 > > │ .....................;;;;;;;;;;;;;;//////////////////////////////........... │ 00:00:37 v #7061 > > │ ......;;;;;;;//////////..................................................... │ 00:00:37 v #7062 > > │ ........ │ 00:00:37 v #7063 > > │ ....................;;;;;;;;;;;;;;///////////////////////////////........... │ 00:00:37 v #7064 > > │ ....\;;;;;;;;////////////<.................;;............................... │ 00:00:37 v #7065 > > │ ........ │ 00:00:37 v #7066 > > │ ...................\;;;;;;;;;;;;;///////////////////////////////............ │ 00:00:37 v #7067 > > │ ....;;;;;;;;///////////////............<;;;;////<........................... │ 00:00:37 v #7068 > > │ ........ │ 00:00:37 v #7069 > > │ ...................;;;;;;;;;;;;;;///////////////////////////////............ │ 00:00:37 v #7070 > > │ ...;;;;;;;;;///////////////...........\;;;;////////......................... │ 00:00:37 v #7071 > > │ ........ │ 00:00:37 v #7072 > > │ ..................;;;;;;;;;;;;;;////////////////////////////////............ │ 00:00:37 v #7073 > > │ ..\;;;;;;;;///////////////............;;;;;////////......................... │ 00:00:37 v #7074 > > │ ........ │ 00:00:37 v #7075 > > │ .................;;;;;;;;;;;;;;;////////////////////////////////............ │ 00:00:37 v #7076 > > │ ..;;;;;;;;;>//////////////...........\;;;;;>>>////.......................... │ 00:00:37 v #7077 > > │ ........ │ 00:00:37 v #7078 > > │ ................;;;;;;;;;;;;;;;>>>//////////////////////////////............ │ 00:00:37 v #7079 > > │ .;;;;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.......................... │ 00:00:37 v #7080 > > │ ........ │ 00:00:37 v #7081 > > │ ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////............ │ 00:00:37 v #7082 > > │ .;;;>>>>>>>>>>>>>>>>/////..............\>>>>>>>>/........................... │ 00:00:37 v #7083 > > │ ........ │ 00:00:37 v #7084 > > │ ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////............ │ 00:00:37 v #7085 > > │ .\>>>>>>>>>>>>>>>>>>>>>//..................\=............................... │ 00:00:37 v #7086 > > │ ........ │ 00:00:37 v #7087 > > │ ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////............ │ 00:00:37 v #7088 > > │ .....\>>>>>>>>>>>>>>>>>>/................................................... │ 00:00:37 v #7089 > > │ ........ │ 00:00:37 v #7090 > > │ .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////............. │ 00:00:37 v #7091 > > │ ..........>>>>>>>>>>........................................................ │ 00:00:37 v #7092 > > │ ........ │ 00:00:37 v #7093 > > │ ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............. │ 00:00:37 v #7094 > > │ ............................................................................ │ 00:00:37 v #7095 > > │ ........ │ 00:00:37 v #7096 > > │ ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////............. │ 00:00:37 v #7097 > > │ ............................................................................ │ 00:00:37 v #7098 > > │ ........ │ 00:00:37 v #7099 > > │ ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//............. │ 00:00:37 v #7100 > > │ ............................................................................ │ 00:00:37 v #7101 > > │ ........ │ 00:00:37 v #7102 > > │ .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............. │ 00:00:37 v #7103 > > │ ............................................................................ │ 00:00:37 v #7104 > > │ ........ │ 00:00:37 v #7105 > > │ ..................................>>>>>>>>>>>>>>>>>>>>==.................... │ 00:00:37 v #7106 > > │ ............................................................................ │ 00:00:37 v #7107 > > │ ........ │ 00:00:37 v #7108 > > │ .......................................>==.................................. │ 00:00:37 v #7109 > > │ ............................................................................ │ 00:00:37 v #7110 > > │ ........ │ 00:00:37 v #7111 > > │ ............................................................................ │ 00:00:37 v #7112 > > │ ............................................................................ │ 00:00:37 v #7113 > > │ ........ │ 00:00:37 v #7114 > > │ ............................................................................ │ 00:00:37 v #7115 > > │ ............................................................................ │ 00:00:37 v #7116 > > │ ........ │ 00:00:37 v #7117 > > │ ............................................................................ │ 00:00:37 v #7118 > > │ ............................................................................ │ 00:00:37 v #7119 > > │ ........ │ 00:00:37 v #7120 > > │ ............................................................................ │ 00:00:37 v #7121 > > │ ............................................................................ │ 00:00:37 v #7122 > > │ ........ │ 00:00:37 v #7123 > > │ ............................................................................ │ 00:00:37 v #7124 > > │ ............................................................................ │ 00:00:37 v #7125 > > │ ........ │ 00:00:37 v #7126 > > │ ............................................................................ │ 00:00:37 v #7127 > > │ ............................................................................ │ 00:00:37 v #7128 > > │ ........ │ 00:00:37 v #7129 > > │ ............................................................................ │ 00:00:37 v #7130 > > │ ............................................................................ │ 00:00:37 v #7131 > > │ ........ │ 00:00:37 v #7132 > > │ ............................................................................ │ 00:00:37 v #7133 > > │ ............................................................................ │ 00:00:37 v #7134 > > │ ........ │ 00:00:37 v #7135 > > │ ............................................................................ │ 00:00:37 v #7136 > > │ ............................................................................ │ 00:00:37 v #7137 > > │ ........ │ 00:00:37 v #7138 > > │ ............................................................................ │ 00:00:37 v #7139 > > │ ............................................................................ │ 00:00:37 v #7140 > > │ ........ │ 00:00:37 v #7141 > > │ │ 00:00:37 v #7142 > > │ ............................................................................ │ 00:00:37 v #7143 > > │ ............................................................................ │ 00:00:37 v #7144 > > │ ........ │ 00:00:37 v #7145 > > │ ............................................................................ │ 00:00:37 v #7146 > > │ ............................................................................ │ 00:00:37 v #7147 > > │ ........ │ 00:00:37 v #7148 > > │ ............................................................................ │ 00:00:37 v #7149 > > │ ............................................................................ │ 00:00:37 v #7150 > > │ ........ │ 00:00:37 v #7151 > > │ ............................................................................ │ 00:00:37 v #7152 > > │ ............................................................................ │ 00:00:37 v #7153 > > │ ........ │ 00:00:37 v #7154 > > │ ............................................................................ │ 00:00:37 v #7155 > > │ ............................................................................ │ 00:00:37 v #7156 > > │ ........ │ 00:00:37 v #7157 > > │ ............................................................................ │ 00:00:37 v #7158 > > │ ............................................................................ │ 00:00:37 v #7159 > > │ ........ │ 00:00:37 v #7160 > > │ ............................................................................ │ 00:00:37 v #7161 > > │ ............................................................................ │ 00:00:37 v #7162 > > │ ........ │ 00:00:37 v #7163 > > │ ......................................;;//.................................. │ 00:00:37 v #7164 > > │ ............................................................................ │ 00:00:37 v #7165 > > │ ........ │ 00:00:37 v #7166 > > │ ....................................;;;;////................................ │ 00:00:37 v #7167 > > │ ............................................................................ │ 00:00:37 v #7168 > > │ ........ │ 00:00:37 v #7169 > > │ ..................................;;;;;////////............................. │ 00:00:37 v #7170 > > │ ............................................................................ │ 00:00:37 v #7171 > > │ ........ │ 00:00:37 v #7172 > > │ ...............................<;;;;;;;///////////.......................... │ 00:00:37 v #7173 > > │ ............................................................................ │ 00:00:37 v #7174 > > │ ........ │ 00:00:37 v #7175 > > │ .............................;;;;;;;;;//////////////........................ │ 00:00:37 v #7176 > > │ ............................................................................ │ 00:00:37 v #7177 > > │ ........ │ 00:00:37 v #7178 > > │ ...........................;;;;;;;;;;;/////////////////..................... │ 00:00:37 v #7179 > > │ ............................................................................ │ 00:00:37 v #7180 > > │ ........ │ 00:00:37 v #7181 > > │ .........................;;;;;;;;;;;;;///////////////////<.................. │ 00:00:37 v #7182 > > │ ............................................................................ │ 00:00:37 v #7183 > > │ ........ │ 00:00:37 v #7184 > > │ .......................;;;;;;;;;;;;;;///////////////////////................ │ 00:00:37 v #7185 > > │ ............................................................................ │ 00:00:37 v #7186 > > │ ........ │ 00:00:37 v #7187 > > │ .....................\;;;;;;;;;;;;;;;//////////////////////////............. │ 00:00:37 v #7188 > > │ ...........<;;//<........................................................... │ 00:00:37 v #7189 > > │ ........ │ 00:00:37 v #7190 > > │ .....................;;;;;;;;;;;;;;;;///////////////////////////............ │ 00:00:37 v #7191 > > │ ........<;;;;;//////........................................................ │ 00:00:37 v #7192 > > │ ........ │ 00:00:37 v #7193 > > │ ....................;;;;;;;;;;;;;;;;////////////////////////////............ │ 00:00:37 v #7194 > > │ ......;;;;;;;;/////////..................................................... │ 00:00:37 v #7195 > > │ ........ │ 00:00:37 v #7196 > > │ ....................;;;;;;;;;;;;;;;;////////////////////////////............ │ 00:00:37 v #7197 > > │ ....;;;;;;;;;/////////////.................;/............................... │ 00:00:37 v #7198 > > │ ........ │ 00:00:37 v #7199 > > │ ...................;;;;;;;;;;;;;;;;/////////////////////////////............ │ 00:00:37 v #7200 > > │ ...;;;;;;;;;;/////////////.............<;;;;////<........................... │ 00:00:37 v #7201 > > │ ........ │ 00:00:37 v #7202 > > │ ..................;;;;;;;;;;;;;;;;;/////////////////////////////............ │ 00:00:37 v #7203 > > │ ...;;;;;;;;;//////////////............\;;;;;//////.......................... │ 00:00:37 v #7204 > > │ ........ │ 00:00:37 v #7205 > > │ ..................;;;;;;;;;;;;;;;;;/////////////////////////////............ │ 00:00:37 v #7206 > > │ ..\;;;;;;;;;//////////////............;;;;;///////.......................... │ 00:00:37 v #7207 > > │ ........ │ 00:00:37 v #7208 > > │ .................;;;;;;;;;;;;;;;;;//////////////////////////////............ │ 00:00:37 v #7209 > > │ ..;;;;;;;;;;>/////////////............;;;;;>>>////.......................... │ 00:00:37 v #7210 > > │ ........ │ 00:00:37 v #7211 > > │ .................;;;;;;;;;;;;;;;;;>/////////////////////////////............ │ 00:00:37 v #7212 > > │ ..;;;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.......................... │ 00:00:37 v #7213 > > │ ........ │ 00:00:37 v #7214 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////............ │ 00:00:37 v #7215 > > │ .;;;;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.......................... │ 00:00:37 v #7216 > > │ ........ │ 00:00:37 v #7217 > > │ ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////............ │ 00:00:37 v #7218 > > │ .;>>>>>>>>>>>>>>>>>>>>>>>/..................>............................... │ 00:00:37 v #7219 > > │ ........ │ 00:00:37 v #7220 > > │ ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////............ │ 00:00:37 v #7221 > > │ .....>>>>>>>>>>>>>>>>>>>/................................................... │ 00:00:37 v #7222 > > │ ........ │ 00:00:37 v #7223 > > │ ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////............ │ 00:00:37 v #7224 > > │ ..........>>>>>>>>>>........................................................ │ 00:00:37 v #7225 > > │ ........ │ 00:00:37 v #7226 > > │ ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////............ │ 00:00:37 v #7227 > > │ ............................................................................ │ 00:00:37 v #7228 > > │ ........ │ 00:00:37 v #7229 > > │ .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////............ │ 00:00:37 v #7230 > > │ ............................................................................ │ 00:00:37 v #7231 > > │ ........ │ 00:00:37 v #7232 > > │ ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............ │ 00:00:37 v #7233 > > │ ............................................................................ │ 00:00:37 v #7234 > > │ ........ │ 00:00:37 v #7235 > > │ ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. │ 00:00:37 v #7236 > > │ ............................................................................ │ 00:00:37 v #7237 > > │ ........ │ 00:00:37 v #7238 > > │ ..................................>>>>>>>>>>>>>>>>>>........................ │ 00:00:37 v #7239 > > │ ............................................................................ │ 00:00:37 v #7240 > > │ ........ │ 00:00:37 v #7241 > > │ .......................................>=................................... │ 00:00:37 v #7242 > > │ ............................................................................ │ 00:00:37 v #7243 > > │ ........ │ 00:00:37 v #7244 > > │ ............................................................................ │ 00:00:37 v #7245 > > │ ............................................................................ │ 00:00:37 v #7246 > > │ ........ │ 00:00:37 v #7247 > > │ ............................................................................ │ 00:00:37 v #7248 > > │ ............................................................................ │ 00:00:37 v #7249 > > │ ........ │ 00:00:37 v #7250 > > │ ............................................................................ │ 00:00:37 v #7251 > > │ ............................................................................ │ 00:00:37 v #7252 > > │ ........ │ 00:00:37 v #7253 > > │ ............................................................................ │ 00:00:37 v #7254 > > │ ............................................................................ │ 00:00:37 v #7255 > > │ ........ │ 00:00:37 v #7256 > > │ ............................................................................ │ 00:00:37 v #7257 > > │ ............................................................................ │ 00:00:37 v #7258 > > │ ........ │ 00:00:37 v #7259 > > │ ............................................................................ │ 00:00:37 v #7260 > > │ ............................................................................ │ 00:00:37 v #7261 > > │ ........ │ 00:00:37 v #7262 > > │ ............................................................................ │ 00:00:37 v #7263 > > │ ............................................................................ │ 00:00:37 v #7264 > > │ ........ │ 00:00:37 v #7265 > > │ ............................................................................ │ 00:00:37 v #7266 > > │ ............................................................................ │ 00:00:37 v #7267 > > │ ........ │ 00:00:37 v #7268 > > │ ............................................................................ │ 00:00:37 v #7269 > > │ ............................................................................ │ 00:00:37 v #7270 > > │ ........ │ 00:00:37 v #7271 > > │ ............................................................................ │ 00:00:37 v #7272 > > │ ............................................................................ │ 00:00:37 v #7273 > > │ ........ │ 00:00:37 v #7274 > > │ │ 00:00:37 v #7275 > > │ ............................................................................ │ 00:00:37 v #7276 > > │ ............................................................................ │ 00:00:37 v #7277 > > │ ........ │ 00:00:37 v #7278 > > │ ............................................................................ │ 00:00:37 v #7279 > > │ ............................................................................ │ 00:00:37 v #7280 > > │ ........ │ 00:00:37 v #7281 > > │ ............................................................................ │ 00:00:37 v #7282 > > │ ............................................................................ │ 00:00:37 v #7283 > > │ ........ │ 00:00:37 v #7284 > > │ ............................................................................ │ 00:00:37 v #7285 > > │ ............................................................................ │ 00:00:37 v #7286 > > │ ........ │ 00:00:37 v #7287 > > │ ............................................................................ │ 00:00:37 v #7288 > > │ ............................................................................ │ 00:00:37 v #7289 > > │ ........ │ 00:00:37 v #7290 > > │ ............................................................................ │ 00:00:37 v #7291 > > │ ............................................................................ │ 00:00:37 v #7292 > > │ ........ │ 00:00:37 v #7293 > > │ ............................................................................ │ 00:00:37 v #7294 > > │ ............................................................................ │ 00:00:37 v #7295 > > │ ........ │ 00:00:37 v #7296 > > │ .....................................<;;/<.................................. │ 00:00:37 v #7297 > > │ ............................................................................ │ 00:00:37 v #7298 > > │ ........ │ 00:00:37 v #7299 > > │ ...................................;;;;;///<................................ │ 00:00:37 v #7300 > > │ ............................................................................ │ 00:00:37 v #7301 > > │ ........ │ 00:00:37 v #7302 > > │ .................................;;;;;;///////<............................. │ 00:00:37 v #7303 > > │ ............................................................................ │ 00:00:37 v #7304 > > │ ........ │ 00:00:37 v #7305 > > │ ...............................;;;;;;;;//////////<.......................... │ 00:00:37 v #7306 > > │ ............................................................................ │ 00:00:37 v #7307 > > │ ........ │ 00:00:37 v #7308 > > │ ............................<;;;;;;;;;;/////////////........................ │ 00:00:37 v #7309 > > │ ............................................................................ │ 00:00:37 v #7310 > > │ ........ │ 00:00:37 v #7311 > > │ ..........................<;;;;;;;;;;;;///////////////<..................... │ 00:00:37 v #7312 > > │ ............................................................................ │ 00:00:37 v #7313 > > │ ........ │ 00:00:37 v #7314 > > │ ........................;;;;;;;;;;;;;;;//////////////////<.................. │ 00:00:37 v #7315 > > │ ............................................................................ │ 00:00:37 v #7316 > > │ ........ │ 00:00:37 v #7317 > > │ ......................;;;;;;;;;;;;;;;;//////////////////////................ │ 00:00:37 v #7318 > > │ ............................................................................ │ 00:00:37 v #7319 > > │ ........ │ 00:00:37 v #7320 > > │ ....................;;;;;;;;;;;;;;;;;;////////////////////////.............. │ 00:00:37 v #7321 > > │ ...........;;;//............................................................ │ 00:00:37 v #7322 > > │ ........ │ 00:00:37 v #7323 > > │ ....................;;;;;;;;;;;;;;;;;;/////////////////////////............. │ 00:00:37 v #7324 > > │ ........;;;;;;//////........................................................ │ 00:00:37 v #7325 > > │ ........ │ 00:00:37 v #7326 > > │ ...................;;;;;;;;;;;;;;;;;;;/////////////////////////............. │ 00:00:37 v #7327 > > │ .....<;;;;;;;;////////<..................................................... │ 00:00:37 v #7328 > > │ ........ │ 00:00:37 v #7329 > > │ ...................;;;;;;;;;;;;;;;;;;;/////////////////////////............. │ 00:00:37 v #7330 > > │ ...;;;;;;;;;;;////////////.................;/............................... │ 00:00:37 v #7331 > > │ ........ │ 00:00:37 v #7332 > > │ ..................\;;;;;;;;;;;;;;;;;;//////////////////////////............. │ 00:00:37 v #7333 > > │ ...;;;;;;;;;;/////////////.............<;;;;////<........................... │ 00:00:37 v #7334 > > │ ........ │ 00:00:37 v #7335 > > │ ..................;;;;;;;;;;;;;;;;;;;//////////////////////////............. │ 00:00:37 v #7336 > > │ ...;;;;;;;;;;/////////////............;;;;;;//////.......................... │ 00:00:37 v #7337 > > │ ........ │ 00:00:37 v #7338 > > │ ..................;;;;;;;;;;;;;;;;;;;///////////////////////////............ │ 00:00:37 v #7339 > > │ ..;;;;;;;;;;;/////////////............;;;;;;//////.......................... │ 00:00:37 v #7340 > > │ ........ │ 00:00:37 v #7341 > > │ .................;;;;;;;;;;;;;;;;;;;;///////////////////////////............ │ 00:00:37 v #7342 > > │ ..;;;;;;;;;;;>////////////............;;;;;;>>////.......................... │ 00:00:37 v #7343 > > │ ........ │ 00:00:37 v #7344 > > │ .................;;;;;;;;;;;;;;;;;;;;///////////////////////////............ │ 00:00:37 v #7345 > > │ ..;;;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.......................... │ 00:00:37 v #7346 > > │ ........ │ 00:00:37 v #7347 > > │ ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////............ │ 00:00:37 v #7348 > > │ .\;;;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=........................... │ 00:00:37 v #7349 > > │ ........ │ 00:00:37 v #7350 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////............ │ 00:00:37 v #7351 > > │ .;;;>>>>>>>>>>>>>>>>>>>>>>..................=............................... │ 00:00:37 v #7352 > > │ ........ │ 00:00:37 v #7353 > > │ ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////............ │ 00:00:37 v #7354 > > │ ....>>>>>>>>>>>>>>>>>>>>>................................................... │ 00:00:37 v #7355 > > │ ........ │ 00:00:37 v #7356 > > │ ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////........... │ 00:00:37 v #7357 > > │ .........\>>>>>>>>=......................................................... │ 00:00:37 v #7358 > > │ ........ │ 00:00:37 v #7359 > > │ ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////........... │ 00:00:37 v #7360 > > │ ............................................................................ │ 00:00:37 v #7361 > > │ ........ │ 00:00:37 v #7362 > > │ ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/........... │ 00:00:37 v #7363 > > │ ............................................................................ │ 00:00:37 v #7364 > > │ ........ │ 00:00:37 v #7365 > > │ ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>........... │ 00:00:37 v #7366 > > │ ............................................................................ │ 00:00:37 v #7367 > > │ ........ │ 00:00:37 v #7368 > > │ ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. │ 00:00:37 v #7369 > > │ ............................................................................ │ 00:00:37 v #7370 > > │ ........ │ 00:00:37 v #7371 > > │ .................................>>>>>>>>>>>>>>>>........................... │ 00:00:37 v #7372 > > │ ............................................................................ │ 00:00:37 v #7373 > > │ ........ │ 00:00:37 v #7374 > > │ ........................................=................................... │ 00:00:37 v #7375 > > │ ............................................................................ │ 00:00:37 v #7376 > > │ ........ │ 00:00:37 v #7377 > > │ ............................................................................ │ 00:00:37 v #7378 > > │ ............................................................................ │ 00:00:37 v #7379 > > │ ........ │ 00:00:37 v #7380 > > │ ............................................................................ │ 00:00:37 v #7381 > > │ ............................................................................ │ 00:00:37 v #7382 > > │ ........ │ 00:00:37 v #7383 > > │ ............................................................................ │ 00:00:37 v #7384 > > │ ............................................................................ │ 00:00:37 v #7385 > > │ ........ │ 00:00:37 v #7386 > > │ ............................................................................ │ 00:00:37 v #7387 > > │ ............................................................................ │ 00:00:37 v #7388 > > │ ........ │ 00:00:37 v #7389 > > │ ............................................................................ │ 00:00:37 v #7390 > > │ ............................................................................ │ 00:00:37 v #7391 > > │ ........ │ 00:00:37 v #7392 > > │ ............................................................................ │ 00:00:37 v #7393 > > │ ............................................................................ │ 00:00:37 v #7394 > > │ ........ │ 00:00:37 v #7395 > > │ ............................................................................ │ 00:00:37 v #7396 > > │ ............................................................................ │ 00:00:37 v #7397 > > │ ........ │ 00:00:37 v #7398 > > │ ............................................................................ │ 00:00:37 v #7399 > > │ ............................................................................ │ 00:00:37 v #7400 > > │ ........ │ 00:00:37 v #7401 > > │ ............................................................................ │ 00:00:37 v #7402 > > │ ............................................................................ │ 00:00:37 v #7403 > > │ ........ │ 00:00:37 v #7404 > > │ ............................................................................ │ 00:00:37 v #7405 > > │ ............................................................................ │ 00:00:37 v #7406 > > │ ........ │ 00:00:37 v #7407 > > │ │ 00:00:37 v #7408 > > │ ............................................................................ │ 00:00:37 v #7409 > > │ ............................................................................ │ 00:00:37 v #7410 > > │ ........ │ 00:00:37 v #7411 > > │ ............................................................................ │ 00:00:37 v #7412 > > │ ............................................................................ │ 00:00:37 v #7413 > > │ ........ │ 00:00:37 v #7414 > > │ ............................................................................ │ 00:00:37 v #7415 > > │ ............................................................................ │ 00:00:37 v #7416 > > │ ........ │ 00:00:37 v #7417 > > │ ............................................................................ │ 00:00:37 v #7418 > > │ ............................................................................ │ 00:00:37 v #7419 > > │ ........ │ 00:00:37 v #7420 > > │ ............................................................................ │ 00:00:37 v #7421 > > │ ............................................................................ │ 00:00:37 v #7422 > > │ ........ │ 00:00:37 v #7423 > > │ ............................................................................ │ 00:00:37 v #7424 > > │ ............................................................................ │ 00:00:37 v #7425 > > │ ........ │ 00:00:37 v #7426 > > │ ............................................................................ │ 00:00:37 v #7427 > > │ ............................................................................ │ 00:00:37 v #7428 > > │ ........ │ 00:00:37 v #7429 > > │ .....................................;;//................................... │ 00:00:37 v #7430 > > │ ............................................................................ │ 00:00:37 v #7431 > > │ ........ │ 00:00:37 v #7432 > > │ ...................................;;;;////<................................ │ 00:00:37 v #7433 > > │ ............................................................................ │ 00:00:37 v #7434 > > │ ........ │ 00:00:37 v #7435 > > │ ................................<;;;;;;///////.............................. │ 00:00:37 v #7436 > > │ ............................................................................ │ 00:00:37 v #7437 > > │ ........ │ 00:00:37 v #7438 > > │ ..............................<;;;;;;;;/////////<........................... │ 00:00:37 v #7439 > > │ ............................................................................ │ 00:00:37 v #7440 > > │ ........ │ 00:00:37 v #7441 > > │ ............................;;;;;;;;;;;////////////<........................ │ 00:00:37 v #7442 > > │ ............................................................................ │ 00:00:37 v #7443 > > │ ........ │ 00:00:37 v #7444 > > │ ..........................;;;;;;;;;;;;;///////////////<..................... │ 00:00:37 v #7445 > > │ ............................................................................ │ 00:00:37 v #7446 > > │ ........ │ 00:00:37 v #7447 > > │ .......................<;;;;;;;;;;;;;;;//////////////////................... │ 00:00:37 v #7448 > > │ ............................................................................ │ 00:00:37 v #7449 > > │ ........ │ 00:00:37 v #7450 > > │ .....................;;;;;;;;;;;;;;;;;;/////////////////////................ │ 00:00:37 v #7451 > > │ ............................................................................ │ 00:00:37 v #7452 > > │ ........ │ 00:00:37 v #7453 > > │ ...................;;;;;;;;;;;;;;;;;;;;//////////////////////............... │ 00:00:37 v #7454 > > │ ...........;;;//............................................................ │ 00:00:37 v #7455 > > │ ........ │ 00:00:37 v #7456 > > │ ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │ 00:00:37 v #7457 > > │ ........;;;;;;//////........................................................ │ 00:00:37 v #7458 > > │ ........ │ 00:00:37 v #7459 > > │ ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │ 00:00:37 v #7460 > > │ .....;;;;;;;;;/////////..................................................... │ 00:00:37 v #7461 > > │ ........ │ 00:00:37 v #7462 > > │ ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.............. │ 00:00:37 v #7463 > > │ ...;;;;;;;;;;;///////////..................;/............................... │ 00:00:37 v #7464 > > │ ........ │ 00:00:37 v #7465 > > │ ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │ 00:00:37 v #7466 > > │ ...;;;;;;;;;;;////////////.............<;;;;////<........................... │ 00:00:37 v #7467 > > │ ........ │ 00:00:37 v #7468 > > │ ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │ 00:00:37 v #7469 > > │ ..\;;;;;;;;;;;////////////............;;;;;;//////.......................... │ 00:00:37 v #7470 > > │ ........ │ 00:00:37 v #7471 > > │ .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////............. │ 00:00:37 v #7472 > > │ ..;;;;;;;;;;;;////////////............;;;;;;//////.......................... │ 00:00:37 v #7473 > > │ ........ │ 00:00:37 v #7474 > > │ .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////............ │ 00:00:37 v #7475 > > │ ..;;;;;;;;;;;;>///////////............;;;;;;>>>///.......................... │ 00:00:37 v #7476 > > │ ........ │ 00:00:37 v #7477 > > │ .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////............ │ 00:00:37 v #7478 > > │ ..;;;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.......................... │ 00:00:37 v #7479 > > │ ........ │ 00:00:37 v #7480 > > │ ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////............ │ 00:00:37 v #7481 > > │ ..;;;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=........................... │ 00:00:37 v #7482 > > │ ........ │ 00:00:37 v #7483 > > │ ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////........... │ 00:00:37 v #7484 > > │ ..;;;;>>>>>>>>>>>>>>>>>>>>..................=............................... │ 00:00:37 v #7485 > > │ ........ │ 00:00:37 v #7486 > > │ ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////........... │ 00:00:37 v #7487 > > │ ...\>>>>>>>>>>>>>>>>>>>>.................................................... │ 00:00:37 v #7488 > > │ ........ │ 00:00:37 v #7489 > > │ ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////........... │ 00:00:37 v #7490 > > │ .........>>>>>>>>>=......................................................... │ 00:00:37 v #7491 > > │ ........ │ 00:00:37 v #7492 > > │ ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.......... │ 00:00:37 v #7493 > > │ ............................................................................ │ 00:00:37 v #7494 > > │ ........ │ 00:00:37 v #7495 > > │ ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.......... │ 00:00:37 v #7496 > > │ ............................................................................ │ 00:00:37 v #7497 > > │ ........ │ 00:00:37 v #7498 > > │ ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.............. │ 00:00:37 v #7499 > > │ ............................................................................ │ 00:00:37 v #7500 > > │ ........ │ 00:00:37 v #7501 > > │ ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................... │ 00:00:37 v #7502 > > │ ............................................................................ │ 00:00:37 v #7503 > > │ ........ │ 00:00:37 v #7504 > > │ .................................\>>>>>>>>>>>>>=............................ │ 00:00:37 v #7505 > > │ ............................................................................ │ 00:00:37 v #7506 > > │ ........ │ 00:00:37 v #7507 > > │ ............................................................................ │ 00:00:37 v #7508 > > │ ............................................................................ │ 00:00:37 v #7509 > > │ ........ │ 00:00:37 v #7510 > > │ ............................................................................ │ 00:00:37 v #7511 > > │ ............................................................................ │ 00:00:37 v #7512 > > │ ........ │ 00:00:37 v #7513 > > │ ............................................................................ │ 00:00:37 v #7514 > > │ ............................................................................ │ 00:00:37 v #7515 > > │ ........ │ 00:00:37 v #7516 > > │ ............................................................................ │ 00:00:37 v #7517 > > │ ............................................................................ │ 00:00:37 v #7518 > > │ ........ │ 00:00:37 v #7519 > > │ ............................................................................ │ 00:00:37 v #7520 > > │ ............................................................................ │ 00:00:37 v #7521 > > │ ........ │ 00:00:37 v #7522 > > │ ............................................................................ │ 00:00:37 v #7523 > > │ ............................................................................ │ 00:00:37 v #7524 > > │ ........ │ 00:00:37 v #7525 > > │ ............................................................................ │ 00:00:37 v #7526 > > │ ............................................................................ │ 00:00:37 v #7527 > > │ ........ │ 00:00:37 v #7528 > > │ ............................................................................ │ 00:00:37 v #7529 > > │ ............................................................................ │ 00:00:37 v #7530 > > │ ........ │ 00:00:37 v #7531 > > │ ............................................................................ │ 00:00:37 v #7532 > > │ ............................................................................ │ 00:00:37 v #7533 > > │ ........ │ 00:00:37 v #7534 > > │ ............................................................................ │ 00:00:37 v #7535 > > │ ............................................................................ │ 00:00:37 v #7536 > > │ ........ │ 00:00:37 v #7537 > > │ ............................................................................ │ 00:00:37 v #7538 > > │ ............................................................................ │ 00:00:37 v #7539 > > │ ........ │ 00:00:37 v #7540 > > │ │ 00:00:37 v #7541 > > │ │ 00:00:37 v #7542 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:38 v #7543 > 00:00:37 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 588466 } 00:00:38 v #7544 > 00:00:37 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:39 v #7545 > 00:00:38 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html 00:00:39 v #7546 > 00:00:38 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:39 v #7547 > 00:00:38 v #7 ! validate(nb) 00:00:40 v #7548 > 00:00:39 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:40 v #7549 > 00:00:39 v #9 ! return _pygments_highlight( 00:00:40 v #7550 > 00:00:39 v #10 ! [NbConvertApp] Writing 800315 bytes to c:\home\git\polyglot\apps\spiral\temp\cube\cube.dib.html 00:00:40 v #7551 > 00:00:40 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 872 } 00:00:40 v #7552 > 00:00:40 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 872 } 00:00:40 v #7553 > 00:00:40 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:41 v #7554 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:41 v #7555 > 00:00:40 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:41 v #7556 > 00:00:40 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 589397 } 00:00:41 d #7557 runtime.execute_with_options_async / { exit_code = 0; output_length = 607096 } 00:00:41 d #1 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder.exe dib --path cube.dib 00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib 00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n 160i... main ;[]\n }\n : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 and [<Struct>] US2 = | US2_0 of f0_0 : string | US2_1 and Mut0 = {mutable l0 : float} and [<Struct>] US3 = | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char | US3_1 and [<Struct>] US4 = ...x<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT null |> unbox<unit> #endif #if FABLE_COMPILER_PYTHON let v151 : (Async<unit> -> unit) = Async.RunSynchronously v151 v79 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v152 : (Async<unit> -> unit) = Async.RunSynchronously v152 v79 #endif #else let v153 : (Async<unit> -> unit) = Async.RunSynchronously v153 v79 #endif // run_target_args' is_unit #endif // run_target_args' is_unit () let v0 : ((string []) -> unit) = closure0() let main_ = v0 #if !FABLE_COMPILER_RUST main_ [||] #else let main args = main_ [||]; 0 #endif () 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 and [<Struct>] US2 = | US2_0 of f0_0 : string | US2_1 and Mut0 = {mutable l0 : float} and [<Struct>] US3 = | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char | US3_1 and [<Struct>] US4 = ...x<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT null |> unbox<unit> #endif #if FABLE_COMPILER_PYTHON let v151 : (Async<unit> -> unit) = Async.RunSynchronously v151 v79 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v152 : (Async<unit> -> unit) = Async.RunSynchronously v152 v79 #endif #else let v153 : (Async<unit> -> unit) = Async.RunSynchronously v153 v79 #endif // run_target_args' is_unit #endif // run_target_args' is_unit () let v0 : ((string []) -> unit) = closure0() let main_ = v0 #if !FABLE_COMPILER_RUST main_ [||] #else let main args = main_ [||]; 0 #endif () 00:00:01 d #10 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:01 v #2 async.run_with_timeout_async / { timeout = 180 } 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n 160i... main ;[]\n }\n : ()\n","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Python \u002B Cuda","uri":"file:///c:/home/git/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: kernel = r""" """ class static_array(): def __init__(self, length): self.ptr = [] for _ in range(length): self.ptr.append(None) def __getitem__(self, index): assert 0 <= index < len(self.ptr), "The get index needs to be in range." return self.ptr[index] def __setitem__(self, index, value): assert 0 <= index < len(self.ptr), "The set index needs to be in range." self.ptr[index] = value class static_array_list(static_array): def __init__(self, length): super().__init__(length) self.length = 0 def __getitem__(self, index): assert 0 <= index < self.length, "The get index needs to be in range." return self.ptr[index] d... = 0 == v60 del v60 if v61: v62 = "AUTOMATION" v63 = method1(v62) del v62 v64 = len(v63) del v63 v65 = 0 == v64 del v64 v66 = v65 else: v66 = False del v61 if v66: v75 = -1 else: v75 = 50 del v66 v76 = 1 v77 = 0.0 v78 = 0.0 v79 = 0.0 v80 = method2(v75, v76, v77, v78, v79) del v75, v76, v77, v78, v79 asyncio.run(v80()) del v80 return def main(): r = main_body() if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed. return r if __name__ == '__main__': result = main(); None if result is None else print(result) 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: kernel = r""" """ class static_array(): def __init__(self, length): self.ptr = [] for _ in range(length): self.ptr.append(None) def __getitem__(self, index): assert 0 <= index < len(self.ptr), "The get index needs to be in range." return self.ptr[index] def __setitem__(self, index, value): assert 0 <= index < len(self.ptr), "The set index needs to be in range." self.ptr[index] = value class static_array_list(static_array): def __init__(self, length): super().__init__(length) self.length = 0 def __getitem__(self, index): assert 0 <= index < self.length, "The get index needs to be in range." return self.ptr[index] d... = 0 == v60 del v60 if v61: v62 = "AUTOMATION" v63 = method1(v62) del v62 v64 = len(v63) del v63 v65 = 0 == v64 del v64 v66 = v65 else: v66 = False del v61 if v66: v75 = -1 else: v75 = 50 del v66 v76 = 1 v77 = 0.0 v78 = 0.0 v79 = 0.0 v80 = method2(v75, v76, v77, v78, v79) del v75, v76, v77, v78, v79 asyncio.run(v80()) del v80 return def main(): r = main_body() if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed. return r if __name__ == '__main__': result = main(); None if result is None else print(result) 00:00:01 d #10 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: cube / hash: / code.Length: 47215 targetDir: C:\home\git\polyglot\target\Builder\cube Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @7sharp9 Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\cube\cube.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 168ms Started Fable compilation... Fable compilation finished in 8556ms .\lib\spiral\sm.fsx(521,0): (521,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\date_time.fsx(2392,0): (2392,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\runtime.fsx(6912,0): (6912,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\lib\spiral\file_system.fsx(16450,0): (16450,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Fable 5.0.0-alpha.2: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.7.0 Thanks to the contributor! @Shmew Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\cube\cube.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 152ms Started Fable compilation... Fable compilation finished in 7176ms .\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\lib\spiral\sm.fsx(271,20): (271,51) warning FABLE: CultureInfo argument is ignored Fable 5.0.0-alpha.2: F# to Python compiler (status: beta) Thanks to the contributor! @NickDarvey Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\cube\cube.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 171ms Started Fable compilation... Fable compilation finished in 7818ms .\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\lib\spiral\sm.fsx(271,20): (271,51) warning FABLE: CultureInfo argument is ignored bun install v1.1.7 (b0b7db5c) Checked 11 installs across 13 packages (no changes) [62.00ms] [INFO]: 🎯 Checking for the Wasm target... [INFO]: 🌀 Compiling to Wasm... Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.85s [INFO]: ⬇️ Installing wasm-bindgen... [INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended [INFO]: origin crate has no LICENSE [INFO]: ✨ Done in 2.15s [INFO]: 📦 Your wasm pkg is ready to publish at C:\home\git\polyglot\apps\spiral\temp\extension\pkg. ▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta] pkg/spiral_temp_extension.js:1456:66: 1456 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url); ╵ ~~~~~~~~~~~ You need to set the output format to "esm" for "import.meta" to work correctly. 1 warning dist\spiral_temp_extension_bg-VVRUMPRT.wasm 4.5mb ⚠️ dist\devtools.js 29.0kb dist\content_script.js 26.7kb dist\service_worker.js 2.2kb ⚡ Done in 56ms $ playwright test [WebServer] Resolving dependencies [WebServer] Resolved, downloaded and extracted [158] [WebServer] Saved lockfile Running 3 tests using 3 workers [1/3] [Desktop Chrome] › extension.spec.ts:3:5 › popup localhost [2/3] [Desktop Chrome] › extension.spec.ts:13:5 › libgen [3/3] [Desktop Chrome] › extension.spec.ts:8:5 › popup extension 3 passed (21.0s) To open last HTML report run: npx playwright show-report 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 "dib --path build.dib"; options = { command = ../../../../workspace/target/release/spiral_builder.exe dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/temp/test/build.dib" --output-path "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #4 > > 00:00:02 v #5 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #6 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #7 > > │ # test │ 00:00:02 v #8 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #9 > > 00:00:02 v #10 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #11 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #12 > > │ ## include scripts │ 00:00:02 v #13 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #14 > > 00:00:02 v #15 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #16 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #17 > > │ ### include notebook core │ 00:00:02 v #18 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #19 > > 00:00:02 v #20 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 v #21 > > . ../../../../scripts/nbs_header.ps1 00:00:02 v #22 > > 00:00:02 v #23 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #24 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #25 > > │ ### Include core functions script │ 00:00:02 v #26 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #27 > > 00:00:02 v #28 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 v #29 > > . ../../../../scripts/core.ps1 00:00:02 v #30 > > 00:00:02 v #31 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #32 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 v #33 > > │ ### Include spiral library │ 00:00:02 v #34 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 v #35 > > 00:00:02 v #36 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 v #37 > > . ../../../../lib/spiral/lib.ps1 00:00:03 v #38 > > 00:00:03 v #39 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #40 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:03 v #41 > > │ ## execute project commands │ 00:00:03 v #42 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:03 v #43 > > 00:00:03 v #44 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #45 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:03 v #46 > > │ ### run notebook with retries using spiral supervisor │ 00:00:03 v #47 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:03 v #48 > > 00:00:03 v #49 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:03 v #50 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command 00:00:03 v #51 > > "../../../../workspace/target/release/spiral_builder$(_exe) dib --path test.dib 00:00:03 v #52 > > --retries 3" } | Invoke-Block 00:00:17 v #53 > > 00:00:17 v #54 > > ╭─[ 14.31s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:17 v #55 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } │ 00:00:17 v #56 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { file_name = │ 00:00:17 v #57 > > │ ../../../../workspace/target/release/spiral_builder.exe; arguments = US5_0 │ 00:00:17 v #58 > > │ "dib --path test.dib --retries 3"; options = { command = │ 00:00:17 v #59 > > │ ../../../../workspace/target/release/spiral_builder.exe dib --path test.dib │ 00:00:17 v #60 > > │ --retries 3; cancellation_token = Some System.Threading.CancellationToken; │ 00:00:17 v #61 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:00:17 v #62 > > │ working_directory = None } } │ 00:00:17 v #63 > > │ 00:00:00 v #2 > 00:00:00 d #1 spiral_builder.main / { args = │ 00:00:17 v #64 > > │ Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) } │ 00:00:17 v #65 > > │ 00:00:00 v #3 > 00:00:00 d #2 runtime.execute_with_options / { │ 00:00:17 v #66 > > │ file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", │ 00:00:17 v #67 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib", "--output-path", │ 00:00:17 v #68 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; options = { │ 00:00:17 v #69 > > │ command = dotnet repl --exit-after-run --run │ 00:00:17 v #70 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib" --output-path │ 00:00:17 v #71 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"; │ 00:00:17 v #72 > > │ cancellation_token = None; environment_variables = Array(MutCell([ │ 00:00:17 v #73 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │ 00:00:17 v #74 > > │ = None; trace = false; working_directory = None } } │ 00:00:17 v #75 > > │ 00:00:02 v #4 > > │ 00:00:17 v #76 > > │ 00:00:02 v #5 > > ── markdown │ 00:00:17 v #77 > > │ ──────────────────────────────────────────────────────────────────── │ 00:00:17 v #78 > > │ 00:00:02 v #6 > > │ 00:00:17 v #79 > > │ ╭─────────────────────────────────────────────────────────────────────────── │ 00:00:17 v #80 > > │ ───╮ │ 00:00:17 v #81 > > │ 00:00:02 v #7 > > │ # test (Polyglot) │ 00:00:17 v #82 > > │ │ │ 00:00:17 v #83 > > │ 00:00:02 v #8 > > │ 00:00:17 v #84 > > │ ╰─────────────────────────────────────────────────────────────────────────── │ 00:00:17 v #85 > > │ ───╯ │ 00:00:17 v #86 > > │ 00:00:05 v #9 > > │ 00:00:17 v #87 > > │ 00:00:05 v #10 > > ── spiral │ 00:00:17 v #88 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #89 > > │ 00:00:05 v #11 > > //// test │ 00:00:17 v #90 > > │ 00:00:05 v #12 > > │ 00:00:17 v #91 > > │ 00:00:05 v #13 > > open testing │ 00:00:17 v #92 > > │ 00:00:06 v #14 > > │ 00:00:17 v #93 > > │ 00:00:06 v #15 > > ── spiral │ 00:00:17 v #94 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #95 > > │ 00:00:06 v #16 > > nominal i = () │ 00:00:17 v #96 > > │ 00:00:06 v #17 > > nominal e = () │ 00:00:17 v #97 > > │ 00:00:06 v #18 > > nominal s = () │ 00:00:17 v #98 > > │ 00:00:06 v #19 > > nominal n = () │ 00:00:17 v #99 > > │ 00:00:06 v #20 > > nominal t = () │ 00:00:17 v #100 > > │ 00:00:06 v #21 > > nominal f = () │ 00:00:17 v #101 > > │ 00:00:06 v #22 > > nominal j = () │ 00:00:17 v #102 > > │ 00:00:06 v #23 > > nominal p = () │ 00:00:17 v #103 > > │ 00:00:06 v #24 > > │ 00:00:17 v #104 > > │ 00:00:06 v #25 > > union sensing = │ 00:00:17 v #105 > > │ 00:00:06 v #26 > > | Si : s * i │ 00:00:17 v #106 > > │ 00:00:06 v #27 > > | Se : s * e │ 00:00:17 v #107 > > │ 00:00:06 v #28 > > │ 00:00:17 v #108 > > │ 00:00:06 v #29 > > union intuition = │ 00:00:17 v #109 > > │ 00:00:06 v #30 > > | Ni : n * i │ 00:00:17 v #110 > > │ 00:00:06 v #31 > > | Ne : n * e │ 00:00:17 v #111 > > │ 00:00:06 v #32 > > │ 00:00:17 v #112 > > │ 00:00:06 v #33 > > union thinking = │ 00:00:17 v #113 > > │ 00:00:06 v #34 > > | Ti : t * i │ 00:00:17 v #114 > > │ 00:00:06 v #35 > > | Te : t * e │ 00:00:17 v #115 > > │ 00:00:06 v #36 > > │ 00:00:17 v #116 > > │ 00:00:06 v #37 > > union feeling = │ 00:00:17 v #117 > > │ 00:00:06 v #38 > > | Fi : f * i │ 00:00:17 v #118 > > │ 00:00:06 v #39 > > | Fe : f * e │ 00:00:17 v #119 > > │ 00:00:06 v #40 > > │ 00:00:17 v #120 > > │ 00:00:06 v #41 > > union function_stack = │ 00:00:17 v #121 > > │ 00:00:06 v #42 > > | FS : sensing * intuition * thinking * feeling │ 00:00:17 v #122 > > │ 00:00:06 v #43 > > │ 00:00:17 v #123 > > │ 00:00:06 v #44 > > union personality_type = │ 00:00:17 v #124 > > │ 00:00:06 v #45 > > | ISTJ : i * s * t * j * function_stack │ 00:00:17 v #125 > > │ 00:00:06 v #46 > > | ISFJ : i * s * f * j * function_stack │ 00:00:17 v #126 > > │ 00:00:06 v #47 > > | INFJ : i * n * f * j * function_stack │ 00:00:17 v #127 > > │ 00:00:06 v #48 > > | INTJ : i * n * t * j * function_stack │ 00:00:17 v #128 > > │ 00:00:06 v #49 > > | ISTP : i * s * t * p * function_stack │ 00:00:17 v #129 > > │ 00:00:06 v #50 > > | ISFP : i * s * f * p * function_stack │ 00:00:17 v #130 > > │ 00:00:06 v #51 > > | INFP : i * n * f * p * function_stack │ 00:00:17 v #131 > > │ 00:00:06 v #52 > > | INTP : i * n * t * p * function_stack │ 00:00:17 v #132 > > │ 00:00:06 v #53 > > | ESTP : e * s * t * p * function_stack │ 00:00:17 v #133 > > │ 00:00:06 v #54 > > | ESFP : e * s * f * p * function_stack │ 00:00:17 v #134 > > │ 00:00:06 v #55 > > | ENFP : e * n * f * p * function_stack │ 00:00:17 v #135 > > │ 00:00:06 v #56 > > | ENTP : e * n * t * p * function_stack │ 00:00:17 v #136 > > │ 00:00:06 v #57 > > | ESTJ : e * s * t * j * function_stack │ 00:00:17 v #137 > > │ 00:00:06 v #58 > > | ESFJ : e * s * f * j * function_stack │ 00:00:17 v #138 > > │ 00:00:06 v #59 > > | ENFJ : e * n * f * j * function_stack │ 00:00:17 v #139 > > │ 00:00:06 v #60 > > | ENTJ : e * n * t * j * function_stack │ 00:00:17 v #140 > > │ 00:00:06 v #61 > > │ 00:00:17 v #141 > > │ 00:00:06 v #62 > > │ 00:00:17 v #142 > > │ 00:00:06 v #63 > > inl main () = │ 00:00:17 v #143 > > │ 00:00:06 v #64 > > inl istj_stack = FS ((Si (s, i)), Ne (n, e), (Te │ 00:00:17 v #144 > > │ (t, e)), (Fi (f, i))) │ 00:00:17 v #145 > > │ 00:00:06 v #65 > > inl istj_personality = ISTJ (i, s, t, j, │ 00:00:17 v #146 > > │ istj_stack) │ 00:00:17 v #147 > > │ 00:00:06 v #66 > > // inl isfj_stack = FS ((Si (s, i)), Ne (n, e), │ 00:00:17 v #148 > > │ (Fe (f, e)), (Ti (t, i))) │ 00:00:17 v #149 > > │ 00:00:06 v #67 > > // inl isfj_personality = ISFJ (i, s, f, j, │ 00:00:17 v #150 > > │ isfj_stack) │ 00:00:17 v #151 > > │ 00:00:06 v #68 > > │ 00:00:17 v #152 > > │ 00:00:06 v #69 > > ;[[ │ 00:00:17 v #153 > > │ 00:00:06 v #70 > > istj_personality │ 00:00:17 v #154 > > │ 00:00:06 v #71 > > ]] │ 00:00:17 v #155 > > │ 00:00:06 v #72 > > |> fun x => $'$"%A{!x}"' : string │ 00:00:17 v #156 > > │ 00:00:06 v #73 > > |> console.write_line │ 00:00:17 v #157 > > │ 00:00:06 v #74 > > │ 00:00:17 v #158 > > │ 00:00:06 v #75 > > inl main () = │ 00:00:17 v #159 > > │ 00:00:06 v #76 > > $'!main ()' : () │ 00:00:17 v #160 > > │ 00:00:08 v #77 > > │ 00:00:17 v #161 > > │ 00:00:08 v #78 > > ╭─[ 1.63s - stdout │ 00:00:17 v #162 > > │ ]───────────────────────────────────────────────────────────╮ │ 00:00:17 v #163 > > │ 00:00:08 v #79 > > │ [|US5_0 (US4_0 (US0_0, US1_1, US2_1, US3_0))|] │ 00:00:17 v #164 > > │ │ │ 00:00:17 v #165 > > │ 00:00:08 v #80 > > │ │ 00:00:17 v #166 > > │ │ 00:00:17 v #167 > > │ │ │ 00:00:17 v #168 > > │ 00:00:08 v #81 > > │ 00:00:17 v #169 > > │ ╰─────────────────────────────────────────────────────────────────────────── │ 00:00:17 v #170 > > │ ───╯ │ 00:00:17 v #171 > > │ 00:00:09 v #82 > > │ 00:00:17 v #172 > > │ 00:00:09 v #83 > > ── fsharp │ 00:00:17 v #173 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #174 > > │ 00:00:09 v #84 > > type PhonologicalFeature = │ 00:00:17 v #175 > > │ 00:00:09 v #85 > > | VowelFeature of │ 00:00:17 v #176 > > │ 00:00:09 v #86 > > height: Height │ 00:00:17 v #177 > > │ 00:00:09 v #87 > > * backness: Backness │ 00:00:17 v #178 > > │ 00:00:09 v #88 > > * roundedness: Roundedness │ 00:00:17 v #179 > > │ 00:00:09 v #89 > > * tone: Option<Tone> │ 00:00:17 v #180 > > │ 00:00:09 v #90 > > * stress: Option<Stress> │ 00:00:17 v #181 > > │ 00:00:09 v #91 > > * length: Option<Length> │ 00:00:17 v #182 > > │ 00:00:09 v #92 > > | ConsonantFeature of │ 00:00:17 v #183 > > │ 00:00:09 v #93 > > place: PlaceOfArticulation │ 00:00:17 v #184 > > │ 00:00:09 v #94 > > * manner: MannerOfArticulation │ 00:00:17 v #185 > > │ 00:00:09 v #95 > > * voicing: Voicing │ 00:00:17 v #186 > > │ 00:00:09 v #96 > > * length: Option<Length> │ 00:00:17 v #187 > > │ 00:00:09 v #97 > > | VowelHarmonyFeature │ 00:00:17 v #188 > > │ 00:00:09 v #98 > > | PitchAccentFeature │ 00:00:17 v #189 > > │ 00:00:09 v #99 > > │ 00:00:17 v #190 > > │ 00:00:09 v #100 > > and Stress = Primary | Secondary │ 00:00:17 v #191 > > │ 00:00:09 v #101 > > and Length = Long | Short | HalfLong │ 00:00:17 v #192 > > │ 00:00:09 v #102 > > │ 00:00:17 v #193 > > │ 00:00:09 v #103 > > and Height = │ 00:00:17 v #194 > > │ 00:00:09 v #104 > > | High | NearHigh | HighMid │ 00:00:17 v #195 > > │ 00:00:09 v #105 > > | Mid | LowMid | NearLow │ 00:00:17 v #196 > > │ 00:00:09 v #106 > > | Low │ 00:00:17 v #197 > > │ 00:00:09 v #107 > > │ 00:00:17 v #198 > > │ 00:00:09 v #108 > > and Backness = Front | Central | Back │ 00:00:17 v #199 > > │ 00:00:09 v #109 > > │ 00:00:17 v #200 > > │ 00:00:09 v #110 > > and Roundedness = Rounded | Unrounded │ 00:00:17 v #201 > > │ 00:00:09 v #111 > > │ 00:00:17 v #202 > > │ 00:00:09 v #112 > > and PlaceOfArticulation = │ 00:00:17 v #203 > > │ 00:00:09 v #113 > > | Bilabial | Labiodental | Dental │ 00:00:17 v #204 > > │ 00:00:09 v #114 > > | Alveolar | Postalveolar | Retroflex │ 00:00:17 v #205 > > │ 00:00:09 v #115 > > | Palatal | Velar | Uvular │ 00:00:17 v #206 > > │ 00:00:09 v #116 > > | Pharyngeal | Epiglottal | Glottal │ 00:00:17 v #207 > > │ 00:00:09 v #117 > > │ 00:00:17 v #208 > > │ 00:00:09 v #118 > > and MannerOfArticulation = │ 00:00:17 v #209 > > │ 00:00:09 v #119 > > | Plosive | Nasal | Trill │ 00:00:17 v #210 > > │ 00:00:09 v #120 > > | TapOrFlap | Fricative | LateralFricative │ 00:00:17 v #211 > > │ 00:00:09 v #121 > > | Approximant | LateralApproximant │ 00:00:17 v #212 > > │ 00:00:09 v #122 > > │ 00:00:17 v #213 > > │ 00:00:09 v #123 > > and Voicing = Voiced | Voiceless │ 00:00:17 v #214 > > │ 00:00:09 v #124 > > │ 00:00:17 v #215 > > │ 00:00:09 v #125 > > and SecondaryArticulation = │ 00:00:17 v #216 > > │ 00:00:09 v #126 > > | Labialization | Palatalization | Velarization │ 00:00:17 v #217 > > │ 00:00:09 v #127 > > | Pharyngealization | Aspiration │ 00:00:17 v #218 > > │ 00:00:09 v #128 > > │ 00:00:17 v #219 > > │ 00:00:09 v #129 > > and Tone = │ 00:00:17 v #220 > > │ 00:00:09 v #130 > > | LevelTone of int │ 00:00:17 v #221 > > │ 00:00:09 v #131 > > | ContourTone of int list │ 00:00:17 v #222 > > │ 00:00:09 v #132 > > │ 00:00:17 v #223 > > │ 00:00:09 v #133 > > and MorphologicalFeature = │ 00:00:17 v #224 > > │ 00:00:09 v #134 > > | RootFeature of string │ 00:00:17 v #225 > > │ 00:00:09 v #135 > > | AffixFeature of AffixType * string │ 00:00:17 v #226 > > │ 00:00:09 v #136 > > | IncorporationFeature of string * │ 00:00:17 v #227 > > │ MorphologicalFeature │ 00:00:17 v #228 > > │ 00:00:09 v #137 > > | NonConcatenativePattern of string * string │ 00:00:17 v #229 > > │ 00:00:09 v #138 > > | AgglutinativeAffixFeature of │ 00:00:17 v #230 > > │ AgglutinativeAffixType * string │ 00:00:17 v #231 > > │ 00:00:09 v #139 > > | HonorificFeature of HonorificType * string │ 00:00:17 v #232 > > │ 00:00:09 v #140 > > │ 00:00:17 v #233 > > │ 00:00:09 v #141 > > and AgglutinativeAffixType = Suffix | Prefix │ 00:00:17 v #234 > > │ 00:00:09 v #142 > > │ 00:00:17 v #235 > > │ 00:00:09 v #143 > > and HonorificType = VerbHonorific | NounHonorific │ 00:00:17 v #236 > > │ 00:00:09 v #144 > > │ 00:00:17 v #237 > > │ 00:00:09 v #145 > > and AffixType = │ 00:00:17 v #238 > > │ 00:00:09 v #146 > > | Prefix | Suffix | Infix │ 00:00:17 v #239 > > │ 00:00:09 v #147 > > | Circumfix │ 00:00:17 v #240 > > │ 00:00:09 v #148 > > │ 00:00:17 v #241 > > │ 00:00:09 v #149 > > type SyntacticFeature = │ 00:00:17 v #242 > > │ 00:00:09 v #150 > > | WordFeature of MorphologicalFeature list * │ 00:00:17 v #243 > > │ LexicalCategory │ 00:00:17 v #244 > > │ 00:00:09 v #151 > > | PhraseFeature of PhraseType * │ 00:00:17 v #245 > > │ SyntacticFeature list │ 00:00:17 v #246 > > │ 00:00:09 v #152 > > | GrammaticalRelation of │ 00:00:17 v #247 > > │ GrammaticalRelationType * SyntacticFeature list │ 00:00:17 v #248 > > │ 00:00:09 v #153 > > | SOVOrderFeature │ 00:00:17 v #249 > > │ 00:00:09 v #154 > > | TopicCommentFeature │ 00:00:17 v #250 > > │ 00:00:09 v #155 > > │ 00:00:17 v #251 > > │ 00:00:09 v #156 > > and GrammaticalRelationType = │ 00:00:17 v #252 > > │ 00:00:09 v #157 > > | Ergative | Absolutive | Nominative │ 00:00:17 v #253 > > │ 00:00:09 v #158 > > | Accusative │ 00:00:17 v #254 > > │ 00:00:09 v #159 > > │ 00:00:17 v #255 > > │ 00:00:09 v #160 > > and LexicalCategory = │ 00:00:17 v #256 > > │ 00:00:09 v #161 > > | Noun | Verb | Adjective │ 00:00:17 v #257 > > │ 00:00:09 v #162 > > | Adverb | Pronoun | Preposition │ 00:00:17 v #258 > > │ 00:00:09 v #163 > > | Conjunction | Determiner | Interjection │ 00:00:17 v #259 > > │ 00:00:09 v #164 > > │ 00:00:17 v #260 > > │ 00:00:09 v #165 > > and PhraseType = │ 00:00:17 v #261 > > │ 00:00:09 v #166 > > | NP | VP | AP │ 00:00:17 v #262 > > │ 00:00:09 v #167 > > | PP | CP │ 00:00:17 v #263 > > │ 00:00:09 v #168 > > │ 00:00:17 v #264 > > │ 00:00:09 v #169 > > and SemanticFeature = │ 00:00:17 v #265 > > │ 00:00:09 v #170 > > | Meaning of string │ 00:00:17 v #266 > > │ 00:00:09 v #171 > > | SemanticRole of SemanticRoleType * │ 00:00:17 v #267 > > │ SemanticFeature │ 00:00:17 v #268 > > │ 00:00:09 v #172 > > │ 00:00:17 v #269 > > │ 00:00:09 v #173 > > and SemanticRoleType = │ 00:00:17 v #270 > > │ 00:00:09 v #174 > > | Agent | Patient | Instrument │ 00:00:17 v #271 > > │ 00:00:09 v #175 > > | Location | Time | Cause │ 00:00:17 v #272 > > │ 00:00:09 v #176 > > │ 00:00:17 v #273 > > │ 00:00:09 v #177 > > and PragmaticFeature = │ 00:00:17 v #274 > > │ 00:00:09 v #178 > > | UseContext of string │ 00:00:17 v #275 > > │ 00:00:09 v #179 > > | PolitenessLevel of Politeness │ 00:00:17 v #276 > > │ 00:00:09 v #180 > > | SpeechAct of SpeechActType │ 00:00:17 v #277 > > │ 00:00:09 v #181 > > | SpeechLevel of SpeechLevelType │ 00:00:17 v #278 > > │ 00:00:09 v #182 > > │ 00:00:17 v #279 > > │ 00:00:09 v #183 > > and Politeness = Formal | Informal | Neutral │ 00:00:17 v #280 > > │ 00:00:09 v #184 > > │ 00:00:17 v #281 > > │ 00:00:09 v #185 > > and SpeechActType = │ 00:00:17 v #282 > > │ 00:00:09 v #186 > > | Assertive | Directive | Commissive │ 00:00:17 v #283 > > │ 00:00:09 v #187 > > | Expressive | Declarative │ 00:00:17 v #284 > > │ 00:00:09 v #188 > > │ 00:00:17 v #285 > > │ 00:00:09 v #189 > > and SpeechLevelType = │ 00:00:17 v #286 > > │ 00:00:09 v #190 > > | FormalHigh | FormalLow | InformalHigh │ 00:00:17 v #287 > > │ 00:00:09 v #191 > > | InformalLow | Neutral │ 00:00:17 v #288 > > │ 00:00:09 v #192 > > │ 00:00:17 v #289 > > │ 00:00:09 v #193 > > type LinguisticFeature = │ 00:00:17 v #290 > > │ 00:00:09 v #194 > > | Phonological of PhonologicalFeature │ 00:00:17 v #291 > > │ 00:00:09 v #195 > > | Morphological of MorphologicalFeature │ 00:00:17 v #292 > > │ 00:00:09 v #196 > > | Syntactic of SyntacticFeature │ 00:00:17 v #293 > > │ 00:00:09 v #197 > > | Semantic of SemanticFeature │ 00:00:17 v #294 > > │ 00:00:09 v #198 > > | Pragmatic of PragmaticFeature │ 00:00:17 v #295 > > │ 00:00:09 v #199 > > │ 00:00:17 v #296 > > │ 00:00:09 v #200 > > type LanguageConstruct = │ 00:00:17 v #297 > > │ 00:00:09 v #201 > > | LanguageElement of LinguisticFeature │ 00:00:17 v #298 > > │ 00:00:09 v #202 > > | LanguageStructure of LanguageConstruct list │ 00:00:17 v #299 > > │ 00:00:09 v #203 > > | TranslationElement of TranslationFeature │ 00:00:17 v #300 > > │ 00:00:09 v #204 > > │ 00:00:17 v #301 > > │ 00:00:09 v #205 > > and TranslationFeature = │ 00:00:17 v #302 > > │ 00:00:09 v #206 > > | LinkedPhonological of PhonologicalFeature * │ 00:00:17 v #303 > > │ PhonologicalFeature │ 00:00:17 v #304 > > │ 00:00:09 v #207 > > | LinkedMorphological of MorphologicalFeature * │ 00:00:17 v #305 > > │ MorphologicalFeature │ 00:00:17 v #306 > > │ 00:00:09 v #208 > > | LinkedSyntactic of SyntacticFeature * │ 00:00:17 v #307 > > │ SyntacticFeature │ 00:00:17 v #308 > > │ 00:00:09 v #209 > > | LinkedSemantic of SemanticFeature * │ 00:00:17 v #309 > > │ SemanticFeature │ 00:00:17 v #310 > > │ 00:00:09 v #210 > > │ 00:00:17 v #311 > > │ 00:00:09 v #211 > > type Discourse = DiscourseUnit of LanguageConstruct │ 00:00:17 v #312 > > │ list │ 00:00:17 v #313 > > │ 00:00:09 v #212 > > │ 00:00:17 v #314 > > │ 00:00:09 v #213 > > type LanguageModel = │ 00:00:17 v #315 > > │ 00:00:09 v #214 > > | Model of discourse: Discourse │ 00:00:17 v #316 > > │ 00:00:10 v #215 > > │ 00:00:17 v #317 > > │ 00:00:10 v #216 > > ── fsharp │ 00:00:17 v #318 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #319 > > │ 00:00:10 v #217 > > let testEnglish = │ 00:00:17 v #320 > > │ 00:00:10 v #218 > > Model( │ 00:00:17 v #321 > > │ 00:00:10 v #219 > > DiscourseUnit [[ │ 00:00:17 v #322 > > │ 00:00:10 v #220 > > LanguageElement (Phonological │ 00:00:17 v #323 > > │ (ConsonantFeature (Alveolar, Nasal, │ 00:00:17 v #324 > > │ 00:00:10 v #221 > > Voiced, Some(HalfLong)))); │ 00:00:17 v #325 > > │ 00:00:10 v #222 > > LanguageElement (Phonological │ 00:00:17 v #326 > > │ (VowelFeature (High, Front, Unrounded, │ 00:00:17 v #327 > > │ 00:00:10 v #223 > > Some(LevelTone 1), Some(Primary), Some(Short)))); │ 00:00:17 v #328 > > │ 00:00:10 v #224 > > LanguageElement (Phonological │ 00:00:17 v #329 > > │ (VowelFeature (Low, Front, Unrounded, │ 00:00:17 v #330 > > │ 00:00:10 v #225 > > Some(LevelTone 2), Some(Secondary), Some(Long)))); │ 00:00:17 v #331 > > │ 00:00:10 v #226 > > LanguageElement (Phonological │ 00:00:17 v #332 > > │ (ConsonantFeature (Velar, Plosive, │ 00:00:17 v #333 > > │ 00:00:10 v #227 > > Voiceless, Some(HalfLong)))); │ 00:00:17 v #334 > > │ 00:00:10 v #228 > > LanguageElement (Morphological │ 00:00:17 v #335 > > │ (RootFeature "I")); │ 00:00:17 v #336 > > │ 00:00:10 v #229 > > LanguageElement (Morphological │ 00:00:17 v #337 > > │ (RootFeature "see")); │ 00:00:17 v #338 > > │ 00:00:10 v #230 > > LanguageElement (Morphological │ 00:00:17 v #339 > > │ (RootFeature "a")); │ 00:00:17 v #340 > > │ 00:00:10 v #231 > > LanguageElement (Morphological │ 00:00:17 v #341 > > │ (RootFeature "cat")); │ 00:00:17 v #342 > > │ 00:00:10 v #232 > > LanguageElement (Syntactic │ 00:00:17 v #343 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #344 > > │ 00:00:10 v #233 > > ([[RootFeature "I"]], Pronoun)]]))); │ 00:00:17 v #345 > > │ 00:00:10 v #234 > > LanguageElement (Syntactic │ 00:00:17 v #346 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:17 v #347 > > │ 00:00:10 v #235 > > ([[RootFeature "see"]], Verb)]]))); │ 00:00:17 v #348 > > │ 00:00:10 v #236 > > LanguageElement (Syntactic │ 00:00:17 v #349 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #350 > > │ 00:00:10 v #237 > > ([[RootFeature "a"; RootFeature "cat"]], │ 00:00:17 v #351 > > │ Noun)]]))); │ 00:00:17 v #352 > > │ 00:00:10 v #238 > > LanguageElement (Semantic (Meaning │ 00:00:17 v #353 > > │ "Perception act of a feline by │ 00:00:17 v #354 > > │ 00:00:10 v #239 > > the speaker")); │ 00:00:17 v #355 > > │ 00:00:10 v #240 > > LanguageElement (Pragmatic (UseContext │ 00:00:17 v #356 > > │ "Statement of an action being │ 00:00:17 v #357 > > │ 00:00:10 v #241 > > observed")) │ 00:00:17 v #358 > > │ 00:00:10 v #242 > > ]] │ 00:00:17 v #359 > > │ 00:00:10 v #243 > > ) │ 00:00:17 v #360 > > │ 00:00:10 v #244 > > │ 00:00:17 v #361 > > │ 00:00:10 v #245 > > let testPortuguese = │ 00:00:17 v #362 > > │ 00:00:10 v #246 > > Model( │ 00:00:17 v #363 > > │ 00:00:10 v #247 > > DiscourseUnit [[ │ 00:00:17 v #364 > > │ 00:00:10 v #248 > > LanguageElement (Phonological │ 00:00:17 v #365 > > │ (VowelFeature (High, Front, Unrounded, │ 00:00:17 v #366 > > │ 00:00:10 v #249 > > Some(LevelTone 1), Some(Primary), Some(Short)))); │ 00:00:17 v #367 > > │ 00:00:10 v #250 > > LanguageElement (Phonological │ 00:00:17 v #368 > > │ (VowelFeature (Low, Front, Unrounded, │ 00:00:17 v #369 > > │ 00:00:10 v #251 > > Some(LevelTone 2), Some(Secondary), Some(Long)))); │ 00:00:17 v #370 > > │ 00:00:10 v #252 > > LanguageElement (Phonological │ 00:00:17 v #371 > > │ (VowelFeature (Mid, Back, Rounded, │ 00:00:17 v #372 > > │ 00:00:10 v #253 > > Some(LevelTone 3), Some(Primary), Some(Short)))); │ 00:00:17 v #373 > > │ 00:00:10 v #254 > > LanguageElement (Phonological │ 00:00:17 v #374 > > │ (ConsonantFeature (Velar, Plosive, │ 00:00:17 v #375 > > │ 00:00:10 v #255 > > Voiceless, Some(HalfLong)))); │ 00:00:17 v #376 > > │ 00:00:10 v #256 > > LanguageElement (Morphological │ 00:00:17 v #377 > > │ (RootFeature "Eu")); │ 00:00:17 v #378 > > │ 00:00:10 v #257 > > LanguageElement (Morphological │ 00:00:17 v #379 > > │ (RootFeature "ver" |> ignore; │ 00:00:17 v #380 > > │ 00:00:10 v #258 > > AffixFeature (Suffix, "o"))); │ 00:00:17 v #381 > > │ 00:00:10 v #259 > > LanguageElement (Morphological │ 00:00:17 v #382 > > │ (RootFeature "um")); │ 00:00:17 v #383 > > │ 00:00:10 v #260 > > LanguageElement (Morphological │ 00:00:17 v #384 > > │ (RootFeature "gato")); │ 00:00:17 v #385 > > │ 00:00:10 v #261 > > LanguageElement (Syntactic │ 00:00:17 v #386 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #387 > > │ 00:00:10 v #262 > > ([[RootFeature "Eu"]], Pronoun)]]))); │ 00:00:17 v #388 > > │ 00:00:10 v #263 > > LanguageElement (Syntactic │ 00:00:17 v #389 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:17 v #390 > > │ 00:00:10 v #264 > > ([[RootFeature "vejo"]], Verb)]]))); │ 00:00:17 v #391 > > │ 00:00:10 v #265 > > LanguageElement (Syntactic │ 00:00:17 v #392 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #393 > > │ 00:00:10 v #266 > > ([[RootFeature "um"; RootFeature "gato"]], │ 00:00:17 v #394 > > │ Noun)]]))); │ 00:00:17 v #395 > > │ 00:00:10 v #267 > > LanguageElement (Semantic (Meaning │ 00:00:17 v #396 > > │ "Ação de percepção de um felino │ 00:00:17 v #397 > > │ 00:00:10 v #268 > > pelo falante")); │ 00:00:17 v #398 > > │ 00:00:10 v #269 > > LanguageElement (Pragmatic (UseContext │ 00:00:17 v #399 > > │ "Declaração de uma ação sendo │ 00:00:17 v #400 > > │ 00:00:10 v #270 > > observada")) │ 00:00:17 v #401 > > │ 00:00:10 v #271 > > ]] │ 00:00:17 v #402 > > │ 00:00:10 v #272 > > ) │ 00:00:17 v #403 > > │ 00:00:10 v #273 > > │ 00:00:17 v #404 > > │ 00:00:10 v #274 > > let testKorean = │ 00:00:17 v #405 > > │ 00:00:10 v #275 > > Model( │ 00:00:17 v #406 > > │ 00:00:10 v #276 > > DiscourseUnit [[ │ 00:00:17 v #407 > > │ 00:00:10 v #277 > > LanguageElement (Phonological │ 00:00:17 v #408 > > │ (ConsonantFeature (Alveolar, Nasal, │ 00:00:17 v #409 > > │ 00:00:10 v #278 > > Voiced, Some(Short)))); │ 00:00:17 v #410 > > │ 00:00:10 v #279 > > LanguageElement (Phonological │ 00:00:17 v #411 > > │ (VowelFeature (High, Back, Rounded, │ 00:00:17 v #412 > > │ 00:00:10 v #280 > > None, None, Some(Short)))); │ 00:00:17 v #413 > > │ 00:00:10 v #281 > > LanguageElement (Phonological │ 00:00:17 v #414 > > │ (VowelFeature (Mid, Front, Unrounded, │ 00:00:17 v #415 > > │ 00:00:10 v #282 > > None, None, Some(Long)))); │ 00:00:17 v #416 > > │ 00:00:10 v #283 > > LanguageElement (Phonological │ 00:00:17 v #417 > > │ (ConsonantFeature (Bilabial, Plosive, │ 00:00:17 v #418 > > │ 00:00:10 v #284 > > Voiceless, Some(Short)))); │ 00:00:17 v #419 > > │ 00:00:10 v #285 > > LanguageElement (Morphological │ 00:00:17 v #420 > > │ (RootFeature "나")); │ 00:00:17 v #421 > > │ 00:00:10 v #286 > > LanguageElement (Morphological │ 00:00:17 v #422 > > │ (RootFeature "보다")); │ 00:00:17 v #423 > > │ 00:00:10 v #287 > > LanguageElement (Morphological │ 00:00:17 v #424 > > │ (AffixFeature (Suffix, "아"))); │ 00:00:17 v #425 > > │ 00:00:10 v #288 > > LanguageElement (Morphological │ 00:00:17 v #426 > > │ (RootFeature "고양이")); │ 00:00:17 v #427 > > │ 00:00:10 v #289 > > LanguageElement (Syntactic │ 00:00:17 v #428 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #429 > > │ 00:00:10 v #290 > > ([[RootFeature "나"]], Pronoun)]]))); │ 00:00:17 v #430 > > │ 00:00:10 v #291 > > LanguageElement (Syntactic │ 00:00:17 v #431 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:17 v #432 > > │ 00:00:10 v #292 > > ([[RootFeature "보다"; AffixFeature (Suffix, │ 00:00:17 v #433 > > │ "아")]], Verb)]]))); │ 00:00:17 v #434 > > │ 00:00:10 v #293 > > LanguageElement (Syntactic │ 00:00:17 v #435 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:17 v #436 > > │ 00:00:10 v #294 > > ([[RootFeature "고양이"]], Noun)]]))); │ 00:00:17 v #437 > > │ 00:00:10 v #295 > > LanguageElement (Semantic (Meaning │ 00:00:17 v #438 > > │ "화자에 의한 고양이의 관찰 │ 00:00:17 v #439 > > │ 00:00:10 v #296 > > 행위")); │ 00:00:17 v #440 > > │ 00:00:10 v #297 > > LanguageElement (Pragmatic (UseContext │ 00:00:17 v #441 > > │ "관찰되고 있는 행동의 진술")) │ 00:00:17 v #442 > > │ 00:00:10 v #298 > > ]] │ 00:00:17 v #443 > > │ 00:00:10 v #299 > > ) │ 00:00:17 v #444 > > │ 00:00:10 v #300 > > │ 00:00:17 v #445 > > │ 00:00:10 v #301 > > ── markdown │ 00:00:17 v #446 > > │ ──────────────────────────────────────────────────────────────────── │ 00:00:17 v #447 > > │ 00:00:10 v #302 > > │ 00:00:17 v #448 > > │ ╭─────────────────────────────────────────────────────────────────────────── │ 00:00:17 v #449 > > │ ───╮ │ 00:00:17 v #450 > > │ 00:00:10 v #303 > > │ ## main │ 00:00:17 v #451 > > │ │ │ 00:00:17 v #452 > > │ 00:00:10 v #304 > > │ 00:00:17 v #453 > > │ ╰─────────────────────────────────────────────────────────────────────────── │ 00:00:17 v #454 > > │ ───╯ │ 00:00:17 v #455 > > │ 00:00:10 v #305 > > │ 00:00:17 v #456 > > │ 00:00:10 v #306 > > ── spiral │ 00:00:17 v #457 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #458 > > │ 00:00:10 v #307 > > inl main (_args : array_base string) = │ 00:00:17 v #459 > > │ 00:00:10 v #308 > > 0i32 │ 00:00:17 v #460 > > │ 00:00:10 v #309 > > │ 00:00:17 v #461 > > │ 00:00:10 v #310 > > inl main () = │ 00:00:17 v #462 > > │ 00:00:10 v #311 > > $'let main args = !main args' : () │ 00:00:17 v #463 > > │ 00:00:10 v #312 > > │ 00:00:17 v #464 > > │ 00:00:10 v #313 > > ── spiral │ 00:00:17 v #465 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:17 v #466 > > │ 00:00:10 v #314 > > inl app () = │ 00:00:17 v #467 > > │ 00:00:10 v #315 > > "test" |> console.write_line │ 00:00:17 v #468 > > │ 00:00:10 v #316 > > 0i32 │ 00:00:17 v #469 > > │ 00:00:10 v #317 > > │ 00:00:17 v #470 > > │ 00:00:10 v #318 > > inl main () = │ 00:00:17 v #471 > > │ 00:00:10 v #319 > > print_static "<test>" │ 00:00:17 v #472 > > │ 00:00:10 v #320 > > │ 00:00:17 v #473 > > │ 00:00:10 v #321 > > app │ 00:00:17 v #474 > > │ 00:00:10 v #322 > > |> dyn │ 00:00:17 v #475 > > │ 00:00:10 v #323 > > |> ignore │ 00:00:17 v #476 > > │ 00:00:10 v #324 > > │ 00:00:17 v #477 > > │ 00:00:10 v #325 > > print_static "</test>" │ 00:00:17 v #478 > > │ 00:00:11 v #326 > 00:00:10 v #3 runtime.execute_with_options / │ 00:00:17 v #479 > > │ result / { exit_code = 0; std_trace_length = 10945 } │ 00:00:17 v #480 > > │ 00:00:11 v #327 > 00:00:10 d #4 runtime.execute_with_options / { │ 00:00:17 v #481 > > │ file_name = jupyter; arguments = ["nbconvert", │ 00:00:17 v #482 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb", "--to", "html", │ 00:00:17 v #483 > > │ "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert │ 00:00:17 v #484 > > │ "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to html │ 00:00:17 v #485 > > │ --HTMLExporter.theme=dark; cancellation_token = None; environment_variables │ 00:00:17 v #486 > > │ = Array(MutCell([])); on_line = None; stdin = None; trace = true; │ 00:00:17 v #487 > > │ working_directory = None } } │ 00:00:17 v #488 > > │ 00:00:12 v #328 > 00:00:11 v #5 ! [NbConvertApp] Converting │ 00:00:17 v #489 > > │ notebook c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb to html │ 00:00:17 v #490 > > │ 00:00:12 v #329 > 00:00:11 v #6 ! │ 00:00:17 v #491 > > │ C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__ini │ 00:00:17 v #492 > > │ t__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will │ 00:00:17 v #493 > > │ become a hard error in future nbformat versions. You may want to use │ 00:00:17 v #494 > > │ `normalize()` on your notebooks before validations (available since nbformat │ 00:00:17 v #495 > > │ 5.1.4). Previous versions of nbformat are fixing this issue transparently, │ 00:00:17 v #496 > > │ and will stop doing so in the future. │ 00:00:17 v #497 > > │ 00:00:12 v #330 > 00:00:11 v #7 ! validate(nb) │ 00:00:17 v #498 > > │ 00:00:13 v #331 > 00:00:12 v #8 ! │ 00:00:17 v #499 > > │ C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filt │ 00:00:17 v #500 > > │ ers\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back │ 00:00:17 v #501 > > │ on Python 3 │ 00:00:17 v #502 > > │ 00:00:13 v #332 > 00:00:12 v #9 ! return _pygments_highlight( │ 00:00:17 v #503 > > │ 00:00:13 v #333 > 00:00:12 v #10 ! [NbConvertApp] Writing 318992 │ 00:00:17 v #504 > > │ bytes to c:\home\git\polyglot\apps\spiral\temp\test\test.dib.html │ 00:00:17 v #505 > > │ 00:00:13 v #334 > 00:00:12 v #11 runtime.execute_with_options / │ 00:00:17 v #506 > > │ result / { exit_code = 0; std_trace_length = 872 } │ 00:00:17 v #507 > > │ 00:00:13 v #335 > 00:00:12 d #12 spiral_builder.run / dib / │ 00:00:17 v #508 > > │ jupyter nbconvert / { exit_code = 0; jupyter_result_length = 872 } │ 00:00:17 v #509 > > │ 00:00:13 v #336 > 00:00:12 d #13 runtime.execute_with_options / { │ 00:00:17 v #510 > > │ file_name = pwsh; arguments = ["-c", "$counter = 1; $path = │ 00:00:17 v #511 > > │ 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content │ 00:00:17 v #512 > > │ $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value │ 00:00:17 v #513 > > │ + $counter++ } | Set-Content $path"]; options = { command = pwsh -c │ 00:00:17 v #514 > > │ "$counter = 1; $path = │ 00:00:17 v #515 > > │ 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content │ 00:00:17 v #516 > > │ $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + │ 00:00:17 v #517 > > │ $counter++ } | Set-Content $path"; cancellation_token = None; │ 00:00:17 v #518 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None; │ 00:00:17 v #519 > > │ trace = true; working_directory = None } } │ 00:00:17 v #520 > > │ 00:00:14 v #337 > 00:00:13 v #14 runtime.execute_with_options / │ 00:00:17 v #521 > > │ result / { exit_code = 0; std_trace_length = 0 } │ 00:00:17 v #522 > > │ 00:00:14 v #338 > 00:00:13 d #15 spiral_builder.run / dib / html │ 00:00:17 v #523 > > │ cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } │ 00:00:17 v #524 > > │ 00:00:14 v #339 > 00:00:13 d #16 spiral_builder.run / dib / { │ 00:00:17 v #525 > > │ exit_code = 0; result_length = 11876 } │ 00:00:17 v #526 > > │ 00:00:14 d #340 runtime.execute_with_options_async / { exit_code = 0; │ 00:00:17 v #527 > > │ output_length = 15157 } │ 00:00:17 v #528 > > │ 00:00:14 d #1 main / executeCommand / exitCode: 0 / command: │ 00:00:17 v #529 > > │ ../../../../workspace/target/release/spiral_builder.exe dib --path test.dib │ 00:00:17 v #530 > > │ --retries 3 │ 00:00:17 v #531 > > │ │ 00:00:17 v #532 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #533 > > 00:00:17 v #534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #535 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #536 > > │ ### parse the .dib file into .spi format with dibparser │ 00:00:17 v #537 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #538 > > 00:00:17 v #539 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:17 v #540 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block 00:00:17 v #541 > > 00:00:17 v #542 > > ╭─[ 444.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:17 v #543 > > │ 00:00:00 d #1 writeDibCode / output: Spi / path: test.dib │ 00:00:17 v #544 > > │ 00:00:00 d #2 parseDibCode / output: Spi / file: test.dib │ 00:00:17 v #545 > > │ │ 00:00:17 v #546 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #547 > > 00:00:17 v #548 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #549 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 v #550 > > │ ### build .fsx file from .spi using supervisor │ 00:00:17 v #551 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 v #552 > > 00:00:17 v #553 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:17 v #554 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi 00:00:17 v #555 > > test.fsx } | Invoke-Block 00:00:19 v #556 > > 00:00:19 v #557 > > ╭─[ 1.68s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:19 v #558 > > │ 00:00:00 v #1 async.run_with_timeout_async / { timeout = 180 } │ 00:00:19 v #559 > > │ 00:00:00 v #2 async.run_with_timeout_async / { timeout = 180 } │ 00:00:19 v #560 > > │ 00:00:01 d #1 Supervisor.buildFile / takeWhileInclusive / path: │ 00:00:19 v #561 > > │ test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: │ 00:00:19 v #562 > > │ │ 00:00:19 v #563 > > │ 00:00:01 d #2 Supervisor.buildFile / AsyncSeq.scan / path: test.spi / │ 00:00:19 v #564 > > │ errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: │ 00:00:19 v #565 > > │ / outputContent: │ 00:00:19 v #566 > > │ │ 00:00:19 v #567 > > │ 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: │ 00:00:19 v #568 > > │ test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: │ 00:00:19 v #569 > > │ │ 00:00:19 v #570 > > │ 00:00:01 v #4 Supervisor.sendJson / port: 13805 / json: │ 00:00:19 v #571 > > │ {"FileOpen":{"spiText":"/// # test (Polyglot)\nnominal i = ()\nnominal e = │ 00:00:19 v #572 > > │ ()\nnominal s = │ 00:00:19 v #573 > > │ ()\nnomin...0022\u003C/test\u003E\u0022\n","uri":"file:///c:/home/git/polygl │ 00:00:19 v #574 > > │ ot/apps/spiral/temp/test/test.spi"}} / result: │ 00:00:19 v #575 > > │ 00:00:01 v #5 Supervisor.sendJson / port: 13805 / json: │ 00:00:19 v #576 > > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///c:/home/git/polyglot/apps/sp │ 00:00:19 v #577 > > │ iral/temp/test/test.spi"}} / result: │ 00:00:19 v #578 > > │ 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: test.spi / │ 00:00:19 v #579 > > │ errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: │ 00:00:19 v #580 > > │ / outputContent: │ 00:00:19 v #581 > > │ let rec closure1 () () : unit = │ 00:00:19 v #582 > > │ let v0 : (string -> unit) = System.Console.WriteLine │ 00:00:19 v #583 > > │ let v1 : string = "test" │ 00:00:19 v #584 > > │ v0 v1 │ 00:00:19 v #585 > > │ and closure0 () () : int32 = │ 00:00:19 v #586 > > │ let v0 : unit = () │ 00:00:19 v #587 > > │ let v1 : (unit -> unit) = closure1() │ 00:00:19 v #588 > > │ let v2 : unit = (fun () -> v1 (); v0) () │ 00:00:19 v #589 > > │ 0 │ 00:00:19 v #590 > > │ let v0 : (unit -> int32) = closure0() │ 00:00:19 v #591 > > │ () │ 00:00:19 v #592 > > │ │ 00:00:19 v #593 > > │ 00:00:01 d #7 Supervisor.buildFile / takeWhileInclusive / path: │ 00:00:19 v #594 > > │ test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: │ 00:00:19 v #595 > > │ let rec closure1 () () : unit = │ 00:00:19 v #596 > > │ let v0 : (string -> unit) = System.Console.WriteLine │ 00:00:19 v #597 > > │ let v1 : string = "test" │ 00:00:19 v #598 > > │ v0 v1 │ 00:00:19 v #599 > > │ and closure0 () () : int32 = │ 00:00:19 v #600 > > │ let v0 : unit = () │ 00:00:19 v #601 > > │ let v1 : (unit -> unit) = closure1() │ 00:00:19 v #602 > > │ let v2 : unit = (fun () -> v1 (); v0) () │ 00:00:19 v #603 > > │ 0 │ 00:00:19 v #604 > > │ let v0 : (unit -> int32) = closure0() │ 00:00:19 v #605 > > │ () │ 00:00:19 v #606 > > │ │ 00:00:19 v #607 > > │ 00:00:01 d #8 FileSystem.watchWithFilter / Disposing watch stream / │ 00:00:19 v #608 > > │ filter: FileName, LastWrite │ 00:00:19 v #609 > > │ │ 00:00:19 v #610 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #611 > > 00:00:19 v #612 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #613 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #614 > > │ ## compile and format the project │ 00:00:19 v #615 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #616 > > 00:00:19 v #617 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #618 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:19 v #619 > > │ ### compile project with fable targeting optimized rust │ 00:00:19 v #620 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:19 v #621 > > 00:00:19 v #622 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:19 v #623 > > dotnet fable --optimize --lang rs --extension .rs 00:00:22 v #624 > > 00:00:22 v #625 > > ╭─[ 2.92s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:22 v #626 > > │ Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) │ 00:00:22 v #627 > > │ │ 00:00:22 v #628 > > │ Thanks to the contributor! @dbrattli │ 00:00:22 v #629 > > │ Stand with Ukraine! https://standwithukraine.com.ua/ │ 00:00:22 v #630 > > │ │ 00:00:22 v #631 > > │ Parsing test.fsproj... │ 00:00:22 v #632 > > │ Retrieving project options from cache, in case of issues run `dotnet fable │ 00:00:22 v #633 > > │ clean` or try `--noCache` option. │ 00:00:22 v #634 > > │ Project and references (1 source files) parsed in 142ms │ 00:00:22 v #635 > > │ │ 00:00:22 v #636 > > │ Started Fable compilation... │ 00:00:22 v #637 > > │ │ 00:00:22 v #638 > > │ Fable compilation finished in 1445ms │ 00:00:22 v #639 > > │ │ 00:00:22 v #640 > > │ .\test.fsx(11,0): (11,2) warning FABLE: For Rust, support for F# static and │ 00:00:22 v #641 > > │ module do bindings is disabled by default. It can be enabled with the │ 00:00:22 v #642 > > │ 'static_do_bindings' feature. Use at your own risk! │ 00:00:22 v #643 > > │ │ 00:00:22 v #644 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #645 > > 00:00:22 v #646 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #647 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #648 > > │ ### fix formatting issues in the .rs file using regex and set-content │ 00:00:22 v #649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #650 > > 00:00:22 v #651 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:22 v #652 > > (Get-Content test.rs) ` 00:00:22 v #653 > > -replace [[regex]]::Escape("),);"), "));" ` 00:00:22 v #654 > > | FixRust ` 00:00:22 v #655 > > | Set-Content test.rs 00:00:22 v #656 > > 00:00:22 v #657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #658 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #659 > > │ ### format the rust code using cargo fmt │ 00:00:22 v #660 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #661 > > 00:00:22 v #662 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:22 v #663 > > cargo fmt -- 00:00:22 v #664 > > 00:00:22 v #665 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #666 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #667 > > │ ## build and test the project │ 00:00:22 v #668 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #669 > > 00:00:22 v #670 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #671 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 v #672 > > │ ### build the project in release mode using nightly rust compiler │ 00:00:22 v #673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 v #674 > > 00:00:22 v #675 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:22 v #676 > > cargo build --release 00:00:39 v #677 > > 00:00:39 v #678 > > ╭─[ 17.27s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:39 v #679 > > │ Compiling proc-macro2 v1.0.92 │ 00:00:39 v #680 > > │ Compiling unicode-ident v1.0.14 │ 00:00:39 v #681 > > │ Compiling fable_library_rust v0.1.0 │ 00:00:39 v #682 > > │ (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) │ 00:00:39 v #683 > > │ Compiling quote v1.0.37 │ 00:00:39 v #684 > > │ Compiling syn v2.0.90 │ 00:00:39 v #685 > > │ Compiling zerocopy-derive v0.7.35 │ 00:00:39 v #686 > > │ Compiling thiserror-impl v1.0.69 │ 00:00:39 v #687 > > │ Compiling zerocopy v0.7.35 │ 00:00:39 v #688 > > │ Compiling thiserror v1.0.69 │ 00:00:39 v #689 > > │ Compiling ppv-lite86 v0.2.20 │ 00:00:39 v #690 > > │ Compiling rand_chacha v0.3.1 │ 00:00:39 v #691 > > │ Compiling rand v0.8.5 │ 00:00:39 v #692 > > │ Compiling proptest v1.5.0 │ 00:00:39 v #693 > > │ Compiling spiral_temp_test v0.0.1 │ 00:00:39 v #694 > > │ (C:\home\git\polyglot\apps\spiral\temp\test) │ 00:00:39 v #695 > > │ Finished `release` profile [optimized] target(s) in 17.14s │ 00:00:39 v #696 > > │ │ 00:00:39 v #697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:39 v #698 > > 00:00:39 v #699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:39 v #700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:39 v #701 > > │ ### run release tests with output enabled │ 00:00:39 v #702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:39 v #703 > > 00:00:39 v #704 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:39 v #705 > > { cargo test --release -- --show-output } | Invoke-Block 00:01:06 v #706 > > 00:01:06 v #707 > > ╭─[ 26.91s - stdout ]──────────────────────────────────────────────────────────╮ 00:01:06 v #708 > > │ Compiling zerocopy v0.7.35 │ 00:01:06 v #709 > > │ Compiling thiserror v1.0.69 │ 00:01:06 v #710 > > │ Compiling fable_library_rust v0.1.0 │ 00:01:06 v #711 > > │ (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) │ 00:01:06 v #712 > > │ Compiling ppv-lite86 v0.2.20 │ 00:01:06 v #713 > > │ Compiling rand_chacha v0.3.1 │ 00:01:06 v #714 > > │ Compiling rand v0.8.5 │ 00:01:06 v #715 > > │ Compiling proptest v1.5.0 │ 00:01:06 v #716 > > │ Compiling spiral_temp_test v0.0.1 │ 00:01:06 v #717 > > │ (C:\home\git\polyglot\apps\spiral\temp\test) │ 00:01:06 v #718 > > │ Finished `release` profile [optimized] target(s) in 26.65s │ 00:01:06 v #719 > > │ Running unittests main.rs │ 00:01:06 v #720 > > │ (C:\home\git\polyglot\workspace\target\release\deps\spiral_temp_test-5730544 │ 00:01:06 v #721 > > │ e07be5619.exe) │ 00:01:06 v #722 > > │ │ 00:01:06 v #723 > > │ running 3 tests │ 00:01:06 v #724 > > │ test test_parse_number ... ok │ 00:01:06 v #725 > > │ test prop_parse_format_idempotent ... ok │ 00:01:06 v #726 > > │ test │ 00:01:06 v #727 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │ 00:01:06 v #728 > > │ ok │ 00:01:06 v #729 > > │ │ 00:01:06 v #730 > > │ successes: │ 00:01:06 v #731 > > │ │ 00:01:06 v #732 > > │ ---- prop_parse_format_idempotent stdout ---- │ 00:01:06 v #733 > > │ input=StringLiteral("+{wH{<li") │ 00:01:06 v #734 > > │ input=StringLiteral("Z2<8~`.=") │ 00:01:06 v #735 > > │ input=Integer(-1110353199088618346) │ 00:01:06 v #736 > > │ input=Integer(6188017613465348874) │ 00:01:06 v #737 > > │ input=Integer(4393943067406797542) │ 00:01:06 v #738 > > │ input=Integer(45037965061146084) │ 00:01:06 v #739 > > │ input=Integer(9072034490054101007) │ 00:01:06 v #740 > > │ input=Integer(-318377215466640063) │ 00:01:06 v #741 > > │ input=StringLiteral("~$d*+Q<p['K") │ 00:01:06 v #742 > > │ input=Identifier("I19V0Nl7MOfQ7U") │ 00:01:06 v #743 > > │ input=Identifier("TeS6oOd31rlH5") │ 00:01:06 v #744 > > │ input=Operator("*") │ 00:01:06 v #745 > > │ input=Identifier("fLet") │ 00:01:06 v #746 > > │ input=Integer(1419183166531834093) │ 00:01:06 v #747 > > │ input=StringLiteral("C8+L%+xJJ10r/#6iXvyH$=!p") │ 00:01:06 v #748 > > │ input=Identifier("L8cP9U8a7n280gqDWWzIJf5LP") │ 00:01:06 v #749 > > │ input=Operator("=") │ 00:01:06 v #750 > > │ input=Identifier("Owl8") │ 00:01:06 v #751 > > │ input=Identifier("EcLWmk77o") │ 00:01:06 v #752 > > │ input=Operator("=") │ 00:01:06 v #753 > > │ input=Comment("8l~srODslpwD#0/DP3:WYQ1~C7") │ 00:01:06 v #754 > > │ input=Operator("/") │ 00:01:06 v #755 > > │ input=StringLiteral("$$U`'@1<)H%0") │ 00:01:06 v #756 > > │ input=Identifier("nCSCrkPc54w0") │ 00:01:06 v #757 > > │ input=Identifier("bzVaJyQMg7a2wm1eVhb5uY14v") │ 00:01:06 v #758 > > │ input=Identifier("OAzWlzhsBzkv18eA762x1yw9Xg") │ 00:01:06 v #759 > > │ input=Integer(5236131983599502041) │ 00:01:06 v #760 > > │ input=Integer(-7991156776828305326) │ 00:01:06 v #761 > > │ input=Comment(":%g=Xy_=_") │ 00:01:06 v #762 > > │ input=StringLiteral("qV7k`") │ 00:01:06 v #763 > > │ input=Operator("(") │ 00:01:06 v #764 > > │ input=Operator("-") │ 00:01:06 v #765 > > │ input=Identifier("q8Nziau3LjkV1THKHUVj29") │ 00:01:06 v #766 > > │ input=Comment("Op[q)Tql\\sC{50K=Rp'Qk/N[c's+`") │ 00:01:06 v #767 > > │ input=StringLiteral("+^w^%i<AN,]+qL[/") │ 00:01:06 v #768 > > │ input=StringLiteral("s1%8O") │ 00:01:06 v #769 > > │ input=Integer(-6482853883564634349) │ 00:01:06 v #770 > > │ input=Integer(-5202379976399007021) │ 00:01:06 v #771 > > │ input=Operator("-") │ 00:01:06 v #772 > > │ input=StringLiteral("M bg/&3`") │ 00:01:06 v #773 > > │ input=Comment("q5") │ 00:01:06 v #774 > > │ input=Operator("-") │ 00:01:06 v #775 > > │ input=Integer(4199296512995234943) │ 00:01:06 v #776 > > │ input=Identifier("V2eO2qjXA07uO3ofv") │ 00:01:06 v #777 > > │ input=Operator("-") │ 00:01:06 v #778 > > │ input=Identifier("doe") │ 00:01:06 v #779 > > │ input=Integer(883561194533669976) │ 00:01:06 v #780 > > │ input=Identifier("avM7B4nL7769EV2O7zN") │ 00:01:06 v #781 > > │ input=Identifier("MY76o") │ 00:01:06 v #782 > > │ input=Identifier("Vd") │ 00:01:06 v #783 > > │ input=Integer(7075030082315454890) │ 00:01:06 v #784 > > │ input=Comment("b `!_A@.4S3A#>:Hk`V9 <=U\\jm|f") │ 00:01:06 v #785 > > │ input=Comment("f:.{8n+R") │ 00:01:06 v #786 > > │ input=Identifier("i8NuwH") │ 00:01:06 v #787 > > │ input=Comment("@u/Tu.{{]") │ 00:01:06 v #788 > > │ input=StringLiteral("qpL.xiM'7p8}{6?-><w&XD?Tm") │ 00:01:06 v #789 > > │ input=Identifier("roym6M343wxSJdbNU") │ 00:01:06 v #790 > > │ input=Comment("t]O*W&N&8OA*o-") │ 00:01:06 v #791 > > │ input=Integer(8960180995105715463) │ 00:01:06 v #792 > > │ input=Comment(".\\k1f+TTFwsy}<fu4Q3SYjV{qJ?c/") │ 00:01:06 v #793 > > │ input=Integer(-8142126749094912095) │ 00:01:06 v #794 > > │ input=Operator(")") │ 00:01:06 v #795 > > │ input=Comment("Er?<-8`^TPJVo*J&;#%\">\"B%T5") │ 00:01:06 v #796 > > │ input=StringLiteral("uuxMx&") │ 00:01:06 v #797 > > │ input=Identifier("YmTznO") │ 00:01:06 v #798 > > │ input=Operator(")") │ 00:01:06 v #799 > > │ input=Comment("Bp%R ;C\"C_x1'(DHq") │ 00:01:06 v #800 > > │ input=Integer(5086100495674782360) │ 00:01:06 v #801 > > │ input=Operator("-") │ 00:01:06 v #802 > > │ input=StringLiteral("M:?l=Mbb^RgD@Yy%^<3[") │ 00:01:06 v #803 > > │ input=Integer(8916342295948205847) │ 00:01:06 v #804 > > │ input=Comment("A9~j\"^O8~1/9*;$H0J<&{&=}$,6\"") │ 00:01:06 v #805 > > │ input=Identifier("y39XgSmY") │ 00:01:06 v #806 > > │ input=Identifier("c1Em3ocD5R28Jgb0juh") │ 00:01:06 v #807 > > │ input=Identifier("Ht1KOz6OqsMSVoB") │ 00:01:06 v #808 > > │ input=Comment(";O/[!PDoy%#+$%rgOu<%;e%O&") │ 00:01:06 v #809 > > │ input=Integer(1955877204384083162) │ 00:01:06 v #810 > > │ input=Comment("O$R.EetRS).k&%2*&.=>yM;") │ 00:01:06 v #811 > > │ input=Comment("98L\"`G,%?OZt''Zt\"+/L`~o") │ 00:01:06 v #812 > > │ input=Identifier("tYZrPO") │ 00:01:06 v #813 > > │ input=Identifier("AiR7WAj069bZGdJmC7VzlukG4") │ 00:01:06 v #814 > > │ input=StringLiteral("C+*8`6H:BT?*/dQ>El#") │ 00:01:06 v #815 > > │ input=Integer(-2306172827769564760) │ 00:01:06 v #816 > > │ input=StringLiteral("1n1PN$<%`7$<!V") │ 00:01:06 v #817 > > │ input=Operator("=") │ 00:01:06 v #818 > > │ input=StringLiteral("") │ 00:01:06 v #819 > > │ input=Identifier("tk19U") │ 00:01:06 v #820 > > │ input=Identifier("Yoadd1lgU34q55S51Nomc6V8") │ 00:01:06 v #821 > > │ input=Integer(1071381493208921762) │ 00:01:06 v #822 > > │ input=Comment("GLrV\"") │ 00:01:06 v #823 > > │ input=Operator(")") │ 00:01:06 v #824 > > │ input=Operator("-") │ 00:01:06 v #825 > > │ input=Identifier("l") │ 00:01:06 v #826 > > │ input=Operator(")") │ 00:01:06 v #827 > > │ input=Integer(-8307155589277402276) │ 00:01:06 v #828 > > │ input=StringLiteral(";>k?yy") │ 00:01:06 v #829 > > │ input=Operator("*") │ 00:01:06 v #830 > > │ input=Identifier("s") │ 00:01:06 v #831 > > │ input=StringLiteral("{e(c1:") │ 00:01:06 v #832 > > │ input=Operator("(") │ 00:01:06 v #833 > > │ input=Comment("QMN\\{") │ 00:01:06 v #834 > > │ input=Comment("!C/&:2E%b8I'7<_{hBI") │ 00:01:06 v #835 > > │ input=Comment("jYc&%!-'Iy\"g?mJ&?-gwkA") │ 00:01:06 v #836 > > │ input=StringLiteral("?z`@Dr]Y,?|+3@i.1D+~a?K,") │ 00:01:06 v #837 > > │ input=Integer(1858410982586584442) │ 00:01:06 v #838 > > │ input=StringLiteral("W!/?,.c{{C96@&4l:{?") │ 00:01:06 v #839 > > │ input=Comment("`<`*w0<jM// :f<D: 0<fI/JQI.V$0G~") │ 00:01:06 v #840 > > │ input=Operator("(") │ 00:01:06 v #841 > > │ input=Comment("/<W^5W$Q") │ 00:01:06 v #842 > > │ input=Integer(2829572316097771388) │ 00:01:06 v #843 > > │ input=StringLiteral("_b*d_;]%/{b") │ 00:01:06 v #844 > > │ input=Comment("+?v%:D_f@Xi") │ 00:01:06 v #845 > > │ input=Integer(-4360834816339484540) │ 00:01:06 v #846 > > │ input=Operator("=") │ 00:01:06 v #847 > > │ input=Identifier("JiRCU4ZokY96grIyHR7M9BD5kFXeF13") │ 00:01:06 v #848 > > │ input=Integer(6306176755565114532) │ 00:01:06 v #849 > > │ input=Identifier("PSwLBcEn4W4t6M7b96z8ZxEFBI9") │ 00:01:06 v #850 > > │ input=Operator("-") │ 00:01:06 v #851 > > │ input=Comment("6ijc*Z'?//As$=") │ 00:01:06 v #852 > > │ input=StringLiteral("{!") │ 00:01:06 v #853 > > │ input=Integer(-6643120512520325873) │ 00:01:06 v #854 > > │ input=Operator("-") │ 00:01:06 v #855 > > │ input=Identifier("iEN3G4pa77QlkGn3cB7NMQVtFYZyQ") │ 00:01:06 v #856 > > │ input=StringLiteral("IUZ~rp>n^2u@1)fKO$T%,)") │ 00:01:06 v #857 > > │ input=Integer(1581112916107123486) │ 00:01:06 v #858 > > │ input=Integer(9145139235494922395) │ 00:01:06 v #859 > > │ input=StringLiteral("<g&p%`") │ 00:01:06 v #860 > > │ input=Integer(-1285485884699124680) │ 00:01:06 v #861 > > │ input=Comment("8RFr*MLUVm)#*X@ o0v") │ 00:01:06 v #862 > > │ input=Comment("U]g<!^?\\.U{<% f?'*vaaXx") │ 00:01:06 v #863 > > │ input=Comment("/@<F pz`:%Q^ZK*kP.|1dn:O({SS~T6=") │ 00:01:06 v #864 > > │ input=Identifier("q1qXfA9bG3W4k1") │ 00:01:06 v #865 > > │ input=Identifier("bXhq8gNEbrx7w18Q2aZpA2") │ 00:01:06 v #866 > > │ input=StringLiteral("`E%a*giAI") │ 00:01:06 v #867 > > │ input=Operator("=") │ 00:01:06 v #868 > > │ input=Comment("_5`W9{^\"") │ 00:01:06 v #869 > > │ input=Operator("/") │ 00:01:06 v #870 > > │ input=Identifier("tR5FH9TbUcuzMW") │ 00:01:06 v #871 > > │ input=Integer(5747310754360233258) │ 00:01:06 v #872 > > │ input=Operator("*") │ 00:01:06 v #873 > > │ input=Comment("qW\"Qd'}sQ<n:") │ 00:01:06 v #874 > > │ input=Operator("*") │ 00:01:06 v #875 > > │ input=Integer(7546856453989006125) │ 00:01:06 v #876 > > │ input=Operator("/") │ 00:01:06 v #877 > > │ input=Operator("=") │ 00:01:06 v #878 > > │ input=Operator("=") │ 00:01:06 v #879 > > │ input=StringLiteral(" |o6EmHK&'sO_n'?P'{") │ 00:01:06 v #880 > > │ input=Comment("%%aFHjQ/]B8") │ 00:01:06 v #881 > > │ input=Identifier("bd1k87tflu3lrZybCkquZIX2UJPi7kwY") │ 00:01:06 v #882 > > │ input=Operator("/") │ 00:01:06 v #883 > > │ input=Comment("77`;rx1ra.=5pc*;G") │ 00:01:06 v #884 > > │ input=Comment("&") │ 00:01:06 v #885 > > │ input=Comment("jB8OGe7e#$!K") │ 00:01:06 v #886 > > │ input=Operator(")") │ 00:01:06 v #887 > > │ input=Comment("H`Y.<&0<lr .\"D(y<5R{:{T:~!&t") │ 00:01:06 v #888 > > │ input=Integer(7271478153087683991) │ 00:01:06 v #889 > > │ input=Comment("\"(\"h$'f?$4cOi?6g`") │ 00:01:06 v #890 > > │ input=Identifier("z15cTCvoo0NBa1MhFu6wp3FUNH34cd") │ 00:01:06 v #891 > > │ input=Comment("|`xt{") │ 00:01:06 v #892 > > │ input=Operator("=") │ 00:01:06 v #893 > > │ input=Comment("?]i.XX`") │ 00:01:06 v #894 > > │ input=Identifier("uRp65l") │ 00:01:06 v #895 > > │ input=Comment("V{<7*O=[2") │ 00:01:06 v #896 > > │ input=StringLiteral("<L$iD0%&tpLC*M5p{") │ 00:01:06 v #897 > > │ input=StringLiteral("oI'**76`9zEr49Lx}S<") │ 00:01:06 v #898 > > │ input=StringLiteral("}J]:?(7") │ 00:01:06 v #899 > > │ input=Operator("=") │ 00:01:06 v #900 > > │ input=Integer(3093530883549223801) │ 00:01:06 v #901 > > │ input=Integer(883906910333874130) │ 00:01:06 v #902 > > │ input=StringLiteral("<*>+Fp?:@G:D:BFrR") │ 00:01:06 v #903 > > │ input=Identifier("oTLODQaF0JuPa0") │ 00:01:06 v #904 > > │ input=Comment("6$V`x(_#{%KR<`\\&*") │ 00:01:06 v #905 > > │ input=Operator("+") │ 00:01:06 v #906 > > │ input=StringLiteral("+4A9}:tt") │ 00:01:06 v #907 > > │ input=Identifier("l7K3lN4Sfia4x6Bn3ko9") │ 00:01:06 v #908 > > │ input=Identifier("RKjc85eZN9F5qX4p4aQEWdDPHpd") │ 00:01:06 v #909 > > │ input=Operator("/") │ 00:01:06 v #910 > > │ input=Comment("`:<{z_'") │ 00:01:06 v #911 > > │ input=Integer(2898066879163729443) │ 00:01:06 v #912 > > │ input=Operator("-") │ 00:01:06 v #913 > > │ input=Integer(-6771676531787988113) │ 00:01:06 v #914 > > │ input=Integer(-7584870659154039521) │ 00:01:06 v #915 > > │ input=Integer(1712528858333812031) │ 00:01:06 v #916 > > │ input=Integer(2687565326436328087) │ 00:01:06 v #917 > > │ input=Integer(815443469153690740) │ 00:01:06 v #918 > > │ input=Comment("HpO<f$)") │ 00:01:06 v #919 > > │ input=Comment("]6 <l=XL") │ 00:01:06 v #920 > > │ input=Integer(3007108201018673372) │ 00:01:06 v #921 > > │ input=Comment(":&C7a6nV&:z{D>3yb w4?O>hTdt") │ 00:01:06 v #922 > > │ input=Comment("%[zm76:}wzHw%'=;.YuJ'%<@}{f{I6C}") │ 00:01:06 v #923 > > │ input=Operator(")") │ 00:01:06 v #924 > > │ input=Integer(-7701948371407630412) │ 00:01:06 v #925 > > │ input=Integer(4581913614041525143) │ 00:01:06 v #926 > > │ input=StringLiteral("1%)Vp/ZA]qB/cQA=Vx:'Fg? )") │ 00:01:06 v #927 > > │ input=Identifier("d5KtK5K4g8MUz5ub46jeX6k") │ 00:01:06 v #928 > > │ input=StringLiteral(":v*x@HV*t=wt~r`*{>a%[+a") │ 00:01:06 v #929 > > │ input=Operator("-") │ 00:01:06 v #930 > > │ input=Identifier("pG34a3") │ 00:01:06 v #931 > > │ input=Operator("(") │ 00:01:06 v #932 > > │ input=StringLiteral(":^/{0$=g`Y-%E<rwy'W%<.&6@^*") │ 00:01:06 v #933 > > │ input=Operator("-") │ 00:01:06 v #934 > > │ input=Comment("M1Z5)=%%0jZ27<S") │ 00:01:06 v #935 > > │ input=StringLiteral("c?*<$'h*Z`Dzy") │ 00:01:06 v #936 > > │ input=Identifier("I29P244WajxLYOsvV0be") │ 00:01:06 v #937 > > │ input=Identifier("zxmF25TxO2oM") │ 00:01:06 v #938 > > │ input=Identifier("yeEhs1C4fowgW28CMtzjrb0L1015130n") │ 00:01:06 v #939 > > │ input=Identifier("Sy9QavDyNkGY2Sfe1N") │ 00:01:06 v #940 > > │ input=Comment("{Cr^5,8:Shk&**Ag5tC..~@Se/@]") │ 00:01:06 v #941 > > │ input=Identifier("q8S2xx65ma4HhFksHGmX9g5QhTT") │ 00:01:06 v #942 > > │ input=StringLiteral("") │ 00:01:06 v #943 > > │ input=StringLiteral("AKk") │ 00:01:06 v #944 > > │ input=Integer(-2275133079675296722) │ 00:01:06 v #945 > > │ input=StringLiteral("]^2'<$x[:&adW") │ 00:01:06 v #946 > > │ input=Integer(7772961402535868230) │ 00:01:06 v #947 > > │ input=Integer(8970827868615124938) │ 00:01:06 v #948 > > │ input=Operator(")") │ 00:01:06 v #949 > > │ input=Comment(":H?$'<?") │ 00:01:06 v #950 > > │ input=Comment("G\\cj7DCfu") │ 00:01:06 v #951 > > │ input=Integer(3692343155385780324) │ 00:01:06 v #952 > > │ input=Comment("2`\"/U)(\"d\\.A{&.<41Z4g<&Rp/do'") │ 00:01:06 v #953 > > │ input=Comment("4{e003hh$\\[Le)?/I`v?7") │ 00:01:06 v #954 > > │ input=Operator("-") │ 00:01:06 v #955 > > │ input=Operator("*") │ 00:01:06 v #956 > > │ input=Comment("+>vd22o*`>}w?^*9@<L@+=;>\\\"") │ 00:01:06 v #957 > > │ input=Operator("(") │ 00:01:06 v #958 > > │ input=Comment("%c*tF?GT=") │ 00:01:06 v #959 > > │ input=Operator(")") │ 00:01:06 v #960 > > │ input=Operator("(") │ 00:01:06 v #961 > > │ input=Identifier("kdku5Kdr") │ 00:01:06 v #962 > > │ input=Operator("(") │ 00:01:06 v #963 > > │ input=Comment("/m{`") │ 00:01:06 v #964 > > │ input=Comment("sQJ") │ 00:01:06 v #965 > > │ input=Comment("~$?#T%4$*8Ba[t|9\"WH7\\}rcz=.P") │ 00:01:06 v #966 > > │ input=Identifier("HPFFK45710b28lRsAEAfbKaI4k14RwMt") │ 00:01:06 v #967 > > │ input=Operator("=") │ 00:01:06 v #968 > > │ input=Operator("+") │ 00:01:06 v #969 > > │ input=StringLiteral("SO h xszmSkjT)pU,*(e'<=") │ 00:01:06 v #970 > > │ input=Identifier("vozh0F81") │ 00:01:06 v #971 > > │ input=Comment("/") │ 00:01:06 v #972 > > │ input=Comment("\\\\h\\DZ\\}B^s{b3&.}\":%^") │ 00:01:06 v #973 > > │ input=Identifier("PQ0M8KD523X7ySXs2YopJtR1TlmG0h7") │ 00:01:06 v #974 > > │ input=StringLiteral("V<U'9QX<f['M%?:<At?m") │ 00:01:06 v #975 > > │ input=Comment("dc::{6h]EN:E4W>q<\\:'6?m'=A/%5") │ 00:01:06 v #976 > > │ input=Operator("(") │ 00:01:06 v #977 > > │ input=StringLiteral("oPV4rKd`*v=_^") │ 00:01:06 v #978 > > │ input=Identifier("r") │ 00:01:06 v #979 > > │ input=Identifier("XcXt3csov22Par1dOLEXmp6S3A") │ 00:01:06 v #980 > > │ input=Operator("/") │ 00:01:06 v #981 > > │ input=Comment("3s") │ 00:01:06 v #982 > > │ input=Identifier("qq5") │ 00:01:06 v #983 > > │ input=Comment("I**?%?g&_1v\"$#j,b$1Z]B*") │ 00:01:06 v #984 > > │ input=Integer(8499986673892058111) │ 00:01:06 v #985 > > │ input=Operator("+") │ 00:01:06 v #986 > > │ input=StringLiteral("pIg{+g<%av") │ 00:01:06 v #987 > > │ input=StringLiteral("A:&_U9Nd#4@TYVj9x") │ 00:01:06 v #988 > > │ input=Identifier("kmIIMOdkxn7LT3oedX3") │ 00:01:06 v #989 > > │ │ 00:01:06 v #990 > > │ │ 00:01:06 v #991 > > │ successes: │ 00:01:06 v #992 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged │ 00:01:06 v #993 > > │ prop_parse_format_idempotent │ 00:01:06 v #994 > > │ test_parse_number │ 00:01:06 v #995 > > │ │ 00:01:06 v #996 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:01:06 v #997 > > │ finished in 0.13s │ 00:01:06 v #998 > > │ │ 00:01:06 v #999 > > │ │ 00:01:06 v #1000 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 v #1001 > > 00:01:06 v #1002 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:06 v #1003 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:06 v #1004 > > │ ### execute the binary in release mode │ 00:01:06 v #1005 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 v #1006 > > 00:01:06 v #1007 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:01:06 v #1008 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | 00:01:06 v #1009 > > Invoke-Block 00:01:06 v #1010 > > 00:01:06 v #1011 > > ╭─[ 17.35ms - stdout ]─────────────────────────────────────────────────────────╮ 00:01:06 v #1012 > > │ app=test │ 00:01:06 v #1013 > > │ │ 00:01:06 v #1014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 v #1015 > 00:01:06 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 79821 } 00:01:06 v #1016 > 00:01:06 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:08 v #1017 > 00:01:07 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb to html 00:01:08 v #1018 > 00:01:07 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:08 v #1019 > 00:01:07 v #7 ! validate(nb) 00:01:08 v #1020 > 00:01:08 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:08 v #1021 > 00:01:08 v #9 ! return _pygments_highlight( 00:01:09 v #1022 > 00:01:08 v #10 ! [NbConvertApp] Writing 348745 bytes to c:\home\git\polyglot\apps\spiral\temp\test\build.dib.html 00:01:09 v #1023 > 00:01:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 874 } 00:01:09 v #1024 > 00:01:08 d #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 874 } 00:01:09 v #1025 > 00:01:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:09 v #1026 > 00:01:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:09 v #1027 > 00:01:08 d #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:09 v #1028 > 00:01:08 d #16 spiral_builder.run / dib / { exit_code = 0; result_length = 80754 } 00:01:09 d #1029 runtime.execute_with_options_async / { exit_code = 0; output_length = 85404 } 00:01:09 d #1 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder.exe dib --path build.dib
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.7 (b0b7db5c) Checked 203 installs across 191 packages (no changes) [203.00ms] Symlink already exists: C:\home\git\polyglot\apps\spiral\vscode\LICENSE -> C:\home\git\polyglot\LICENSE out\src\extension.js 2.4kb out\media\cellOutputScrollButtons.js 1.9kb ⚡ Done in 6ms DONE Packaged: out\spiral-vscode-0.0.1.vsix (26 files, 98.15KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.7 (b0b7db5c)
Done! Checked 220 packages (no changes) [218.00ms]
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
Resolving dependency graph...
Outdated packages found:
Group: Main
* Argu 6.2.4 -> 6.2.5
* Expecto.FsCheck 11.0.0-alpha2 -> 11.0.0-alpha2-fscheck2
* FsCheck 3.0.0-rc3 -> 2.16.6
* Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0
* Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0
* Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0
* Microsoft.Extensions.Features 7.0 -> 9.0.0
* System.Management 7.0 -> 9.0.0
Total time taken: 1 minute, 9 seconds
CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml
chat_contract_tests
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 Removed Removed Normal ---
android-tzdata 0.1.1 --- Removed Normal cfg(target_os = "android")
android_system_properties 0.1.5 --- Removed Normal cfg(target_os = "android")
autocfg 1.4.0 --- Removed Build ---
autocfg 1.4.0 Removed Removed Build ---
bumpalo 3.16.0 --- Removed Normal ---
bumpalo 3.16.0 Removed Removed Normal ---
cc 1.2.4 --- Removed Build ---
cfg-if 1.0.0 --- Removed Normal ---
cfg-if 1.0.0 Removed Removed Normal ---
chrono 0.4.39 --- Removed Normal ---
core-foundation-sys 0.8.7 --- Removed Normal cfg(any(target_os = "macos", target_os = "ios"))
getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.15.2 0.15.2 Normal ---
iana-time-zone 0.1.61 --- Removed Normal cfg(unix)
iana-time-zone-haiku 0.1.2 --- Removed Normal cfg(target_os = "haiku")
indexmap 1.9.3 2.7.0 2.7.0 Normal ---
jobserver 0.1.32 --- Removed Normal ---
js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys 0.3.76 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.168 --- Removed Normal ---
libc 0.2.168 --- Removed Normal cfg(unix)
libc 0.2.168 Removed Removed Normal cfg(unix)
libm 0.2.11 --- Removed Normal ---
log 0.4.22 --- Removed Normal ---
log 0.4.22 Removed Removed Normal ---
near-sandbox-utils 0.8.0 --- 0.9.0 Build ---
near-sandbox-utils 0.9.0 0.8.0 --- Normal ---
num-traits 0.2.19 --- Removed Normal ---
once_cell 1.20.2 --- Removed Normal ---
once_cell 1.20.2 Removed Removed Normal ---
once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2 1.0.92 --- Removed Normal ---
proc-macro2 1.0.92 Removed Removed Normal ---
quote 1.0.37 --- Removed Normal ---
quote 1.0.37 Removed Removed Normal ---
serde 1.0.216 --- Removed Normal ---
serde_derive 1.0.216 --- Removed Normal ---
shlex 1.3.0 --- Removed Normal ---
syn 2.0.90 --- Removed Normal ---
syn 2.0.90 Removed Removed Normal ---
unicode-ident 1.0.14 --- Removed Normal ---
unicode-ident 1.0.14 Removed Removed Normal ---
version_check 0.9.5 Removed Removed Build ---
wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.99 --- Removed Normal ---
wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen 0.2.99 Removed Removed Normal ---
wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.99 --- Removed Normal ---
wasm-bindgen-backend 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro 0.2.99 --- Removed Normal ---
wasm-bindgen-macro 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support 0.2.99 Removed Removed Normal ---
wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
windows-core 0.52.0 --- Removed Normal cfg(target_os = "windows")
windows-targets 0.52.6 --- Removed Normal ---
windows-targets 0.52.6 --- Removed Normal cfg(windows)
windows_aarch64_gnullvm 0.52.6 --- Removed Normal aarch64-pc-windows-gnullvm
windows_aarch64_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm 0.52.6 --- Removed Normal i686-pc-windows-gnullvm
windows_i686_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm 0.52.6 --- Removed Normal x86_64-pc-windows-gnullvm
windows_x86_64_msvc 0.52.6 --- Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
spiral_wasm
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 Removed Removed Normal ---
android-tzdata 0.1.1 --- Removed Normal cfg(target_os = "android")
android_system_properties 0.1.5 --- Removed Normal cfg(target_os = "android")
autocfg 1.4.0 --- Removed Build ---
autocfg 1.4.0 Removed Removed Build ---
bumpalo 3.16.0 --- Removed Normal ---
bumpalo 3.16.0 Removed Removed Normal ---
cc 1.2.4 --- Removed Build ---
cfg-if 1.0.0 --- Removed Normal ---
cfg-if 1.0.0 Removed Removed Normal ---
chrono 0.4.39 --- Removed Normal ---
core-foundation-sys 0.8.7 --- Removed Normal cfg(any(target_os = "macos", target_os = "ios"))
getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.15.2 0.15.2 Normal ---
iana-time-zone 0.1.61 --- Removed Normal cfg(unix)
iana-time-zone-haiku 0.1.2 --- Removed Normal cfg(target_os = "haiku")
indexmap 1.9.3 2.7.0 2.7.0 Normal ---
jobserver 0.1.32 --- Removed Normal ---
js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys 0.3.76 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.168 --- Removed Normal ---
libc 0.2.168 --- Removed Normal cfg(unix)
libc 0.2.168 Removed Removed Normal cfg(unix)
libm 0.2.11 --- Removed Normal ---
log 0.4.22 --- Removed Normal ---
log 0.4.22 Removed Removed Normal ---
near-sandbox-utils 0.8.0 --- 0.9.0 Build ---
near-sandbox-utils 0.9.0 0.8.0 --- Normal ---
num-traits 0.2.19 --- Removed Normal ---
once_cell 1.20.2 --- Removed Normal ---
once_cell 1.20.2 Removed Removed Normal ---
once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2 1.0.92 --- Removed Normal ---
proc-macro2 1.0.92 Removed Removed Normal ---
quote 1.0.37 --- Removed Normal ---
quote 1.0.37 Removed Removed Normal ---
serde 1.0.216 --- Removed Normal ---
serde_derive 1.0.216 --- Removed Normal ---
shlex 1.3.0 --- Removed Normal ---
syn 2.0.90 --- Removed Normal ---
syn 2.0.90 Removed Removed Normal ---
unicode-ident 1.0.14 --- Removed Normal ---
unicode-ident 1.0.14 Removed Removed Normal ---
version_check 0.9.5 Removed Removed Build ---
wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.99 --- Removed Normal ---
wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen 0.2.99 Removed Removed Normal ---
wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.99 --- Removed Normal ---
wasm-bindgen-backend 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro 0.2.99 --- Removed Normal ---
wasm-bindgen-macro 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support 0.2.99 Removed Removed Normal ---
wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
windows-core 0.52.0 --- Removed Normal cfg(target_os = "windows")
windows-targets 0.52.6 --- Removed Normal ---
windows-targets 0.52.6 --- Removed Normal cfg(windows)
windows_aarch64_gnullvm 0.52.6 --- Removed Normal aarch64-pc-windows-gnullvm
windows_aarch64_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm 0.52.6 --- Removed Normal i686-pc-windows-gnullvm
windows_i686_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm 0.52.6 --- Removed Normal x86_64-pc-windows-gnullvm
windows_x86_64_msvc 0.52.6 --- Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
borsh-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
borsh-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
bs58->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
darling_core->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_core->syn 2.0.90 2.0.93 2.0.93 Normal ---
darling_macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
iana-time-zone-haiku->cc 1.2.4 1.2.6 1.2.6 Build ---
indexmap->serde 1.0.216 1.0.217 1.0.217 Normal ---
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
near-account-id->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-gas->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->near-sdk-macros 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-sdk-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-sdk-macros->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk-macros->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-sdk-macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
near-token->serde 1.0.216 1.0.217 1.0.217 Normal ---
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_spanned->serde 1.0.216 1.0.217 1.0.217 Normal ---
strum_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
strum_macros->rustversion 1.0.18 1.0.19 1.0.19 Normal ---
strum_macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
toml_datetime->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->serde 1.0.216 1.0.217 1.0.217 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.93 2.0.93 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.93 2.0.93 Normal ---
wee_alloc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(unix, not(target_arch = "wasm32")))
CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
actix-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
actix-macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
actix_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
actix_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
android_system_properties->libc 0.2.168 0.2.169 Removed Normal ---
anyhow 1.0.94 1.0.95 1.0.95 Normal ---
async-recursion->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-recursion->syn 2.0.90 2.0.93 2.0.93 Normal ---
async-stream-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-stream-impl->syn 2.0.90 2.0.93 2.0.93 Normal ---
async-trait->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-trait->syn 2.0.90 2.0.93 2.0.93 Normal ---
atty->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
axum->hyper 0.14.31 0.14.32 0.14.32 Normal ---
axum->rustversion 1.0.18 1.0.19 1.0.19 Development ---
axum->serde 1.0.216 1.0.217 1.0.217 Normal ---
axum-core->rustversion 1.0.18 1.0.19 1.0.19 Build ---
backtrace->cc 1.2.4 1.2.6 1.2.6 Build ---
backtrace->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))
binary-install->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
bip39->serde 1.0.216 1.0.217 1.0.217 Normal ---
borsh-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
borsh-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
bs58->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
bytecheck_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
bytesize->serde 1.0.216 1.0.217 1.0.217 Normal ---
bzip2->libc 0.2.168 0.2.169 0.2.169 Normal ---
bzip2-sys->cc 1.2.4 1.2.6 1.2.6 Build ---
bzip2-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
camino->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo-near->env_logger 0.11.5 0.11.6 0.11.6 Normal ---
cargo-near->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
cargo-platform->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo-util->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
cargo-util->libc 0.2.168 0.2.169 0.2.169 Normal ---
cargo_metadata->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo_metadata->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
cc->jobserver 0.1.32 --- Removed Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
cc->libc 0.2.168 0.2.169 Removed Normal cfg(unix)
cc->shlex 1.3.0 --- Removed Normal ---
chrono->android-tzdata 0.1.1 --- Removed Normal cfg(target_os = "android")
chrono->iana-time-zone 0.1.61 --- Removed Normal cfg(unix)
chrono->js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits 0.2.19 --- Removed Normal ---
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
chrono->serde 1.0.216 1.0.217 Removed Normal ---
chrono->wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets 0.52.6 --- Removed Normal cfg(windows)
clap_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
clap_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
commoncrypto-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
console->encode_unicode 0.3.6 1.0.0 1.0.0 Normal cfg(windows)
console->lazy_static 1.5.0 Removed Removed Normal ---
console->libc 0.2.168 0.2.169 0.2.169 Normal ---
console->unicode-width 0.1.14 0.2.0 0.2.0 Normal ---
console->windows-sys 0.52.0 0.59.0 0.59.0 Normal cfg(windows)
core-foundation->libc 0.2.168 0.2.169 0.2.169 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
crossterm->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
csv->serde 1.0.216 1.0.217 1.0.217 Normal ---
curve25519-dalek-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
curve25519-dalek-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
darling_core->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_core->syn 2.0.90 2.0.93 2.0.93 Normal ---
darling_macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
deranged->serde 1.0.216 1.0.217 1.0.217 Normal ---
derivative->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_arbitrary->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_arbitrary->syn 2.0.90 2.0.93 2.0.93 Normal ---
derive_more->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_more->syn 2.0.90 2.0.93 2.0.93 Normal ---
dirs-sys->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
dirs-sys-next->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
displaydoc->quote 1.0.37 1.0.38 1.0.38 Normal ---
displaydoc->syn 2.0.90 2.0.93 2.0.93 Normal ---
enum-map-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
enum-map-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
enumflags2->serde 1.0.216 1.0.217 1.0.217 Normal ---
enumflags2_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
enumflags2_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
env_logger->env_filter 0.1.2 0.1.3 0.1.3 Normal ---
errno->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "hermit")
filetime->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
flate2->miniz_oxide 0.8.0 0.8.2 0.8.2 Normal ---
fs2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
hashbrown->serde 1.0.216 1.0.217 1.0.217 Normal ---
hermit-abi->libc 0.2.168 0.2.169 0.2.169 Normal ---
hex->serde 1.0.216 1.0.217 1.0.217 Normal ---
home->windows-sys 0.52.0 0.59.0 0.59.0 Normal cfg(windows)
hyper-rustls->hyper 1.5.1 1.5.2 1.5.2 Normal ---
hyper-timeout->hyper 0.14.31 0.14.32 0.14.32 Normal ---
hyper-tls->hyper 1.5.1 1.5.2 1.5.2 Normal ---
hyper-util->hyper 1.5.1 1.5.2 1.5.2 Normal ---
iana-time-zone->android_system_properties 0.1.5 --- Removed Normal cfg(target_os = "android")
iana-time-zone->core-foundation-sys 0.8.7 --- Removed Normal cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku 0.1.2 --- Removed Normal cfg(target_os = "haiku")
iana-time-zone->js-sys 0.3.76 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen 0.2.99 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->windows-core 0.52.0 --- Removed Normal cfg(target_os = "windows")
iana-time-zone-haiku->cc 1.2.4 1.2.6 1.2.6 Build ---
iana-time-zone-haiku->cc 1.2.4 1.2.6 Removed Build ---
icu_provider_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
icu_provider_macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
indexmap->equivalent 1.0.1 Removed Removed Normal ---
indexmap->hashbrown 0.15.2 0.12.3 0.12.3 Normal ---
indexmap->serde 1.0.216 1.0.217 1.0.217 Normal ---
indicatif->console 0.15.8 0.15.10 0.15.10 Normal ---
interactive-clap-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
io-lifetimes->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
is-terminal->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(unix, target_os = "wasi"))
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
jobserver->libc 0.2.168 0.2.169 Removed Normal cfg(unix)
js-sys->once_cell 1.20.2 --- Removed Normal ---
js-sys->wasm-bindgen 0.2.99 --- Removed Normal ---
json-patch->serde 1.0.216 1.0.217 1.0.217 Normal ---
json-patch->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
jsonptr->serde 1.0.216 1.0.217 1.0.217 Normal ---
jsonptr->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
libredox->libc 0.2.168 0.2.169 0.2.169 Normal ---
linked-hash-map->serde 1.0.216 1.0.217 1.0.217 Normal ---
linux-keyutils->libc 0.2.168 0.2.169 0.2.169 Normal ---
memmap2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
mio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "hermit")
mio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "wasi")
native-tls->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_vendor = "apple")
native-tls->security-framework-sys 2.12.1 2.13.0 2.13.0 Normal cfg(target_vendor = "apple")
near-abi->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-abi-client->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-abi-client->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-abi-client-impl->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-abi-client-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-abi-client-impl->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-account-id->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-async->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-async->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-async-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-async-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
near-chain-configs->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-chain-configs->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-chain-configs->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-cli-rs->reqwest 0.12.9 0.12.11 0.12.11 Normal ---
near-cli-rs->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-cli-rs->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-config-utils->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-crypto->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-crypto->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-gas->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-client->reqwest 0.12.9 0.12.11 0.12.11 Normal ---
near-jsonrpc-client->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-client->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-jsonrpc-primitives->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-primitives->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-o11y->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-o11y->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-parameters->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-performance-metrics->libc 0.2.168 0.2.169 0.2.169 Normal ---
near-primitives->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-primitives->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-primitives->serde_with 3.11.0 3.12.0 3.12.0 Normal ---
near-primitives-core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-core->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-rpc-error-core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-core->syn 2.0.90 2.0.93 2.0.93 Normal ---
near-rpc-error-macro->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
near-sandbox-utils 0.12.0 0.13.0 0.13.0 Normal ---
near-sandbox-utils->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-sandbox-utils->chrono 0.4.39 --- Removed Normal ---
near-sandbox-utils->home 0.5.9 0.5.11 0.5.11 Normal ---
near-sdk 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->near-sdk-macros 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-sdk-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-sdk-macros->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk-macros->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-sdk-macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
near-socialdb-client->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-socialdb-client->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near-time->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-token->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-workspaces->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
near-workspaces->near-sandbox-utils 0.8.0 --- 0.9.0 Build ---
near-workspaces->near-sandbox-utils 0.9.0 0.8.0 --- Normal ---
near-workspaces->reqwest 0.12.9 0.12.11 0.12.11 Normal ---
near-workspaces->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-workspaces->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near_schemafy_core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_core->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
near_schemafy_lib->quote 1.0.37 1.0.38 1.0.38 Normal ---
near_schemafy_lib->serde 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_lib->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_lib->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
nix->libc 0.2.168 0.2.169 0.2.169 Normal ---
num-rational->serde 1.0.216 1.0.217 1.0.217 Normal ---
num-traits->autocfg 1.4.0 --- Removed Build ---
num-traits->libm 0.2.11 --- Removed Normal ---
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
open->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
openssl->libc 0.2.168 0.2.169 0.2.169 Normal ---
openssl-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
openssl-macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
openssl-src->cc 1.2.4 1.2.6 1.2.6 Normal ---
openssl-sys->cc 1.2.4 1.2.6 1.2.6 Build ---
openssl-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
opentelemetry_sdk->glob 0.3.1 0.3.2 0.3.2 Normal ---
opentelemetry_sdk->ordered-float 4.5.0 4.6.0 4.6.0 Normal ---
parking_lot_core->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
pin-project-internal->quote 1.0.37 1.0.38 1.0.38 Normal ---
pin-project-internal->syn 2.0.90 2.0.93 2.0.93 Normal ---
polling->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
proc-macro-error->quote 1.0.37 1.0.38 1.0.38 Normal ---
proc-macro-error-attr->quote 1.0.37 1.0.38 1.0.38 Normal ---
proc-macro2->unicode-ident 1.0.14 --- Removed Normal ---
prost-derive->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
prost-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
prost-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
ptr_meta_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
quote->proc-macro2 1.0.92 --- Removed Normal ---
rand->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
reqwest->hyper 1.5.1 1.5.2 1.5.2 Normal cfg(not(target_arch = "wasm32"))
reqwest->hyper-rustls 0.27.3 0.27.5 0.27.5 Normal cfg(not(target_arch = "wasm32"))
reqwest->serde 1.0.216 1.0.217 1.0.217 Normal ---
reqwest->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
ring->cc 1.2.4 1.2.6 1.2.6 Build ---
ring->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(any(target_os = "android", target_os = "linux"), any(target_arch = "aarch64", target_arch = "arm")))
rkyv->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
rkyv_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
rust_decimal->serde 1.0.216 1.0.217 1.0.217 Normal ---
rust_decimal->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
rustix->libc 0.2.168 0.2.169 0.2.169 Development ---
schemars->serde 1.0.216 1.0.217 1.0.217 Normal ---
schemars->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
schemars_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
schemars_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
scroll_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
scroll_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
secp256k1-sys->cc 1.2.4 1.2.6 1.2.6 Build ---
secret-service->serde 1.0.216 1.0.217 1.0.217 Normal ---
security-framework->libc 0.2.168 0.2.169 0.2.169 Normal ---
security-framework->security-framework-sys 2.12.1 2.13.0 2.13.0 Normal ---
security-framework-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
semver->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde->serde_derive 1.0.216 1.0.217 Removed Normal ---
serde_derive->proc-macro2 1.0.92 --- Removed Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->quote 1.0.37 1.0.38 Removed Normal ---
serde_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_derive->syn 2.0.90 2.0.93 Removed Normal ---
serde_derive_internals->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive_internals->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_json 1.0.133 1.0.134 1.0.134 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_repr->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_repr->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_spanned->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_urlencoded->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->indexmap 2.7.0 1.9.3 1.9.3 Normal ---
serde_with->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
serde_with->serde_with_macros 3.11.0 3.12.0 3.12.0 Normal ---
serde_with_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_with_macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_yaml->serde 1.0.216 1.0.217 1.0.217 Normal ---
signal-hook->libc 0.2.168 0.2.169 0.2.169 Normal ---
signal-hook-mio->libc 0.2.168 0.2.169 0.2.169 Normal ---
signal-hook-registry->libc 0.2.168 0.2.169 0.2.169 Normal ---
smart-default->quote 1.0.37 1.0.38 1.0.38 Normal ---
smart-default->syn 2.0.90 2.0.93 2.0.93 Normal ---
socket2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
string_cache->serde 1.0.216 1.0.217 1.0.217 Normal ---
strum_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
strum_macros->rustversion 1.0.18 1.0.19 1.0.19 Normal ---
strum_macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
symbolic-debuginfo->serde 1.0.216 1.0.217 1.0.217 Normal ---
symbolic-debuginfo->serde_json 1.0.133 1.0.134 1.0.134 Normal ---
syn->proc-macro2 1.0.92 --- Removed Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
syn->quote 1.0.37 1.0.38 Removed Normal ---
syn->unicode-ident 1.0.14 --- Removed Normal ---
synstructure->quote 1.0.37 1.0.38 1.0.38 Normal ---
synstructure->syn 2.0.90 2.0.93 2.0.93 Normal ---
system-configuration-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
tar->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
term->rustversion 1.0.18 1.0.19 1.0.19 Normal cfg(windows)
thiserror-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
thiserror-impl->syn 2.0.90 2.0.93 2.0.93 Normal ---
time->serde 1.0.216 1.0.217 1.0.217 Normal ---
tokio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
tokio-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
tokio-macros->syn 2.0.90 2.0.93 2.0.93 Normal ---
toml->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_datetime->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->serde 1.0.216 1.0.217 1.0.217 Normal ---
tonic->hyper 0.14.31 0.14.32 0.14.32 Normal ---
tracing-attributes->quote 1.0.37 1.0.38 1.0.38 Normal ---
tracing-attributes->syn 2.0.90 2.0.93 2.0.93 Normal ---
unicode-normalization->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
url->serde 1.0.216 1.0.217 1.0.217 Normal ---
vte_generate_state_changes->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen->cfg-if 1.0.0 --- Removed Normal ---
wasm-bindgen->once_cell 1.20.2 --- Removed Normal ---
wasm-bindgen->wasm-bindgen-macro 0.2.99 --- Removed Normal ---
wasm-bindgen-backend->bumpalo 3.16.0 --- Removed Normal ---
wasm-bindgen-backend->log 0.4.22 --- Removed Normal ---
wasm-bindgen-backend->proc-macro2 1.0.92 --- Removed Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.93 2.0.93 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.93 Removed Normal ---
wasm-bindgen-backend->wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-macro->wasm-bindgen-macro-support 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support->proc-macro2 1.0.92 --- Removed Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.93 2.0.93 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.93 Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-backend 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasmparser->serde 1.0.216 1.0.217 1.0.217 Normal ---
wee_alloc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(unix, not(target_arch = "wasm32")))
windows-core->windows-targets 0.52.6 --- Removed Normal ---
windows-targets->windows_aarch64_gnullvm 0.52.6 --- Removed Normal aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm 0.52.6 --- Removed Normal i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm 0.52.6 --- Removed Normal x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc 0.52.6 --- Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(target_os = "freebsd", target_os = "netbsd"))
xdg-home->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
yoke->serde 1.0.216 1.0.217 1.0.217 Normal ---
yoke-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
yoke-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
zbus->serde 1.0.216 1.0.217 1.0.217 Normal ---
zbus_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
zbus_names->serde 1.0.216 1.0.217 1.0.217 Normal ---
zerocopy-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerocopy-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
zerofrom-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerofrom-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
zerovec-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerovec-derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
zstd-safe->libc 0.2.168 0.2.169 0.2.169 Normal ---
zstd-sys->cc 1.2.4 1.2.6 1.2.6 Build ---
zvariant->libc 0.2.168 0.2.169 0.2.169 Normal ---
zvariant->serde 1.0.216 1.0.217 1.0.217 Normal ---
zvariant_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zvariant_utils->quote 1.0.37 1.0.38 1.0.38 Normal ---
CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.93 2.0.93 Normal ---
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
iana-time-zone-haiku->cc 1.2.4 1.2.6 1.2.6 Build ---
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->syn 2.0.90 2.0.93 2.0.93 Normal ---
serde_json 1.0.133 1.0.134 1.0.134 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.93 2.0.93 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.93 2.0.93 Normal ---
CheckJson / json: C:/home/git/polyglot
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\package.json
CheckJson / json: C:/home/git/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\ipfs\package.json
CheckJson / json: C:/home/git/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\temp\extension\package.json
CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking C:\home\git\polyglot\apps\spiral\vscode\package.json
CheckJson / json: C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS Code Plugin\package.json
@microsoft/signalr ^8.0.0 → ^8.0.7
@types/vscode ~1.95 → ~1.96
npm-check-updates ~17.1.11 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json